当前位置:

用HTML + Css3 实现炫酷的输入框效果

访客 2024-04-23 636 0

其实我觉得,想实现这种效果,代码量其实都不大,最重要的东西就是思路,首先,展示一下,这个东西的效果,下面在给大家讲讲我的思路吧!

代码展示!!!(直接化身CV工程师!!!)下面也有大致的讲解

  • <!DOCTYPEhtml>
  • <htmllang="en">
  • <head>
  • <metacharset="UTF-8">
  • <title></title>
  • <style>
  • *{
  • margin:0;
  • padding:0;
  • box-sizing:border-box;
  • }
  • body{
  • display:flex;
  • justify-content:center;
  • align-items:center;
  • min-height:100vh;
  • flex-direction:column;
  • gap:30px;
  • background:#222;
  • }
  • .inputBox{
  • position:relative;
  • width:250px;
  • }
  • .inputBoxinput{
  • width:100%;
  • padding:10px05px;
  • background:transparent;
  • outline:none;
  • box-shadow:none;
  • border:none;
  • color:#fff;
  • font-size:1em;
  • letter-spacing:0.1em;
  • transition:0.5s;
  • }
  • .inputBoxspan{
  • position:absolute;
  • left:0;
  • padding:10px05px;
  • pointer-events:none;
  • font-size:1em;
  • color:rgba(255,255,255,0.5);
  • text-transform:uppercase;
  • /*定义无小写字母,仅有大写字母*/
  • letter-spacing:0.1em;
  • /*是增加(值为正)或减少(值为负)字符间距*/
  • transition:0.5s;
  • }
  • .inputBoxinput:valid~span,
  • /*表单元素的值需要根据指定条件验证时设置指定样式*/
  • .inputBoxinput:focus~span
  • /*选择具有焦点的时候*/
  • {
  • color:#b0a4e3;
  • transform:translateY(-16px);
  • /*将文字向Y轴(向上)平移16px*/
  • font-size:0.65em;
  • }
  • .inputBoxi
  • /*可见的一个线*/
  • {
  • position:absolute;
  • left:0;
  • bottom:0;
  • width:100%;
  • height:2px;
  • background:#fff;
  • overflow:hidden;
  • }
  • .inputBoxi::before
  • /*在i标签的左边创建(伪元素)一个跟i等大的一条线,加上炫彩颜色*/
  • {
  • content:'';
  • position:absolute;
  • left:-100%;
  • width:100%;
  • height:100%;
  • background:linear-gradient(90deg,#EEBD89,#D13ABD,#C973FF,#6CC6CB,#9FA5D5,#EAD6EE);
  • animation:runing1slinearinfinite;
  • transition:0.5s;
  • }
  • .inputBoxinput:valid~i::before,
  • .inputBoxinput:focus~i::before{
  • left:0;
  • }
  • /*创建动画*/
  • @keyframesruning{
  • 0%{
  • background-position-x:0;
  • }
  • 100%{
  • background-position-x:250px;
  • }
  • }
  • </style>
  • </head>
  • <body>
  • <divclass="inputBox">
  • <inputtype="text"required="required">
  • <span>FirstName</span>
  • <i></i>
  • </div>
  • <divclass="inputBox">
  • <inputtype="text"required="required">
  • <span>LastName</span>
  • <i></i>
  • </div>
  • </body>
  • </html>
  • 首先,我们看到这种效果就应该想到C3的动画效果,然后心里应该有一个大概的框架,就是这样

    左边是一条渐变的线,当input框有焦点的时候,跑到白色线那里,中间使用一个动画效果。

    那么废话不多说了,上HTML代码!

  • <divclass="inputBox">
  • <inputtype="text"required="required">
  • <span>FirstName</span>
  • <i></i>
  • </div>
  • <divclass="inputBox">
  • <inputtype="text"required="required">
  • <span>LastName</span>
  • <i></i>
  • </div>
  • 下面给body,input框和里面的文字加上样式

  • body
  • {
  • display:flex;
  • justify-content:center;
  • align-items:center;
  • min-height:100vh;
  • flex-direction:column;
  • gap:30px;
  • background:#222;
  • }
  • .inputBox
  • {
  • position:relative;
  • width:250px;
  • }
  • .inputBoxinput
  • {
  • width:100%;
  • padding:10px05px;
  • background:transparent;
  • outline:none;
  • box-shadow:none;
  • border:none;
  • color:#fff;
  • font-size:1em;
  • letter-spacing:0.1em;
  • transition:0.5s;
  • }
  • .inputBoxspan
  • {
  • position:absolute;
  • left:0;
  • padding:10px05px;
  • pointer-events:none;
  • font-size:1em;
  • color:rgba(255,255,255,0.5);
  • text-transform:uppercase;/*定义无小写字母,仅有大写字母*/
  • letter-spacing:0.1em;/*是增加(值为正)或减少(值为负)字符间距*/
  • transition:0.5s;
  • }
  • 实现文字向上方移动的效果,思想:向上移动然后文字变小

  • .inputBoxinput:valid~span,/*表单元素的值需要根据指定条件验证时设置指定样式*/
  • .inputBoxinput:focus~span/*选择具有焦点的时候*/
  • {
  • color:#b0a4e3;
  • transform:translateY(-16px);/*将文字向Y轴(向上)平移16px*/
  • font-size:0.65em;
  • }
  • 给i标签加上样式,然后给i标签里面加一个伪元素并加上样式,再加上动画,实现丝滑的效果

  • .inputBoxi/*可见的一个线*/
  • {
  • position:absolute;
  • left:0;
  • bottom:0;
  • width:100%;
  • height:2px;
  • background:#fff;
  • overflow:hidden;
  • }
  • .inputBoxi::before/*在i标签的左边创建(伪元素)一个跟i等大的一条线,加上炫彩颜色*/
  • {
  • content:'';
  • position:absolute;
  • left:-100%;
  • width:100%;
  • height:100%;
  • background:linear-gradient(90deg,#EEBD89,#D13ABD,#C973FF,#6CC6CB,#9FA5D5,#EAD6EE);
  • animation:runing1slinearinfinite;
  • transition:0.5s;
  • }
  • .inputBoxinput:valid~i::before,
  • .inputBoxinput:focus~i::before
  • {
  • left:0;
  • }
  • /*创建动画*/
  • @keyframesruning
  • {
  • 0%
  • {
  • background-position-x:0;
  • }
  • 100%
  • {
  • background-position-x:250px;
  • }
  • }
  • 发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~