Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have permission to ask a question, You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please type your username.

Please type your E-Mail.

Please choose an appropriate title for the post.

Please choose the appropriate section so your post can be easily searched.

Please choose suitable Keywords Ex: post, video.

Browse

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Navigation

  • Home
  • About Us
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • About Us
  • Contact Us
Home/ Questions/Q 3252

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Latest Questions

Author
  • 61k
Author
Asked: November 26, 20242024-11-26T01:00:13+00:00 2024-11-26T01:00:13+00:00

Password input with label and hide/show toggle eye svg – A simple tutorial

  • 61k

Tutorial on how to create a password input that shows/hides text on eye svg click with label.

HTML

For HTML we need a container that will wrap everything. We'll set “password_input_container” class to this element.

Then we'll need an input of type password. Type will be toggled later to text and back to password using javascript.

We'll also set placeholder of input to space (” “), which will allow us to detect with CSS when input has some value, so we can style it differently, because we want the label element to be both label and placeholder.

Also, we need a label for password.

And the button. Click on this element will fire the function called “toggle()”. We'll create it later in javascript section.

Inside the button, we'll place an eye svg.

<div class="password_input_container">     <input placeholder=" " name="password_input" type="password" id="password_input">     <label for="password_input">Password</label>     <button id="toggle_button" onclick="toggle()">         <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="15" height="15">             <path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z" />             <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />         </svg>     </button> </div> 
Enter fullscreen mode Exit fullscreen mode

Javascript

For javascript, we'll create a function called “toggle”. This function will change input's type and button's svg.

First, we'll select button and input by id.

Then we'll check input's type. If it's of type 'password', we'll change it to 'text' (which means that input's value will now be visible) and set button's innerHTML to a crossed eye svg, to indicate that clicking on this button means hiding the input's value.

And if input's type is 'text', we need to hide the password by setting type to 'password', and we also need to change button's svg to an eye.

function toggle() {     let input_toggle = document.getElementById('toggle_button')     let password_input = document.getElementById('password_input')      if (password_input.type === 'password') {         password_input.type = 'text'         toggle_button.innerHTML = `         <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="15" height="15">             <path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88" />         </svg>`     } else {         password_input.type = 'password'         toggle_button.innerHTML = `         <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" width="15" height="15">             <path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z" />             <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />         </svg>`     } }  
Enter fullscreen mode Exit fullscreen mode

CSS

Now the CSS.

First, we'll style the button. We'll set cursor to pointer and position to absolute with top and right set to 0 with height of 100%, which means that this element will be placed at the end (near the right border, inside of our div element that wraps everything).

Using flexbox, we'll alight svg in the center and set button's background to transparent.

We'll remove the default border and set color to grey.

.password_input_container button {     cursor: pointer;     position: absolute;     height: 100%;     display: flex;     justify-content: center;     align-items: center;     top: 0;     right: 0;     background-color: transparent;     border: none;     color: #777; } 
Enter fullscreen mode Exit fullscreen mode

Now we'll style the input. We'll remove the outline and set font size to 9 pixels.

We'll add a little paddings and set width to 130 pixels.

Also, we'll set background color to transparent and border to soli grey (same as svg) 1 pixel wide with 4 pixels radius.
We'll set text color to slightly darker color that the border.

.password_input_container input {     outline: none;     font-size: 9px;     padding: 8px;     width: 130px;     background-color: transparent;     border: #777 solid 1px;     border-radius: 4px;     color: #555; } 
Enter fullscreen mode Exit fullscreen mode

Now we'll style the label. This element will also be a placeholder.

We'll add some margins and paddings, set position to absolute, left to 0 and top to 50% with translate Y to -50%, this will place the label in the center of the input.

Now we'll set z index to -1, because we want the input to be on top of this element so the user can click on it.

I'll set a background color to white, because I have white background (you simply set the same color as your background).
We're doing this because this element will appear as label if input is in focus or has some value and will be moved on top of the input's top border. Without background color, the input's border would be seen behind the label.

We'll set color to light grey and font size to 12 pixels and a little transition.

.password_input_container label {     position: absolute;     margin: 0 5px;     left: 0;     top: 50%;     transform: translateY(-50%);     z-index: -1;     /* Put the same color as background here */     background-color: #fff;     padding: 0 2px;     color: #aaa;     font-size: 12px;     transition: .3s; } 
Enter fullscreen mode Exit fullscreen mode

Now we'll style the label when input is in focus or when it has some value (when placeholder ” ” isn't shown). That's why we needed an empty placeholder.

We'll set top to 0, to move this element on top of input's top border, and we'll set z index to 1, to place this element on top of input. Otherwise the input's border would be on top of the label.

And we'll decrease a font size a bit.

/* Focus or containing value (placeholder not shown) */ .password_input_container input:focus + label, .password_input_container input:not(:placeholder-shown) + label {     top: 0;     font-size: 8px;     z-index: 1; } 
Enter fullscreen mode Exit fullscreen mode

Lastly, we'll style the label whe input is in focus.

We'll just set label's text color and input's border to green.

/* Only when focused */ .password_input_container input:focus + label {     color: rgb(15, 156, 116);     font-size: 8px; } .password_input_container input:focus {     border-color: rgb(15, 156, 116); } 
Enter fullscreen mode Exit fullscreen mode

And that's it.

You can find video tutorial and full code here.

Thank you for reading. ❤️

htmljavascripttutorialwebdev
  • 0 0 Answers
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

Sidebar

Ask A Question

Stats

  • Questions 4k
  • Answers 0
  • Best Answers 0
  • Users 2k
  • Popular
  • Answers
  • Author

    ES6 - A beginners guide - Template Literals

    • 0 Answers
  • Author

    Understanding Higher Order Functions in JavaScript.

    • 0 Answers
  • Author

    Build a custom video chat app with Daily and Vue.js

    • 0 Answers

Top Members

Samantha Carter

Samantha Carter

  • 0 Questions
  • 20 Points
Begginer
Ella Lewis

Ella Lewis

  • 0 Questions
  • 20 Points
Begginer
Isaac Anderson

Isaac Anderson

  • 0 Questions
  • 20 Points
Begginer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore, ask, and connect. Join our vibrant Q&A community today!

About Us

  • About Us
  • Contact Us
  • All Users

Legal Stuff

  • Terms of Use
  • Privacy Policy
  • Cookie Policy

Help

  • Knowledge Base
  • Support

Follow

© 2022 Querify Question. All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.