欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析CSS中的偽元素及其與偽類的區(qū)別

Benjamin   發(fā)布時間:2016-06-27 11:53:24   作者:Benjamin   我要評論
CSS偽元素能使我們添加案定的HTML元素之外的元素,這里我們就來解析CSS中的偽元素及其與偽類的區(qū)別,需要的朋友可以參考下

偽元素
我們知道隨著CSS規(guī)范進(jìn)一步完善,新增的CSS偽元素越來越多,但是在日常開發(fā)中,我們常用的及瀏覽器支持情況比較樂觀的當(dāng)數(shù)before和after了。但是我們在日常開發(fā)中使用的都是:after {content: ”;}來清除浮動,及新增一個元素(照顧到IE8瀏覽器這里使用單冒號)。但是content的可取值有哪些呢?
1. 字符串: content: “a string”- 注意:特殊字符必須使用unicode編碼;
2. 圖片: content: url(/path/to/benjamin.png) – 圖片以原始尺寸插入,不能調(diào)整大小。因圖片支持漸變,因此可以對偽元素使用漸變效果;
3. 無字符: content: “”- 這個在清除浮動和設(shè)置背景圖片比較有用,我們可以設(shè)置背景圖片的width和height,甚至我們可以使用background-size屬性來調(diào)整背景圖片大小;
4. 計數(shù)器: content: counter(li)- 在:marker出現(xiàn)之前,對于設(shè)置列表序號樣式比較有用;具體參見下面代碼:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. ol {   
  2.     countercounter-reset: li;   
  3. }   
  4. ol>li {   
  5.     positionrelative;   
  6.     padding-left: 2em;   
  7.     line-height30px;   
  8.     list-stylenone;   
  9. }   
  10. ol>li:before {   
  11.     positionabsolute;   
  12.     top8px;   
  13.     left: 0;   
  14.     height16px;   
  15.     width16px;   
  16.     line-height16px;   
  17.     text-aligncenter;   
  18.     contentcounter(li);   
  19.     countercounter-increment: li;   
  20.     border-radius: 50%;   
  21.     background-color#ccc;   
  22.     font-size12px;   
  23.     color#efefee;   
  24. }  

PS:我們不能設(shè)置content: “<h2>Benjamin</h2>”,它不會解析按HTML代碼片段解析,而會解析為字符串;
5. content: attr(attrName)
content可以利用attr函數(shù)獲取屬性值,尤其使用在偽類中比較方便。見如下代碼:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. <style type="text/css">   
  2.     .list li {   
  3.         list-stylenone;   
  4.         margin-bottom20px;   
  5.     }   
  6.     .list li span {   
  7.         vertical-alignmiddle;   
  8.     }   
  9.     .list li:before {   
  10.         contentattr(data-index);   
  11.         displayinline-block;   
  12.         width20px;   
  13.         height20px;   
  14.         text-aligncenter;   
  15.         color#fff;   
  16.         vertical-alignmiddle;           
  17.         background-color#f00;   
  18.         border-radius: 50%;   
  19.     }   
  20. </style>   
  21. <ul class="list">   
  22.     <li data-index="1"><span>專注前端開發(fā)和用戶體驗</span></li>   
  23.     <li data-index="2"><span>專注前端開發(fā)和用戶體驗</span></li>   
  24.     <li data-index="3"><span>專注前端開發(fā)和用戶體驗</span></li>   
  25.     <li data-index="4"><span>專注前端開發(fā)和用戶體驗</span></li>   
  26.     <li data-index="5"><span>專注前端開發(fā)和用戶體驗</span></li>   
  27. </ul>  

說了前面的話,下面說說IE中遇到的bug:
Bug描述:使用偽類實現(xiàn)”+”/”-“號圖像切換時,通過增加和移除opened類來實現(xiàn),但是在IE8中效果怪異,無法正確渲染,其它瀏覽器中正常:

CSS Code復(fù)制內(nèi)容到剪貼板
  1. .plus {   
  2.     positionrelative;   
  3.     displayinline-block;   
  4.     vertical-aligntop;   
  5.     width20px;   
  6.     height20px;   
  7.     margin-right24px;   
  8.     border1px solid #fdaa47;   
  9.     border-radius: 3px;   
  10.     overflowhidden;   
  11. }   
  12. /* 橫向 */    
  13. .plus:before {   
  14.     content'';   
  15.     positionabsolute;   
  16.     top10px;   
  17.     left3px;   
  18.     width14px;   
  19.     height1px;   
  20.     background-color#fdaa47;   
  21.     displayblock;   
  22. }   
  23. /* 縱向 */    
  24. .plus:after {   
  25.     displayblock;   
  26.     content'';   
  27.     width1px;   
  28.     height14px;   
  29.     background-color#fdaa47;   
  30.     positionabsolute;   
  31.     left10px;   
  32.     top3px;   
  33. }   
  34. .opened:after {   
  35.     top: -30px;   
  36. }  

