CSS动画04--input输入框
介绍
此动画是当点击input框内部外部不同的动画,以上是鄙人录制得一个小视频,供大家参考,🤭
代码
HTML
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>input输入动画</title> <link rel="stylesheet" href="./css/4.css"> </head> <body> <div class="wrapper"> <div class="input-data"> <input type="text" required> <div class="underline"></div> <label>请输入内容:</label> </div> </div> </body> </html>
CSS
*{ margin: 0; padding: 0; outline: none; /* 这个属性是告诉浏览器:你想要设置的边框和内边距的值是包含在总宽高内的 */ box-sizing: border-box; } body{ /* 弹性布局 水平垂直居中 */ display: flex; justify-content: center; align-items: center; /* 设置body最小高度为100%窗口高度 */ min-height: 100vh; /* 渐变背景 */ /* background: linear-gradient(200deg,#0c3483,#a2b6df); */ background: linear-gradient(200deg,#ddd6f3,#faaca8); /* 200deg,#ddd6f3,#faaca8 */ } .wrapper{ width: 450px; background-color: #fff; /* 内边距(上下左右) */ padding: 40px; /* 盒子阴影 */ box-shadow: 0px 0px 10px rgba(0,0,0,0.1); /* 圆角 */ border-radius: 8px; } .wrapper .input-data{ /* 相对定位 */ position:relative; width: 100%; height: 40px; } .wrapper .input-data input{ width: 100%; height: 100%; border:none; font-size: 17px; border-bottom: 2px solid #c0c0c0; } /* 输入框获得焦点时 */ .wrapper .input-data input:focus ~ label, /* 输入框的值为合法时 */ .wrapper .input-data input:valid ~ label{ /* label上移,同时改变字号、字体颜色 */ transform: translateY(-25px); font-size: 15px; /* color: #2c6fdb; */ color: #faaca8; } .wrapper .input-data label{ /* 绝对定位 */ position: absolute; bottom: 10px; left: 0px; color: #808080; /* 这个属性可以使点击label穿透到输入框 */ pointer-events: none; /* 现在动画有点生硬,在这里需要给动画加个过渡 */ transition: all 0.3s ease; } .wrapper .input-data .underline{ position: absolute; bottom: 0px; height: 2px; width: 100%; /* background-color: #2c6fdb; */ background-color: #faaca8; /* 沿X轴缩小 */ transform: scaleX(0); /* 这里同样给动画加个过渡 */ transition: all 0.3s ease; } .wrapper .input-data input:focus ~ .underline, .wrapper .input-data input:valid ~ .underline{ /* 沿X轴放大 */ transform: scaleX(1); }