CSS3-transition

CSS3之transition實現下劃線

在這裏先看看咱們的democss

demo4.gif

認識transition

這是CSS3中新增的一個樣式,能夠實現動畫的過分。一般使用在添加某種效果能夠從一種樣式轉變到另外一個的時候。html

transition屬性

  • transition: 簡寫屬性,用於在一個屬性中設置四個過渡屬性。
  • transition-property: 規定應用過渡的 CSS 屬性的名稱。
  • transition-duration: 定義過渡效果花費的時間。默認是 0。
  • transition-timing-function: 規定過渡效果的時間曲線。默認是 "ease"。前端

    • linear: 規定以相同速度開始至結束的過渡效果(等於 cubic-bezier(0,0,1,1))
    • ease: 規定慢速開始,而後變快,而後慢速結束的過渡效果(cubic-bezier(0.25,0.1,0.25,1))
    • ease-in: 規定以慢速開始的過渡效果(等於 cubic-bezier(0.42,0,1,1))
    • ease-out: 規定以慢速結束的過渡效果(等於 cubic-bezier(0,0,0.58,1))
    • ease-in-out: 規定以慢速開始和結束的過渡效果(等於 cubic-bezier(0.42,0,0.58,1))
    • cubic-bezier(n,n,n,n): 在 cubic-bezier 函數中定義本身的值。可能的值是 0 至 1 之間的數值。
  • transition-delay: 規定過渡效果什麼時候開始。默認是 0。
transition: width 1s linear 2s;        /*簡寫實例*/

/*等同以下*/
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 2s;

tranform屬性

  • translate() 根據左(X軸)和頂部(Y軸)位置給定的參數,從當前元素位置移動。
  • rotate() 在一個給定度數順時針旋轉的元素。負值是容許的,這樣是元素逆時針旋轉。
  • scale() 該元素增長或減小的大小,取決於寬度(X軸)和高度(Y軸)的參數:
  • skew() 包含兩個參數值,分別表示X軸和Y軸傾斜的角度,若是第二個參數爲空,則默認爲0,參數爲負表示向相反方向傾斜。
  • matrix() matrix 方法有六個參數,包含旋轉,縮放,移動(平移)和傾斜功能。

實現咱們須要的效果

固然,在這就直接放出代碼,代碼中有註釋方便理解函數

/*css代碼*/

h2{
    position: relative;
    padding: 15px;
    text-align: center;    
}
button{
    width: 100px;
    height: 40px;
    border-radius: 15px;
    border: none;
    background: #188FF7;
    color: #fff;
    outline: none;
    cursor: pointer;
    font-weight: bold;
}
button:hover{
    background: #188EA7;
}
.container{
    width: 600px;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0 auto;
    
}
.line{
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    transition: transform .5s;
    background: #188EA7;
    color: #188EA7;
    transform: scaleX(0);
    z-index: 1111;            
}

@keyframes changeColor1{
    from{
        color: #000;
    }
    to{
        color: #188EA7;
    }
}
@keyframes changeColor2{
    from{                
        color: #188EA7;
    }
    to{
        color: #000;
    }
}
<!--html代碼-->

<div class="container">
    <h2 id="title">
        百度前端學院
        <i class="line" id="line"></i>
    </h2>
    <button id="change">Change</button>
</div>
//js部分代碼

(function () {
    let btn = document.getElementById('change');
    let h2 = document.getElementById('title');
    let line = document.getElementById('line');
    let count = 0;
    btn.onclick = function () {
        if(count%2===0){
            line.style.transform = "scaleX(1)";
            h2.style.animation = "changeColor1 1s";
            h2.style.color = "#188EA7";
            count++;
        }else{
            line.style.transform = "scaleX(0)";
            h2.style.animation = "changeColor2 1s";
            h2.style.color = "#000";
            count++;
        }
        
    }
})();

總結

到這裏咱們就已經將此效果徹底呈現,同時咱們也學習了CSS3中的transition屬性和tranform屬性。固然完成此動畫還須要有一些html和css基礎。學習

成功不在一朝一夕間,咱們都須要努力flex

相關文章
相關標籤/搜索