Pure CSS to achieve input box placeholder animation and input verification

Pure CSS to achieve input box placeholder animation and input verification

For more exciting content, please visit https://github.com/abc-club/free-resources

background

Without further ado, can we use pure CSS to achieve the following effects:

The answer is yes.

This can be achieved with the help of css:placeholder-shown:valid:invalid pseudo-class and html5 input pattern attribute

The current compatibility of the :placeholder-shown pseudo-class is as follows:

:placeholder-show compatibility

Directly on the code! ☺️

Source code

https://jsbin.com/qenucaz/edit?html,css,output

html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div class="input-fill-box">
    <input class="input-fill" placeholder="Email" pattern="^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$" required>
    <a href="javascript:" class="clear">close</a>
    <label class="input-label">Email</label>
</div>
</body>
</html>

css:

.input-fill{
  width: 100%;
  margin: 0;
  font-size: 16px;
  line-height: 1.5;
  outline: none;
  padding: 20px 16px 6px;
  border: 1px solid transparent;
   background: #f5f5fa;
  border-radius:10px;
  transition: border-color .25s;
}
.input-fill:placeholder-shown::placeholder {
    color: transparent;
    
}
.input-fill-box {
  width: 50%;
    position: relative;
}
.input-label {
    position: absolute;
    left: 16px; top: 14px;
    pointer-events: none;
    color:#BEC1D9;
   padding: 0 2px;
    transform-origin: 0 0;
    pointer-events: none;
    transition: all .25s;
}
.input-fill:not(:placeholder-shown) ~ .input-label,
.input-fill:focus ~ .input-label {
    transform: scale(0.75) translate(0px, -14px);    
}
.input-fill:focus{
  border: 2px solid #1d31aa;
}

.clear{
  position:absolute;
  top:10px;
  right:-20px;
   display: none;
    transition: all .25s;
}
.input-fill::-ms-clear { display: none; }
.input-fill:not(:placeholder-shown) + .clear { display: inline; }

.input-fill:valid {
 border-color: green;
 box-shadow: inset 5px 0 0 green;
}
.input-fill:not(:placeholder-shown):invalid {
 border-color: red;
 box-shadow: inset 5px 0 0 red;
}

More

For more exciting content, please visit https://github.com/abc-club/free-resources

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

<<:  The concept of MySQL tablespace fragmentation and solutions to related problems

>>:  How to install docker under centos and remotely publish docker in springboot

Recommend

Vue implements book management case

This article example shares the specific code of ...

Difference between var and let in JavaScript

Table of contents 1. Scopes are expressed in diff...

How to strike a balance between ease of use and security in the login interface

Whether you are a web designer or a UI designer, ...

Detailed explanation of React component communication

Table of contents Component Communication Introdu...

MySQL 5.7.11 zip installation and configuration method graphic tutorial

1. Download the MySQL 5.7.11 zip installation pac...

How to write the introduction content of the About page of the website

All websites, whether official, e-commerce, socia...

CentOs7 64-bit MySQL 5.6.40 source code installation process

1. Install the dependency packages first to avoid...

Analysis of MySQL duplicate index and redundant index examples

This article uses examples to describe MySQL dupl...

Implementing timed page refresh or redirect based on meta

Use meta to implement timed refresh or jump of th...

In-depth analysis of MySQL query interception

Table of contents 1. Query Optimization 1. MySQL ...

Detailed explanation of MYSQL stored procedure comments

Table of contents 1. Instructions for use 2. Prep...

The forgotten button tag

Note: This article has been translated by someone ...