中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS中偽元素與偽類有哪些區別

發布時間:2021-09-06 17:54:35 來源:億速云 閱讀:190 作者:小新 欄目:web開發

這篇文章主要介紹了CSS中偽元素與偽類有哪些區別,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

ol {   
    countercounter-reset: li;   
}   
ol>li {   
    position: relative;   
    padding-left: 2em;   
    line-height: 30px;   
    list-style: none;   
}   
ol>li:before {   
    position: absolute;   
    top: 8px;   
    left: 0;   
    height: 16px;   
    width: 16px;   
    line-height: 16px;   
    text-align: center;   
    content: counter(li);   
    countercounter-increment: li;   
    border-radius: 50%;   
    background-color: #ccc;   
    font-size: 12px;   
    color: #efefee;   
}

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

<style type="text/css">   
    .list li {   
        list-style: none;   
        margin-bottom: 20px;   
    }   
    .list li span {   
        vertical-align: middle;   
    }   
    .list li:before {   
        content: attr(data-index);   
        display: inline-block;   
        width: 20px;   
        height: 20px;   
        text-align: center;   
        color: #fff;   
        vertical-align: middle;           
        background-color: #f00;   
        border-radius: 50%;   
    }   
</style>   
<ul class="list">   
    <li data-index="1"><span>專注前端開發和用戶體驗</span></li>   
    <li data-index="2"><span>專注前端開發和用戶體驗</span></li>   
    <li data-index="3"><span>專注前端開發和用戶體驗</span></li>   
    <li data-index="4"><span>專注前端開發和用戶體驗</span></li>   
    <li data-index="5"><span>專注前端開發和用戶體驗</span></li>   
</ul>

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

.plus {   
    position: relative;   
    display: inline-block;   
    vertical-align: top;   
    width: 20px;   
    height: 20px;   
    margin-right: 24px;   
    border: 1px solid #fdaa47;   
    border-radius: 3px;   
    overflow: hidden;   
}   
/* 橫向 */    
.plus:before {   
    content: '';   
    position: absolute;   
    top: 10px;   
    left: 3px;   
    width: 14px;   
    height: 1px;   
    background-color: #fdaa47;   
    display: block;   
}   
/* 縱向 */    
.plus:after {   
    display: block;   
    content: '';   
    width: 1px;   
    height: 14px;   
    background-color: #fdaa47;   
    position: absolute;   
    left: 10px;   
    top: 3px;   
}   
.opened:after {   
    top: -30px;   
}

當通過addClass(&lsquo;opened&rsquo;)和removeClass(&lsquo;opened&rsquo;),來切換加減號時:IE8瀏覽器中效果沒有達到預期,部分樣式無法覆蓋,現解決方案如下:

<div class="parent">   
    <i class="plus"></i>   
</div>   
<script type="text/javascript">   
$('.parent').on('click', function() {   
    var $i = $(this).find('i'),   
        className = $i.attr('class');   
    className = /opened/.test(className) ? 'plus' : className +' opened';   
    $i.replaceWith('<i class="'+ className +'""></i>');   
});   
</script>

偽類和偽元素的異同
1. W3C CSS 2.1 Selectors
對偽類和偽元素沒有做出區分,都是使用一個冒號
比如
偽類:first-child,
偽元素:first-line
PS:在該規范中明確提到了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 &lsquo;color&rsquo; 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
該規范中為偽類和偽元素做了區分,偽類使用單冒號,偽元素開始使用雙冒號。
比如
偽類:first-child
偽元素::first-line、::first-letter、::before、::after
CSS 3在CSS2.1的基礎上增加了不少偽類:target、UI元素狀態的偽類:checked等、結構性偽類:nth-child()等,具體可以看規范。

3. CSS Selectors Level 4草案
該草案中又增加了很多新的偽類,比如與input控制狀態、值狀態、值校驗相關的偽類,樹形結構的偽類,網格結構的偽類等。

4. CSS Pseudo-Elements Module Level 4&mdash;&mdash;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. 常見應用
偽類:
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實現按鈕文字隱藏
3) 首行、首字母樣式

感謝你能夠認真閱讀完這篇文章,希望小編分享的“CSS中偽元素與偽類有哪些區別”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

莎车县| 广河县| 盐城市| 建宁县| 长兴县| 本溪市| 安溪县| 印江| 绍兴县| 霍州市| 嘉峪关市| 江源县| 榆树市| 涡阳县| 遂宁市| 娱乐| 博湖县| 勐海县| 涿鹿县| 清水河县| 北流市| 宁陕县| 宜兰县| 大新县| 闸北区| 克东县| 张家口市| 庄河市| 绍兴县| 陵川县| 晋城| 宁南县| 富阳市| 肃宁县| 龙山县| 苏州市| 蒲城县| 句容市| 甘孜县| 崇礼县| 夏津县|