Creating a floating label using HTML and CSS

Bipin Rajbhar - May 4 '20 - - Dev Community

Hello everyone ๐Ÿ‘‹, I hope you are doing great.

So, Today we are going to learn how to create a floating label using HTML and CSS ๐Ÿ˜Ž.

๐Ÿ“„ HTML

Let's first set up our HTML.

<main>
  <form>
    <div>
      <input id="email" type="email" placeholder=" " />
      <label for="email">Email</label>
    </div>
    <div>
      <input id="password" type="password" placeholder=" " />
      <label for="password">Password</label>
    </div>
    <button>Login</button>
  </form>
</main>
Enter fullscreen mode Exit fullscreen mode

๐ŸŽจ CSS

Now, let's set up our CSS.

div {
  display: flex;
  flex-direction: column-reverse;
}

input {
  border: none;
  padding: 1rem;
  margin-top: 2rem;
  font-size: 1.6rem;
  border-bottom: 0.2rem solid #bdbdbd;
  outline: none;
}

label {
  padding-left: 1rem;
  color: #bdbdbd;
  transform: translateY(4.8rem);
  transform-origin: left top;
  cursor: text;
}
Enter fullscreen mode Exit fullscreen mode

Now, let's set up the input functionality when the input is focused.

input:focus,
input:not(:placeholder-shown) {
  border-bottom: 0.2rem solid #212121;
}


input:focus ~ label,
input:not(:placeholder-shown) ~ label {
  padding: 0;
  color: #212121;
  transform: translateY(2rem) scale(0.8);
}
Enter fullscreen mode Exit fullscreen mode

That's It ๐Ÿ˜Ž.

Example

๐Ÿ“š Further Reading:

Thanks for reading! My name is Bipin Rajbhar; I love helping people to learn new skills ๐Ÿ˜Š. You can follow me on Twitter if youโ€™d like to be notified about new articles and resources.

. . . . . . . . . . . . . . . . . . . . . . . . .