99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

CSS3中如何實現(xiàn)單選框的動畫特效

發(fā)布時間:2016-10-08 21:06  回復(fù):0  查看:2354   最后回復(fù):2016-10-08 21:06  

在前端開發(fā)中,我們常常使用CSS3技術(shù)來實現(xiàn)單選框的動畫特效,對于前端菜鳥而言,可能對這部分內(nèi)容還不是很熟悉,今天就和大家分享一個這方面的案例,希望對大家學(xué)習(xí)CSS3技術(shù)有所幫助,一起來看看吧。

 

首先,來看一下我們的第一個特效

CSS3中如何實現(xiàn)單選框的動畫特效


注意,這個地方的黃點不是我們特效的一部分,這個黃點之所以存在是我使用的屏幕錄制軟件自帶的。可以很清楚的看到這個特效就是當(dāng)我們點擊的時候,黑點會以一種縮放的動畫顯示出來,下面來看看具體如何實現(xiàn)。

<divclass="radio-1">

    <inputtype="radio" name="radio-1" id="radio-1-1" checked="checked">

    <labelfor="radio-1-1"></label>

 

    <inputtype="radio" name="radio-1" id="radio-1-2">

    <labelfor="radio-1-2"></label>

 

    <inputtype="radio" name="radio-1" id="radio-1-3">

    <labelfor="radio-1-3"></label></div>

這里,我們指定 input 標(biāo)簽的 type 值為 radio,并且一下所有的 radio 的 name 值都相同,這樣才可以實現(xiàn)單選效果。對于這里的 label 中的 for 屬性,為什么這么設(shè)置一開始我也不明白,后來搜索了一下這個屬性的定義,反正大概的意思就是說,只要設(shè)置了這個屬性,當(dāng)我們點擊label 元素的時候,瀏覽器會自動把焦點轉(zhuǎn)移到 radio 上去。下面用 CSS HTML設(shè)置效果。

    .radio-1{

        width: 900px;

        padding: 3% 0%;

        margin: 10px auto;

        background-color: darkseagreen;

        text-align: center;

    }

 

    .radio-1 label{

        display: inline-block;

        position: relative;

        width: 28px;

        height: 28px;

        border: 1px solid #cccccc;

        border-radius: 100%;

        cursor: pointer;

        background-color: #ffffff;

        margin-right: 10px;

    }

這里我們首先看一下對 label 元素的設(shè)定,其中大部分屬性我都在以前的文章中介紹過了,唯一一個陌生的屬性就是 cursor,這個屬性是設(shè)定鼠標(biāo)樣式的,設(shè)置成 pointer 之后,當(dāng)我們的鼠標(biāo)放到 label 元素上時,鼠標(biāo)樣式就變成了一只手(在我電腦上是這樣)。好了,下面繼續(xù)來看

    .radio-1 label:after{

        content: "";

        position: absolute;

        width: 20px;

        height: 20px;

        top: 4px;

        left: 4px;

        background-color: #666;

        border-radius: 50%;

        transform: scale(0);

        transition: transform .2s ease-out;

    }

這里我們用到了 after 選擇器,為什么設(shè)置這個屬性?就是為了設(shè)置如上圖所示的小黑點。首先我們設(shè)置 content 屬性為空,意思就是我們不需要填充任何內(nèi)容,因為我們只是想設(shè)置背景色為黑色,僅此而已。還有,剛開始的時候我們設(shè)置 transform 的 scale 值為 ,其達到的效果就是將小黑點隱藏。

    .radio-1 [type="radio"]:checked + label{

        background-color: #eeeeee;

        transition: background-color .2s ease-in;

    }

 

    .radio-1 [type="radio"]:checked + label:after{

        transform: scale(1);

        transition: transform .2s ease-in;

    }

注意這里使用了 + 符號,是什么意思呢?它的學(xué)名叫做 相鄰?fù)x擇器,意思就是選擇緊接在另一個元素后的元素,而且二者有相同的父元素,在這里的意思就是選中在radio 后出現(xiàn)的 label ,有人要問了,這么設(shè)置干嘛,直接設(shè)置 label 就是了。想象一下,在一個 非常龐大的系統(tǒng)中,我們可能多次使用到 label 元素,為了避免混淆,這樣設(shè)置將更加準(zhǔn)確。這里我們看到了 transition 屬性,這個屬性是用于設(shè)置過渡效果的。最后,將我們的 radio隱藏掉,就大功告成了。

    .radio-1 [type="radio"]{

        display: none;

    }

Action two

這是我們的第二個特效

CSS3中如何實現(xiàn)單選框的動畫特效

其實看到這個動畫的第一感覺就是,和上一個一模一樣,除了將 transform 屬性設(shè)置成 rotate ,下面我就不再解釋了,只要你結(jié)合上一個例子,就可以很容易做出這么一個效果,我們直接上代碼

<!DOCTYPE html><htmllang="en"><head>

    <metacharset="UTF-8">

    <title>Radio</title>

    <style>

        .radio-2{

            width: 900px;

            padding: 3% 0;

            margin: 50px auto;

            background-color: darkseagreen;

            text-align: center;

        }

 

        .radio-2 label{

            display: inline-block;

            width: 28px;

            height: 28px;

            overflow: hidden;

            border: 1px solid #eeeeee;

            border-radius: 100%;

            margin-right: 10px;

            background-color: #ffffff;

            position: relative;

            cursor: pointer;

        }

 

        .radio-2 label:after{

            content: "";

            position: absolute;

            top: 4px;

            left: 4px;

            width: 20px;

            height: 20px;

            background-color: #666666;

            border-radius: 50%;

            transform: rotate(-180deg);

            transform-origin: -2px 50%;

            transition: transform .2s ease-in;

        }

 

        .radio-2 [type="radio"]{

            display: none;

        }

 

        .radio-2 [type="radio"]:checked + label:after{

            transform: rotate(0deg);

            transition: transform .2s ease-out;

        }

    </style></head><body><divclass="radio-2">

    <inputtype="radio" name="radio-2" id="radio-2-1" checked="checked">

    <labelfor="radio-2-1"></label>

 

    <inputtype="radio" name="radio-2" id="radio-2-2">

    <labelfor="radio-2-2"></label>

 

    <inputtype="radio" name="radio-2" id="radio-2-3">

    <labelfor="radio-2-3"></label></div>

 </body></html>

 

 

文章來源:伯樂在線

您還未登錄,請先登錄

熱門帖子

最新帖子

?