HTML Academy
Text input field, step 1
Smooth transitions27/29
Back to the list of tasks
  • 1. The transition-duration property
  • 2. Transition duration, step 2
  • 3. The transition-property: which properties can be changed smoothly?
  • 4. The transition-delay property
  • 5. The “form” of the transition, transition-timing-function
  • 6. transition-timing-function, step 2
  • 7. transition-timing-function, step 3
  • 8. transition-timing-function, step 4
  • 9. Paper buttons, step 1
  • 10. Paper buttons, step 2
  • 11. Paper buttons, step 3
  • 12. Checkboxes, step 1
  • 13. Checkboxes, step 2
  • 14. Checkboxes, step 3
  • 15. Radio buttons, step 1
  • 16. Radio buttons, step 2
  • 17. Radio buttons, step 3
  • 18. Toggle switches, step 1
  • 19. Toggle switches, step 2
  • 20. Toggle switches, step 3
  • 21. Toggle switches, step 4
  • 22. The transformer icon, step 1
  • 23. The transformer icon, step 2
  • 24. The transformer icon, step 3
  • 25. The transformer icon, step 4
  • 26. Text input field, step 1
  • 27. Text input field, step 2
  • 28. Text input field, step 3
  • 29. Text input field, step 4
Text input field, step 3
  • Sign up
  • Log in

Loading…
Everything will be ready in few seconds

  • Theory
  • Theory
  • Comments

Text input field, step 2

A technique with :checked ~ was used many times in previous tasks. For this task, we will use a similar approach for the :focus and :valid selectors.

>

In order to make sure that our self-made placeholder does not interfere when we are entering text and does not cover filled fields, we will move it higher and slightly decrease its size. To do this, we use a CSS rule with the following selectors:

input:focus ~ .label-box label,
input:valid ~ .label-box label {
  ...
}

The first selector is activated when the cursor is in the field, and the second selector is activated when the field is filled correctly. This is a simplified example, so we are not considering all of the options, such as, for example, when the entered field data is not valid.

To make the label move nicely, let’s add a smooth transition to it.

Comments

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="en"> <head> <title>Text input field, step 2</title> <meta charset="utf-8"> <link rel="stylesheet" href="material.css"> <link rel="stylesheet" href="style.css"> </head> <body class="purple-theme"> <section class="card"> <h1 class="question"><span>What was the very first web browser was called?</span></h1> <form class="answers" action="https://echo.htmlacademy.ru/courses" method="post"> <button class="fab" type="submit">&#58882;</button> <div> <input type="text" required> <div class="label-box"> <label>Word in English</label> </div> </div> </form> </section> </body> </html>
CSS
.label-box { position: relative; width: 270px; } input { box-sizing: border-box; padding: 5px; width: 270px; border: none; border-bottom: 1px solid #757575; font-size: 18px; } label { position: absolute; top: -36px; color: #757575; font-size: 18px; pointer-events: none; } input:focus ~ .label-box label, input:valid ~ .label-box label { }

What didn’t you like in this task?

Thanks! We’ll fix everything at once!

The code has changed, click “Refresh” or turn autorun on.

You’ve gone to a different page

Click inside the mini-browser to shift the focus onto this window.

100%
Goalscompleted
0
    1. When the input field is in focus or valid, set the label to have a font size of 14px and a translateY(-20px) transform.
    2. And then add a transition that is 0.2s long for all of the properties to the label for the general CSS rule.

    Click inside and outside of the input field in order to test the result.

    Cookies ∙ Privacy ∙ License Agreement ∙ About ∙ Contacts ∙ © HTML Academy OÜ, 2019−2025

    VISAMastercard

    Log in

    or

    Forgot your password?

    Sign up

    Sign up

    or
    Log in

    Restore access

    Have you forgotten your password or lost access to your profile? Enter your email connected to your profile and we will send you a link to restore access.

    Forgot to connect your email to the profile? Email us and we’ll help.