純CSS+HTML實現【單選/多選按鈕】美化特效

看到網上有很多漂亮的按鈕,其中大多摻雜js來實現,今天我們來做一個純CSS+HTML實現的單選按鈕,讓菜鳥小白也能輕鬆做出來!

 首先附上最後的效果圖:(忽略我追星的膚淺!)

 一、 首先,我們寫基本代碼:

我們寫4個div分別在裏面放置4個單選按鈕,第一個選項默認爲選中狀態,checked

   HTML代碼:

    <h2>我最喜歡的明星</h2>
    <div class="radioStyle">
        <input type="radio" name="like" id="likeL" checked>
        <label for="likeL">李易峯</label>
    </div>
    <div class="radioStyle">
        <input type="radio" name="like" id="likeD">
        <label for="likeD">鄧倫</label>
    </div>
    <div class="radioStyle">
        <input type="radio" name="like" id="likeH">
        <label for="likeH">黃軒</label>
    </div>
    <div class="radioStyle">
        <input type="radio" name="like" id="likeZ">
        <label for="likeZ">鄭爽</label>
    </div>

此時樣式爲: 

接下來,我們要對這個單選按鈕進行美化了!

二、我先給h2設置了正常粗細

重點是按鈕,每個按鈕都包含在一個爲.radioStyle的Div中,爲了讓這四個div既能並排顯示,又能設置寬高,我們用inline-block:

CSS代碼:

 h2 {
       font-weight: normal;
    }
 .radioStyle {
       display: inline-block;
    }

 此時效果爲:好啦!已經橫排顯示了!

三:隱藏按鈕自帶的樣式

我們使用 visibility: hidden(佔位隱藏),爲啥不用display:none呢,因爲這個屬性不光隱藏,而且原來的空間也不佔據了,visibility:hidden可以在隱藏的前提下,空出原有的位置!

隱藏之後我們好自己設置樣式!

CSS代碼:

.radioStyle input {
                        visibility: hidden;
                  }

 隱藏後的效果:且空出了原來樣式按鈕的位置

 四:設置新的按鈕樣式

 我們先對input以及label元素設置鼠標點擊時的樣式,再設置個相對定位,後面要用該定位作爲父元素!!

CSS代碼:

.radioStyle input[type="radio"] + label{
                                            position: relative;
                                            cursor: pointer;
                                        }

現在要開始給label加個樣式,我們用僞類::before(此元素默認爲行內元素)

樣式爲18*18的正方形,然後設置圓角邊框爲50%,使其變爲圓形。絕對定位後,用left、right、top、bottom自行調整位置

CSS代碼:

 .radioStyle input+label::before{
            content: '';
            position: absolute;        /*父元素爲label,針對父元素進行絕對定位*/
            left: -24px;
            width: 18px;
            height: 18px;
            border: 1px solid #999; 
            border-radius: 50%;        /*圓角邊框*/
        }

效果圖爲:

 

美化一下,當選中按鈕之後,設置個邊框陰影色,淡淡的藍色

CSS代碼:

.radioStyle input:checked+label::before {
            box-shadow: 0 0 6px #24b7e5;
        }

 input:checked表示input表單的選中狀態

label::afbefore爲label的僞類樣式

input:checked+label::before,中間的 “+“ 是什麼意思呢,就是input元素緊挨着的下一個元素label,我們用“+”號連接起來,表示input和label都會對此樣式生效!就是你點擊<label>標籤裏的文字“李易峯”,它的圓按鈕自動會是選中狀態,且會應用淡藍色的陰影樣式!

 

接下來,我們要對選中的按鈕設置選中的效果,給圓按鈕裏面加一個小實心圓。 

用僞類元素::after

我給它寬高都爲12px大小,因爲要放在裏面,對吧,小一點好。

針對於父元素label絕對定位,然後調整位置(在谷歌瀏覽器裏面用調試工具進行調試,決定好之後寫入代碼)

 最後給小圓點設置背景色,最好與外面的按鈕邊框顏色一致或接近,好看就行!!

CSS代碼:

  .radioStyle input:checked+ label::after{
            content: '';
            position: absolute;    /*針對label進行絕對定位*/
            left: -20px;
            top: 4px;
            border-radius: 50%;    /*設置圓角*/
            width: 12px;
            height: 12px;
            background: #24b7e5;
        } 

 效果圖附上:

OK,到這裏就大功告成啦!偷偷哭泣一下,寫個文章真的不容易!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章