css中偽類和偽元素的區別及用法


一、區別:

(1)偽元素主要是用來創建一些不存在原有dom結構樹種的元素,例如:用::before和::after在一些存在的元素前后添加文字樣式等,這些被添加的內容會以具體的UI顯示出來,被用戶所看到的,這些內容不會改變文檔的內容,不會出現在DOM中,不可復制,僅僅是在CSS渲染層加入。CSS3中建議使用::表示偽元素,如:div::before。

 

::before和::after這兩個偽類下有特有的屬性content,必須有這個屬性。

1、attr() 調用當前元素的屬性,可以方便的比如將圖片的Alt提示文字或鏈接的Href地址顯示出來,如下:

  a:after {

    content: "(" attr(href) ")";
  }
2、url() / uri() 用於引入媒體文件
  h1:before{
    content: url(log.png);
  }
3、counter() 調用計數器,可以不使用列表元素實現序號功能。
  h2:before{
    counter-increment: chapter;
    content: "Chapter" counter(chapter) ". "
  }

 (2)偽類表示已存在的某個元素處於某種狀態,但是通過dom樹又無法表示這種狀態,就可以通過偽類來為其添加樣式。例如a元素的:hover, :active等。CSS3中建議使用:表示偽元素,如:a:hover

1. 原始的HTML片段,我們將在此基礎上講解偽類和偽元素

<ul>

  <li>First li element</li>

  <li>Secondli element</li>

</ul>

2. 偽類

1)給第二個li元素添加樣式,可以在第二個li元素上加個class

<ul>

<li>First li element</li>

<li class="second">Second li element</li>

</ul>

.second{color:#f00}

2)也可以通過偽類給第二個li元素添加樣式

 

 可以看出:第二個li元素是dom結構里本來就存在的。

3. 偽元素

1)給第二個li元素內的第一個字母(S)添加樣式,可以給S加個span標簽,並添加一個class

<ul>

  <li>First li element</li>

  <li><span class=”first-letter”>S</span>econd li element</li>

</ul>

li.first-letter{color:#f00}

2)也可以通過偽元素給第二個li元素內的第一個字母(S)添加樣式

 

 

總之,

偽元素的操作對象是新生成的dom元素,而不是原來dom結構里就存在的;而偽類恰好相反,偽類的操作對象是原來的dom結構里就存在的元素。

偽元素與偽類的根本區別在於:操作的對象元素是否存在於原來的dom結構里。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM