首頁  >  文章  >  web前端  >  CSS3裡怎麼實現單選框動畫特效

CSS3裡怎麼實現單選框動畫特效

php中世界最好的语言
php中世界最好的语言原創
2017-11-25 14:05:402005瀏覽

CSS3裡怎麼實現單選框動畫特效?為什麼要實現單選框動畫特效?下面我們給大家舉兩個例子,幫大家熟練用CSS3實作單選框動畫特效

<div>
<input type="radio" name="radio-1" id="radio-1-1" checked="checked">
<label for="radio-1-1"></label>
<input type="radio" name="radio-1" id="radio-1-2">
<label for="radio-1-2"></label>
<input type="radio" name="radio-1" id="radio-1-3">
<label for="radio-1-3"></label>
</div>

這裡,我們指定input 標籤的type 值為radio,並且一下所有的radio 的name值都相同,這樣才可以實現單選效果。對於這裡的label 中的for 屬性,為什麼這麼設定一開始我也不明白,後來搜尋了一下這個屬性的定義,反正大概的意思就是說,只要設定了這個屬性,當我們點擊label 元素的時候,瀏覽器會自動把焦點轉移到radio 上去。下面用 CSS 對HTML設定效果。

.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 元素的設定,其中大部分屬性我都在以前的文章中介紹過了,唯一一個陌生的屬性就是cursor,這個屬性是設定滑鼠樣式的,設定成pointer 之後,當我們的滑鼠放到label 元素上時,滑鼠樣式就變成了一隻手(在我電腦上是這樣)。好了,下面繼續來看

.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 選擇器,為什麼要設定這個屬性?就是為了設定如上圖所示的小黑點。首先我們設定 content 屬性為空,意思是我們不需要填滿任何內容,因為我們只是想設定背景色為黑色,僅此而已。還有,剛開始的時候我們設定 transform 的 scale 值為 0 ,其達到的效果就是將小黑點隱藏。

.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;
}

 

注意這裡使用了 + 符號,是什麼意思呢?它的學名叫做相鄰同胞選擇器,意思是選擇緊接在另一個元素後的元素,而且二者有相同的父元素,在這裡的意思就是選中在radio 後出現的label ,有人要問了,這麼設定幹嘛,直接設定label 就是了。想像一下,在一個 非常龐大的系統中,我們可能會多次使用到  label 元素,為了避免混淆,這樣設定會更加準確。這裡我們看到了 transition 屬性,這個屬性是用來設定過渡效果的。最後,將我們的 radio 隱藏掉,就大功告成了。

.radio-1 [type="radio"]{        display: none;
}
Action two

這是我們的第二個特效

demo2.gif

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

 
<!DOCTYPE html><html><head>
<meta charset="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><div>
<input type="radio" name="radio-2" id="radio-2-1" checked="checked">
<label for="radio-2-1"></label>
<input type="radio" name="radio-2" id="radio-2-2">
<label for="radio-2-2"></label>
<input type="radio" name="radio-2" id="radio-2-3">
<label for="radio-2-3"></label></div></body><ml>

相信大家看了這兩個列子都已經清楚了在CSS3裡怎麼實現單選框動畫特效,更多精彩請關注php中文網其它相關文章!

相關閱讀:

怎麼用css3做出圖示效果

CSS的編碼怎麼轉換

怎麼用canvas實作小球與滑鼠的互動

以上是CSS3裡怎麼實現單選框動畫特效的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn