摘要:狀態(tài)偽類(lèi)是基于元素當(dāng)前狀態(tài)進(jìn)行選擇的。在與用戶的交互過(guò)程中元素的狀態(tài)是動(dòng)態(tài)變化的,因此該元素會(huì)根據(jù)其狀態(tài)呈現(xiàn)不同的樣式。單冒號(hào)用于偽類(lèi),雙冒號(hào)用于偽元素??梢酝ㄟ^(guò)對(duì)父元素添加偽類(lèi)撐開(kāi)父元素高度,因?yàn)榫褪瞧渥詈笠粋€(gè)子元素。
css選擇器常見(jiàn)包括id(#id)、標(biāo)簽(tag)、class(.class)、屬性[attr=attrval]等,還包括偽元素和偽類(lèi)選擇器。正確的利用偽元素和偽類(lèi)能夠讓我們的html結(jié)構(gòu)更清晰合理,也能在一定程度上減少js對(duì)dom的操作!
定義偽類(lèi)包含兩種:狀態(tài)偽類(lèi)和結(jié)構(gòu)性偽類(lèi)。
狀態(tài)偽類(lèi)是基于元素當(dāng)前狀態(tài)進(jìn)行選擇的。在與用戶的交互過(guò)程中元素的狀態(tài)是動(dòng)態(tài)變化的,因此該元素會(huì)根據(jù)其狀態(tài)呈現(xiàn)不同的樣式。當(dāng)元素處于某狀態(tài)時(shí)會(huì)呈現(xiàn)該樣式,而進(jìn)入另一狀態(tài)后,該樣式也會(huì)失去。常見(jiàn)的狀態(tài)偽類(lèi)主要包括:
:link 應(yīng)用于未被訪問(wèn)過(guò)的鏈接;
:hover 應(yīng)用于鼠標(biāo)懸停到的元素;
:active 應(yīng)用于被激活的元素;
:visited 應(yīng)用于被訪問(wèn)過(guò)的鏈接,與:link互斥。
:focus 應(yīng)用于擁有鍵盤(pán)輸入焦點(diǎn)的元素。
結(jié)構(gòu)性偽類(lèi)是css3新增選擇器,利用dom樹(shù)進(jìn)行元素過(guò)濾,通過(guò)文檔結(jié)構(gòu)的互相關(guān)系來(lái)匹配元素,能夠減少class和id屬性的定義,使文檔結(jié)構(gòu)更簡(jiǎn)潔。常見(jiàn)的包括:
:first-child 選擇某個(gè)元素的第一個(gè)子元素;
:last-child 選擇某個(gè)元素的最后一個(gè)子元素;
:nth-child() 選擇某個(gè)元素的一個(gè)或多個(gè)特定的子元素;
:nth-last-child() 選擇某個(gè)元素的一個(gè)或多個(gè)特定的子元素,從這個(gè)元素的最后一個(gè)子元素開(kāi)始算;
:nth-of-type() 選擇指定的元素;
:nth-last-of-type() 選擇指定的元素,從元素的最后一個(gè)開(kāi)始計(jì)算;
:first-of-type 選擇一個(gè)上級(jí)元素下的第一個(gè)同類(lèi)子元素;
:last-of-type 選擇一個(gè)上級(jí)元素的最后一個(gè)同類(lèi)子元素;
:only-child 選擇的元素是它的父元素的唯一一個(gè)子元素;
:only-of-type 選擇一個(gè)元素是它的上級(jí)元素的唯一一個(gè)相同類(lèi)型的子元素;
:empty 選擇的元素里面沒(méi)有任何內(nèi)容。
偽元素是對(duì)元素中的特定內(nèi)容進(jìn)行操作,而不是描述狀態(tài)。它的操作層次比偽類(lèi)更深一層,因此動(dòng)態(tài)性比偽類(lèi)低很多。實(shí)際上,偽元素就是選取某些元素前面或后面這種普通選擇器無(wú)法完成的工作??刂频膬?nèi)容和元素是相同的,但它本身是基于元素的抽象,并不存在于文檔結(jié)構(gòu)中!常見(jiàn)的偽元素選擇器包括:
:first-letter 選擇元素文本的第一個(gè)字(母)。
:first-line 選擇元素文本的第一行。
:before 在元素內(nèi)容的最前面添加新內(nèi)容。
:after 在元素內(nèi)容的最后面添加新內(nèi)容。
注意事項(xiàng)有時(shí)你會(huì)發(fā)現(xiàn)偽類(lèi)元素使用了兩個(gè)冒號(hào) (::) 而不是一個(gè)冒號(hào) (:),這是 CSS3 規(guī)范中的一部分要求,目的是為了區(qū)分偽類(lèi)和偽元素,大多數(shù)瀏覽器都支持這兩種表示方式。單冒號(hào)(:)用于 CSS3 偽類(lèi),雙冒號(hào)(::)用于 CSS3 偽元素。對(duì)于 CSS2 中已經(jīng)有的偽元素,例如 :before,單冒號(hào)和雙冒號(hào)的寫(xiě)法 ::before 作用是一樣的。
所以,如果你的網(wǎng)站只需要兼容 webkit、firefox、opera 等瀏覽器,建議對(duì)于偽元素采用雙冒號(hào)的寫(xiě)法,如果不得不兼容 IE 瀏覽器,還是用 CSS2 的單冒號(hào)寫(xiě)法比較安全。
偽元素的應(yīng)用(1) 清除浮動(dòng)
如果父元素的所有子元素都是浮動(dòng)的,父元素的高度則無(wú)法撐開(kāi)??梢酝ㄟ^(guò)對(duì)父元素添加after偽類(lèi)撐開(kāi)父元素高度,因?yàn)閍fter就是其最后一個(gè)子元素。
.clear:after { content: ""; display: block; clear: both; }
(2) 畫(huà)分割線
畫(huà)一條如下的分割線:
分割線
(3)計(jì)數(shù)器
用js做個(gè)計(jì)數(shù)器是比較常見(jiàn)的,但我css也能實(shí)現(xiàn)!用到的屬性有:
1> counter-reset: 屬性設(shè)置某個(gè)選擇器出現(xiàn)次數(shù)的計(jì)數(shù)器的值。默認(rèn)為 0。
2> counter-increment: 屬性設(shè)置某個(gè)選取器每次出現(xiàn)的計(jì)數(shù)器增量。默認(rèn)增量是 1。
3> content: 插入生成內(nèi)容。
代碼如下:
a b c d e f g h i j我選擇了個(gè)字母
(4)形變
通過(guò)偽元素實(shí)現(xiàn)如下透視形變:
代碼如下:
.transform{ position: absolute; top:50%; left: 50%; transform:translate(-50%,-50%); width: 160px; padding: 60px; text-align: center; color: white; font-size: 200%; } .transform::before{ content:""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; transform:perspective(40px) scaleY(1.3) rotateX(5deg); transform-origin: bottom; background:rgb(255, 145, 20); z-index:-1; }
.rhombus{ position: absolute; top:50%;left: 50%; transform:translate(-50%,-50%); width: 200px;line-height:200px; text-align: center; color: white; font-size: 200%; } .rhombus:before{ content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-color:rgb(20, 255, 255); z-index:-1; transform: rotateZ(45deg); }
(5) 增大點(diǎn)擊熱區(qū)
.btn::before { content:""; position:absolute; top:-10px; right:-10px; bottom:-10px; left:-10px; }總結(jié)
偽元素的本質(zhì)是在不增加dom結(jié)構(gòu)的基礎(chǔ)上添加的一個(gè)元素,在用法上跟真正的dom無(wú)本質(zhì)區(qū)別。普通元素能實(shí)現(xiàn)的效果,偽元素都可以。有些用偽元素效果更好,代碼更精簡(jiǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51558.html
摘要:狀態(tài)偽類(lèi)是基于元素當(dāng)前狀態(tài)進(jìn)行選擇的。在與用戶的交互過(guò)程中元素的狀態(tài)是動(dòng)態(tài)變化的,因此該元素會(huì)根據(jù)其狀態(tài)呈現(xiàn)不同的樣式。單冒號(hào)用于偽類(lèi),雙冒號(hào)用于偽元素。可以通過(guò)對(duì)父元素添加偽類(lèi)撐開(kāi)父元素高度,因?yàn)榫褪瞧渥詈笠粋€(gè)子元素。 css選擇器常見(jiàn)包括id(#id)、標(biāo)簽(tag)、class(.class)、屬性[attr=attrval]等,還包括偽元素和偽類(lèi)選擇器。正確的利用偽元素和偽類(lèi)能...
摘要:一偽類(lèi)偽類(lèi)包含兩種狀態(tài)偽類(lèi)偽類(lèi)和結(jié)構(gòu)性偽類(lèi)。狀態(tài)偽類(lèi)是基于元素當(dāng)前狀態(tài)進(jìn)行選擇的。二偽元素偽元素是對(duì)元素中的特定內(nèi)容進(jìn)行操作,而不是描述狀態(tài)。 一、偽類(lèi) 偽類(lèi)包含兩種:狀態(tài)偽類(lèi)(UI 偽類(lèi))和結(jié)構(gòu)性偽類(lèi)。 (1)狀態(tài)偽類(lèi)是基于元素當(dāng)前狀態(tài)進(jìn)行選擇的。 在與用戶的交互過(guò)程中元素的狀態(tài)是動(dòng)態(tài)變化的,因此該元素會(huì)根據(jù)其狀態(tài)呈現(xiàn)不同的樣式。當(dāng)元素處于某狀態(tài)時(shí)會(huì)呈現(xiàn)該樣式,而進(jìn)入另一狀態(tài)后,該樣...
摘要:介紹偽類(lèi)和偽元素是中很常見(jiàn)的兩個(gè)概念,利用的好,能夠很方便的實(shí)現(xiàn)一些特殊效果。偽類(lèi)與偽元素由于用法相近,導(dǎo)致平時(shí)使用并不能很好的區(qū)分這兩個(gè)概念。偽類(lèi)偽類(lèi)類(lèi)似于,用于對(duì)已有元素增加特殊狀態(tài),比如等。偽元素偽元素包括。 介紹 偽類(lèi)和偽元素是css中很常見(jiàn)的兩個(gè)概念,利用的好,能夠很方便的實(shí)現(xiàn)一些特殊效果。偽類(lèi)與偽元素由于用法相近,導(dǎo)致平時(shí)使用并不能很好的區(qū)分這兩個(gè)概念。偽類(lèi)(pseudo-...
摘要:總結(jié)常用偽類(lèi)與偽元素偽類(lèi)和偽元素是為了格式化樹(shù)以外的信息而被引入的。偽類(lèi)一個(gè)偽類(lèi)是以一個(gè)冒號(hào)作為前綴,被添加到一個(gè)選擇器末尾的關(guān)鍵字,可以讓指定的元素在特定的狀態(tài)呈現(xiàn)指定的樣式。 總結(jié)常用偽類(lèi)與偽元素 偽類(lèi)和偽元素是為了格式化 DOM 樹(shù)以外的信息而被引入的。 偽類(lèi) 一個(gè) CSS 偽類(lèi)是以一個(gè)冒號(hào)(:)作為前綴,被添加到一個(gè)選擇器末尾的關(guān)鍵字,可以讓指定的元素在特定的狀態(tài)呈現(xiàn)指定的樣式...
閱讀 1917·2021-11-24 11:16
閱讀 3265·2021-09-10 10:51
閱讀 3216·2021-08-03 14:03
閱讀 1272·2019-08-29 17:03
閱讀 3253·2019-08-29 12:36
閱讀 2239·2019-08-26 14:06
閱讀 502·2019-08-23 16:32
閱讀 2695·2019-08-23 13:42