有時候我們需要將子標籤浮動起來,但是浮動起來後,父標籤的樣式又用不上,比如:
偽元素與偽類(一)
偽元素與偽類(二)
父標籤中的背景是紅色,但是由於新增了style="float:left"導致顯示的內容失去了定義的背景:
為了了解決該問題,我們可以有兩種方法:
①在**中新增如下綠色部分:
偽元素與偽類(一)
偽元素與偽類(二)
再重新整理頁面:
該方法就是在浮動標籤的最底部新增
就可以實現父標籤生效的功能。
②在用到布局,肯定會用到float,用到float就會與原來的父標籤的樣式脫離,為了解決該問題,可以在寫樣式的時候額外寫乙個如下樣式:
.clearfix:after
所以具體**為:
偽元素與偽類(一)
偽元素與偽類(二)
執行**顯示效果跟第一種方法一樣:
從以上兩個例子引出我們今天的主題,偽類和偽元素
首先,閱讀w3c
對兩者的定義:
可以明確兩點,第一兩者都與選擇器相關,第二就是新增一些「特殊」的效果。這裡特殊指的是兩者描述了其他css
無法描述的東西。
這裡用偽類:first-child
和偽元素:first-letter
來進行比較。
p>i:first-child firstsecond
:first-child
新增樣式到第乙個子元素
如果我們不使用偽類,而希望達到上述效果,可以這樣做:
.first-child first即我們給第乙個子元素新增乙個類,然後定義這個類的樣式。那麼我們接著看看為元素:second
p:first-letter i am stephen lee.
:first-letter
新增樣式到第乙個字母
那麼如果我們不使用偽元素,要達到上述效果,應該怎麼做呢?
.first-letter i am stephen lee.即我們給第乙個字母新增乙個
span
,然後給span
增加樣式。
兩者的區別已經出來了。那就是:
偽類的效果可以通過新增乙個實際的類來達到,而偽元素的效果則需要通過新增乙個實際的元素才能達到,這也是為什麼他們乙個稱為偽類,乙個稱為偽元素的原因。偽元素和偽類之所以這麼容易混淆,是因為他們的效果類似而且寫法相仿,但實際上
css3
為了區分兩者,已經明確規定了偽類用乙個冒號來表示,而偽元素則用兩個冒號來表示。
:pseudo-classes::pseudo-elements
但因為相容性的問題,所以現在大部分還是統一的單冒號,但是拋開相容性的問題,我們在書寫時應該盡可能養成好習慣,區分兩者。
總結:平時我們用的最多偽類是:hover;而用的最多的偽元素:before和:after,這兩者中尤其:after用的最多
偽類和偽元素
偽元素 first letter向文字的第乙個字母新增特殊樣式 first line 向文字的第一行新增樣式 before 在元素之前新增內容 after 在元素之後新增內容 偽類 link 未被訪問的鏈結 visited 已訪問的鏈結 hover當滑鼠懸停到元素上方時 active被啟用的元素 注...
偽類和偽元素
定義 偽類和偽元素就是為文件中不一定存在的結構指定樣式,或者為某些元素 甚至文件本身 的狀態所指示的幻象類指定樣式。css引入偽類和偽元素概念是為了格式化文件樹以外的資訊。偽類的形式 選擇符 偽類 偽元素的形式 選擇符 偽元素 css3規範中要求使用雙冒號 表示偽元素,以此來區分偽元素和偽類。鏈結偽...
偽類和偽元素
1 偽類 用於向某些選擇器新增特殊的效果,當已用元素處於某種狀態時,為其新增對應的樣式 link未訪問的連線 visited已訪問的連線 hover滑鼠移動到容器,可用於頁面的任何元素 active被啟用時的狀態,不僅限於連線 focus獲得焦點時的狀態,不僅限於連線 target first ch...