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裡怎麼實現單選框動畫特效的詳細內容。更多資訊請關注PHP中文網其他相關文章!