當(dāng)通過addClass(‘opened’)和removeClass(‘opened’),來切換加減號時:IE8瀏覽器中效果沒有達(dá)到預(yù)期,部分樣式無法覆蓋,現(xiàn)解決方案如下:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. <div class="parent">   
  2.     <i class="plus"></i>   
  3. </div>   
  4. <script type="text/javascript">   
  5. $('.parent').on('click'function() {   
  6.     var $i = $(this).find('i'),   
  7.         className = $i.attr('class');   
  8.     className = /opened/.test(className) ? 'plus' : className +' opened';   
  9.     $i.replaceWith('<i class="'+ className +'""></i>');   
  10. });   
  11. </script>  

偽類和偽元素的異同
1. W3C CSS 2.1 Selectors
對偽類和偽元素沒有做出區(qū)分,都是使用一個冒號
比如
偽類:first-child,
偽元素:first-line
PS:在該規(guī)范中明確提到了a鏈接的幾種偽類的書寫順序:
Note that the A:hover must be placed after the A:link and A:visited rules, since otherwise the cascading rules will hide the ‘color’ property of the A:hover rule. Similarly, because A:active is placed after A:hover, the active color (lime) will apply when the user both activates and hovers over the A element.

2. CSS Selectors Level 3
該規(guī)范中為偽類和偽元素做了區(qū)分,偽類使用單冒號,偽元素開始使用雙冒號。
比如
偽類:first-child
偽元素::first-line、::first-letter、::before、::after
CSS 3在CSS2.1的基礎(chǔ)上增加了不少偽類:target、UI元素狀態(tài)的偽類:checked等、結(jié)構(gòu)性偽類:nth-child()等,具體可以看規(guī)范。

3. CSS Selectors Level 4草案
該草案中又增加了很多新的偽類,比如與input控制狀態(tài)、值狀態(tài)、值校驗相關(guān)的偽類,樹形結(jié)構(gòu)的偽類,網(wǎng)格結(jié)構(gòu)的偽類等。

4. CSS Pseudo-Elements Module Level 4——W3C First Public Working Draft, 15 January 2015
增加了一些偽元素,如:
Selecting Highlighted Content: the ::selection, ::spelling-error, and ::grammar-error pseudo-elements,
Placeholder Input: the ::placeholder pseudo-element。

5. 常見應(yīng)用
偽類:
1) a鏈接樣式
2) 隔行變色
偽元素:
1) 最常見的使用偽元素after清除浮動,
.fix{*zoom:1;}
.fix:after,.fix::after{display: block; content: “clear”; height: 0; clear: both; overflow: hidden; visibility: hidden;}
2) letter-spacing+first-letter實現(xiàn)按鈕文字隱藏
3) 首行、首字母樣式
 

相關(guān)文章

  • 詳解如何使用CSS3中的結(jié)構(gòu)偽類選擇器和偽元素選擇器

    這篇文章主要介紹了詳解如何使用CSS3中的結(jié)構(gòu)偽類選擇器和偽元素選擇器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面
    2020-01-06
  • 詳解CSS中的偽類與偽元素及二者間的區(qū)別

    這篇文章主要介紹了詳解CSS中的偽類與偽元素及二者間的區(qū)別,實際上CSS3中規(guī)范了一種簡單粗暴的方法,即偽類前用一個冒號表示,而偽元素前用兩個冒號表示,這樣就不容易混淆了,
    2016-04-28
  • 淺談CSS偽類與偽元素

    本文向大家展示了CSS的偽類與偽元素,介紹的非常全面,這里推薦給大家參考下。
    2014-12-04
  • CSS偽類和偽元素的區(qū)別詳解

    偽類和偽元素不是真正意義上的html存在的類和元素,他們的存在是為了方便對狀態(tài)和位置進(jìn)行樣式定義。具體他們之間有什么區(qū)別呢,這就是今天我們需要討論的問題了
    2014-11-23
  • css3 偽元素和偽類選擇器詳解

    無論是偽類還是偽元素,都屬于CSS選擇器的范疇。所以它們的定義可以在CSS標(biāo)準(zhǔn)的選擇器章節(jié)找到。分別是 CSS2.1 Selectors 和 CSS Selector Level 3,兩者都已經(jīng)是推薦標(biāo)準(zhǔn)
    2014-09-04
  • CSS偽類/偽元素選擇器整理

    CSS偽類及偽元素選擇器,如超鏈接的a:link、a:visited、a:hover等等,本文整理了一些,喜歡的朋友可以收藏下
    2013-11-27
  • css偽類偽元素域高級選擇器的介紹

    css偽類偽元素域高級選擇器的介紹,需要的朋友可以參考一下
    2013-02-26
  • CSS偽類與CSS偽元素的區(qū)別及由來具體說明

    關(guān)于兩者的區(qū)別,其實是很古老的問題.這里著重寫的是為什么這兩者不同,以及一些平時容易錯過的細(xì)節(jié),需要的朋友可以參考下
    2012-12-07
  • 淺談CSS 偽元素&偽類的妙用

    這篇文章主要介紹了淺談CSS 偽元素&偽類的妙用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)
    2020-09-01

最新評論