1. 程式人生 > >## HTML5-CSS-transition-過渡特效

## HTML5-CSS-transition-過渡特效

CSS過渡特效

概述   在CSS中用於設定過渡特效的屬性是 transition,該屬性允許CSS的屬性值在一定的時間區間內平滑地過渡,這就拜託了我們在CSS3版本標準之前對“JavaScript”和“Flash”的依賴,使頁面的效能得以提升。這種效果可以在滑鼠懸浮(:hover)、滑鼠單擊(:active)、表單元素獲得焦點(:focus)或對元素任何改變以及在JavaScript中某些事件執行後觸發,並圓滑(若不對時間曲線進行特殊設定)地以動畫效果改變CSS的屬性值。

該屬效能夠對CSS中絕大部分屬性的變化生效,但不能對CSS屬性值不為“數值”的屬性生效,即只有當屬性的值為一個數值的時候,該屬性才能生效。數值包含“純數字”、“畫素數值”、“百分比數值”、“十六進位制數值”等CSS屬性的值為數值的元素生效。如:當元素的寬度為“width:100px”變化為“width:200px”的時候過渡效果能夠生效,但當元素的寬度為“width:100px”變化為“width:auto”的時候,就不會產生過渡效果了。當一個元素的字型顏色為“#f31e1d”,變化為“#2396fd”的時候過渡有效,但當它的字型顏色由“#f31e1d”變為“transparent”的時候過渡就不會產生效果了。這一點在使用中需要留意。

該屬性包含多個分支屬性,主要有:“過渡CSS屬性名稱”、“過渡執行時間”、“過渡時間速率曲線”和“過渡的延時執行”四個主要內容,接下來我們對它的各分支屬性進行詳細的學習。

提示:transition 屬性只對數值型別屬性生效。

transition 分支屬性 1、transition-property   過渡屬性,該屬性是用來指定當元素其中一個屬性改變時執行的過渡動畫效果,該屬性有三種類型的值:

none:將過渡效果設定為“無過渡效果”,或停止當前過渡效果。 all:(預設)為所支援的所有CSS屬性在值變化時執行動畫過渡效果。 [property name]:指定一個或多個屬性名稱列表,以逗號“,”進行分隔,當指定的屬性產生變化時,為其執行指定屬性的動畫過渡效果。 2、transition-duration

  過渡持續時間,該屬性是用於設定一個屬性的值過渡被觸發開始時到結束時所需要經歷的時間,單位為秒(s),如:“0.3s”或“.3s”,它的預設值為“0”,單位不能省略,否則過渡動畫無法執行。

3、transition-timing-function   過渡線性規律(又稱時間曲線),該屬性允許你根據時間的推進去改變屬性值的變換速率,目前它可能夠設定6個型別的值:

ease:預設值,逐漸變慢 linear:勻速 ease-in:加速 ease-out:減速 ease-in-out:先加速,後減速 cubic-bezier([引數]):定義一個時間曲線(貝塞爾曲線),可以為其配置四個引數,前兩個引數為“ x1 ”和“ x2 ”,定義“開始控制點”,後兩個引數為“ y1 ”和“ y2 ”,定義“結束控制點”。而“開始點”和“結束點”是通過這兩條“轉換點控制軸”分別去調整兩個點來實現曲線的變化的,如果對Photoshop裡面的“鋼筆工具”的“路徑”比較熟悉的話,稍加聯想應該能理解到這個時間曲線軸的改變原理,這種曲線叫做“貝塞爾曲線”。參考示例 4、transition-delay

  過渡延遲,該屬性規定在使用者進行操作後多久開始執行動畫,也就是延遲執行過渡動畫的時間,單位同樣是秒“s”,寫法與“transition-duration”一致,預設值同樣為“0”。

5、transition   過渡動畫組合值屬性,其語法形式為:

transition: property duration timing-function delay; transition 示例 1、單個屬性變化

<div class="box"></div>
.box {
    width:  160px;
    height: 160px;
    background-color: #ff0000;
    /*過渡效果*/
    transition: background-color .5s linear 0s;
}
.box:hover {
    background-color: #000;
}

在這裡插入圖片描述

2、多個屬性變化 -> 單獨設定

<div class="box"></div>
.box {
    width:  160px;
    height: 160px;
    background-color: #ff0000;
    /*過渡效果*/
    transition: background-color .5s ease-out 0s, border-radius .35s ease-in 0s;
}
.box:hover {
    background-color: #000;
    border-radius: 80px;
}

在這裡插入圖片描述

3、多個屬性變化 -> all

<div class="box"></div>
.box {
    width:  160px;
    height: 160px;
    background-color: #ff0000;
    /*過渡效果*/
    transition: all .25s linear 0s;
}
.box:hover {
    background-color: #000;
    border-radius: 80px;
    opacity: .25;
    /*縮放*/
    transform: scale(.5);
}

在這裡插入圖片描述

4、仿3D 凸起效果

<div class="box">
    <span>CHINA</span>
</div>
body {
    background-color: rgb(245, 245, 245);
}

div.box {
    width:  200px;
    height: 325px;
    background-color: #fff;

    /*過渡效果*/
    transition: all .25s linear;

    display: flex;
    justify-content: center;
    align-items: center;

    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    margin: auto;
}
div.box span {
    color: #ff0000;
    letter-spacing: 5px;
    font-size: 30px;
    font-weight: bold;
    text-shadow: 1px 1px 2px #000;

    transition: all .25s linear;
}

div.box:hover {
    transform: translateY(-1px);
    box-shadow: 2px 2px 10px 2px #808080;
}
div.box:hover > span {
    font-size: 35px;
}

在這裡插入圖片描述