天天看點

表單标簽動畫暢想

引言

今天來看一組表單标簽動畫效果,希望可以對大家有所幫助,靈感來自于Inspiration for Text Input和Text Input Love,一并緻謝。

表單标簽動畫暢想

效果照例放在Codepen,雖少效果較慢,但值得期待。線上編輯,下載下傳收藏。

搭建根基

我們同樣使用了haml來簡化html書寫。

#container
  -(..).each do
    %div.row
      %label
        %input{:type=>"text"}
        %span姓名
      %label
        %input{:type=>"text"}
        %span性别
      %label
        %input{:type=>"text"}
        %span郵箱
           

css部分我們使用了scss,首先我們來搭建頁面布局和基礎設定。

/* 重置*/
*, *:before, *:after { box-sizing: border-box; } 
/*容器設定*/
#container{
  counter-reset: counterA;
}
/*布局實作*/
div.row{
  position: relative;
  width: %;
  height:vw;
  padding-left:vw;
  counter-increment: counterA;
  &:before{
    content:counter(counterA);
    color:rgba(,,,.);
    font-size:vw;
    position: absolute;
    left:px;
  }
  label{
    position: relative;
    display: block;
    float: left;
    margin:vw vw;
    input{
      width:px;
      height:px;
      line-height:px;
      background: rgba(,,,.);
      border:none;
      outline:none;
      border:px solid #fff;
      color: #377D6A;
      padding:px px;
      border-radius:px;
      text-indent: px;
      transition: all .s ease-in-out;

      ::-webkit-input-placeholder {
        color: transparent;
      }
      +span{
        position: absolute;
        left:;
        top:;
        color:#fff;
        background: #7AB893;
        display: inline-block;
        padding: px px;
        transform-origin:left center;
        transform: perspective(px);
        transition: all .s ease-in-out;
        border-radius:px   px;
      }
    }
    input:focus,
    input:active {
      text-indent: ;
      background: rgba(,,,.);

      ::-webkit-input-placeholder {
        color: #f00;
      }
      +span{
        background: darken(#7AB893,%);
      }
    }
  }
  /*設定背景色,随機顔色*/
  @for $i from 1 through 15{
    &:nth-child(#{$i}){
      background:hsl(random(),%,%);
    }
  }
 //設定每一行的動畫效果
 //&:nth-child(1){}
}
           

效果一

表單标簽動畫暢想
//設定每一行的動畫效果
 //&:nth-child(1){}
 //效果一,标簽左移
 &:nth-child(1){
    input:focus,
    input:active{
      border-radius: px px ;
      +span{
        border-radius:px   px;
        transform: translateX(-%);
      }
    }
 }
           

效果二

表單标簽動畫暢想
//效果二,标簽右移
 &:nth-child(2){
    input:focus,
    input:active{
      +span{
        border-radius: px px ;
        transform: translateX(%);
      }
    }
 }
           

效果三

表單标簽動畫暢想
//效果三,标簽上移
  &:nth-child(3){
    input:focus,
    input:active{
      text-indent: px;
      +span{
        background-color: transparent;
        transform: translateY(-%);
      }
    }
  }
           

效果四

表單标簽動畫暢想
//效果四,标簽下移
 &:nth-child(4){
    input:focus,
    input:active{
      text-indent: px;
      +span{
        background-color: transparent;
        transform: translateY(%);
      }
    }
  }
           

效果五

表單标簽動畫暢想
//效果五,标簽上旋
 &:nth-child(5){
   input+span{
       transform-origin:left bottom;
   }
  input:focus,
  input:active{
    border-radius: px px ;
    text-indent: px;
    +span{
      transform: rotate(-deg);
      border-radius: px px ;
    }
  }
 }
           

效果六

表單标簽動畫暢想
//效果六,标簽下旋
  &:nth-child(6){
   input+span{
     transform-origin:left bottom;
   }
  input:focus,
  input:active{
    border-radius: px px ;
    +span{     
      animation:swing s;
      animation-fill-mode: forwards;
      border-radius: px px ;
    }
  }
 }
  //第6個動畫
  @keyframes swing{
    0% {
      transform: rotate();
    }
    20% {
      transform: rotate(deg);
    }
    40% {
      transform: rotate(deg);
    }
    60% {
      transform: rotate(deg);
    }
    80% {
      transform: rotate(deg);
    }
    100% {
      transform: rotate(deg);
    }
  }
           

效果七

表單标簽動畫暢想
//效果七,标簽左折
  &:nth-child(7){
  input+span{
     transform-origin:right center;
   }
  input:focus,
  input:active{
     border-radius: px px ;
    +span{     
      transform:perspective(px) translateX(-%) rotateY(deg);
    }
  }
 }
           

效果八

表單标簽動畫暢想
//效果八,标簽左翻
  &:nth-child(8){
  input:focus,
  input:active{
    border-radius: px px ;
    +span{
      transform: rotateY(deg);
      border-radius: px px ;
    }
  }
 }
           

效果九

表單标簽動畫暢想
//效果九,标簽上移變提示框
 &:nth-child(9){
  input{
    +span{
      background: transparent;
      &:before{
        content:"";
        width:;
        height:;
        position: absolute;
        left:px;
        bottom:-px;
        border:px solid #000;
        border-color:darken(#7AB893,%) transparent transparent transparent;
        transition:all .s;
        opacity: ;
      }
    }
  }
  input:focus,
  input:active{
    +span{
      padding:px px;
      border-radius:px;
      transform:translateY(-%);
      &:before{
        opacity: ;
      }
    }
  }
 }
           

效果十

表單标簽動畫暢想
//效果十,标簽上移,框變色
 &:nth-child(10){
  input{
    border-width:px ;
    border-radius:;
    +span{
      background: transparent;
    }
  }
  input:focus,
  input:active{
    border-width:px ;
    border-color:#000;
    +span{
      background:transparent;
      transform:translateY(-%);
    }
  }
 }
           

效果十一

表單标簽動畫暢想
//效果十一,标簽左彈性
&:nth-child(11){
  input{
    border-radius:;
    border-width:px ;
    +span{
      background: transparent;
    }
  }
  input:focus,
  input:active{
    +span{
      background:transparent;
      border:px solid #fff;
      border-radius:;
      border-width:   px;
      animation:halfLeft .s ease-in;
      animation-fill-mode: forwards;
    }
  }
  @keyframes halfLeft{
    20%{
      transform:translateX(-%);
    }
     40%{
      transform:translateX(-%);
    }
     60%{
      transform:translateX(-%);
    }
     80%{
      transform:translateX(-%);
    }
    100%{
      transform:translateX(-%);
    }
  }
 }
           

效果十二

表單标簽動畫暢想
//效果十二,橫線上移
 &:nth-child(12){
  input{
    border-radius:;
    border-width:;
    background:transparent;
    +span{
      background: transparent;
      &:before{
        content:"";
        width:px;
        height:px;
        background-color: #fff;
        position: absolute;
        left:;
        bottom:;
      }
    }
  }
  input:focus,
  input:active{
    +span{
      background:transparent;
      transform:translateY(-%);
    }
  }
 }
           

效果十三

表單标簽動畫暢想
//效果十三,邊框動畫
 &:nth-child(13){
  input{
    border-radius:;
    border:px solid #fff;
    border-top-color:rgba(,,,);
    border-right-color:rgba(,,,);
    border-bottom-color:rgba(,,,);
    border-left-color:rgba(,,,);
    background:transparent;
    +span{
      background: transparent;
    }
  }
  input:focus,
  input:active{
    transition:none;
    animation:borderAnim s;
    animation-fill-mode:forward;
    border:px solid #fff;
    +span{
      background:transparent;
      transform:translateY(-%);
    }
  }
 }
 @keyframes borderAnim{
   25%{
      border-top-color:rgba(,,,);
      border-right-color:rgba(,,,);
      border-bottom-color:rgba(,,,);
      border-left-color:rgba(,,,);
   }
   50%{
      border-top-color:rgba(,,,);
      border-right-color:rgba(,,,);
      border-bottom-color:rgba(,,,);
      border-left-color:rgba(,,,);
   }
   75%{
      border-top-color:rgba(,,,);
      border-right-color:rgba(,,,);
      border-bottom-color:rgba(,,,);
      border-left-color:rgba(,,,);
   }
 }
           

效果十四

表單标簽動畫暢想
//效果十四,前後立體變化
 &:nth-child(14){
  input{
    border-radius:;
    border:px solid #fff;
    transform-origin:left center;
    color:#fff;
    +span{
      background: transparent;
    }
  }
  input:focus,
  input:active{
    transform:scale();
    box-shadow:px px px #000;
    color:#fff;
    border:px solid #fff;
    +span{
      background:transparent;
      transform:translateY(-%) scale();
    }
  }
 }
           

效果十五

表單标簽動畫暢想
//效果十五,背景條紋動畫
 &:nth-child(15){
  input{
    border-radius:;
    border:px solid #fff;
    background-color: #026873;
    background-image: linear-gradient(deg, rgba(,,,.) %, transparent %),
    linear-gradient(deg, rgba(,,,.) %, transparent %),
    linear-gradient(deg, transparent %, rgba(,,,.) %),
    linear-gradient(deg, transparent %, rgba(,,,.) %);
    background-size: px, px, px, px;
    animation: shadowGo s linear infinite; 
    animation-play-state:running;
    +span{
      background: transparent;
    }
  }
  input:focus,
  input:active{
    background-color: #137884;
    background-size: px, px, px, px;
    animation-play-state:paused;
    +span{
      transform:translateY(-%) scale();
      background:transparent;
      color:#137884;
    }
  }
 }
  @keyframes shadowGo{     
      0% {background-position:  }    
      % {background-position: -% %}
  };  
           

十五種動畫效果,希望可以對您有所幫助。如果你耐着性子讀到這裡,是我的莫大榮幸,感謝感謝。

歡迎評論,歡迎拍磚。

前端開發whqet,關注前端開發,分享相關資源。csdn專家部落格,王海慶希望能對您有所幫助。

本文原文連結,http://blog.csdn.net/whqet/article/details/43369821

繼續閱讀