自定義單選框樣式方法
阿新 • • 發佈:2018-12-16
元素的初始樣式都不怎麼好看,我們一般修改樣式會想到直接在那元素上新增樣式,比如background、border等,在大多數元素上是可以這麼做,但當遇上了單選框會毫無反應。
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>style無法直接修改單選框樣式</title>
<style>
.radio{
width: 100px;
height : 100px;
background-color: red;
}
</style>
</head>
<body>
<input type="radio" class="radio"/>
</body>
</html>
怎麼解決呢?
使用label進行偽元素(或一些標籤,比如i,em,span等)和input繫結,隱藏單選框,顯示偽元素,且使用css選擇器:checked進行點選後偽元素(或繫結標籤)內容(或樣式)的修改。
以下例子只是修改偽元素的內容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改單選框樣式</title>
<style>
/*.radio{*/
/*width: 100px;*/
/*height: 100px;*/
/*background-color: red;*/
/*}*/
.radio {
display: none;
}
/* +代表相鄰的元素 */
.radio + i {
font-style: normal;
text-align: center;
font-size: 16px;
}
/* ::after偽元素,使用偽元素,必須含有content屬性,可以為'',但不可不寫 */
.radio + i::after {
content: '☆';
}
/* 點選後偽元素內容變化 */
.radio:checked + i::after {
content: '★';
}
</style>
</head>
<body>
<label>
<input type="radio" class="radio" name="aa" id="aa"/>
<i></i>
aa
</label>
<label>
<input type="radio" class="radio" name="aa" id="bb"/>
<i></i>
bb
</label>
</body>
</html>
完成後的結果: