父元素中有子元素,而且父元素沒有設置高度,子元素在父元素中浮動,結果必然是父元素的高度爲 0,這也就致使了父元素高度塌陷,咱們就須要清除浮動。css
給浮動元素的容器添加一個 clearfix 的 class,而後給這個 class 添加一個 :after 僞元素實現元素以後添加一個看不見的塊元素(Block element)清理浮動。html
HTMLweb
<p class="line">分割線</p>
CSSapp
.line::before, .line::after { content: ''; display: inline-block; border-top: 1px solid black; width: 200px; margin: 5px; }
HTML字體
<div class="chooses"> <input type="checkbox">a <input type="checkbox">b <input type="checkbox">c <input type="checkbox">d <input type="checkbox">e <input type="checkbox">f <input type="checkbox">g <input type="checkbox">h <input type="checkbox">i <input type="checkbox">j </div> <p class="choose">我選擇了<span></span>個字母</p>
CSSurl
.chooses { counter-reset: letters; } .chooses input:checked { counter-increment: letters; } .choose span:after { content: counter(letters); }
counter-reset 屬性設置某個選擇器出現次數的計數器的值。默認爲 0。
counter-increment 屬性設置某個選取器每次出現的計數器增量。默認增量是 1。
HTMLspa
<div class="tooltip"> <span class="caret"></span> Hello World </div> <div class="bubble">Hello World</div>
CSS設計
.tooltip, .bubble{ position: relative; padding: 10px; border-radius: 3px; background: #fff; border: 1px solid #000; display: inline-block; } .tooltip .caret, .bubble:before{ width: 10px; height: 10px; border-left: 1px solid #000; border-top: 1px solid #000; background: #fff; display: inline-block; transform: rotateZ(45deg); position: absolute; top: -6px; } .bubble:before{ content:'' }
HTMLcode
今天的心情: <input type="checkbox">
CSSorm
input[type=checkbox]{ -webkit-appearance: none; appearance: none; background: url(http://7xpvnv.com2.z0.glb.qiniucdn.com/b6dcd011-23cc-4d95-9e51-9f10100103bd.png) 0 0 no-repeat; display: inline-block; width: 20px; height: 20px; background-size: contain; vertical-align: middle; outline: none; } input[type=checkbox]:checked{ -webkit-appearance: none; appearance: none; background: url(http://7xpvnv.com2.z0.glb.qiniucdn.com/538f26f0-6f3e-48d5-91e6-5b5bb730dd19.png) 0 0 no-repeat; display: inline-block; width: 20px; height: 20px; background-size: contain; vertical-align: middle; }
僞類選擇元素基於的是當前元素處於的狀態,或者說元素當前所具備的特性,而不是元素的 id、class、屬性等靜態的標誌。因爲狀態是動態變化的,因此一個元素達到一個特定狀態時,它可能獲得一個僞類的樣式;當狀態改變時,它又會失去這個樣式。由此能夠看出,它的功能和 class 有些相似,但它是基於文檔以外的抽象,因此叫僞類。
與僞類針對特殊狀態的元素不一樣的是,僞元素是對元素中的特定內容進行操做,它所操做的層次比僞類更深了一層,也所以它的動態性比僞類要低得多。實際上,設計僞元素的目的就是去選取諸如元素內容第一個字(母)、第一行,選取某些內容前面或後面這種普通的選擇器沒法完成的工做。它控制的內容實際上和元素是相同的,可是它自己只是基於元素的抽象,並不存在於文檔中,因此叫僞元素。