css中::before/:before和::after/:after的使用方法

來源:互聯網
上載者:User

第一部分:基礎知識

1.與:active 和 :hover這些偽類不一樣,他們都是虛擬元素。

2.:before/:after虛擬元素是在css2中提出來的。而::before/::after是在css3中的寫法,這樣從新提出是為了用兩個冒號表示虛擬元素以區分偽類。

3.它們用在css裡某個選取器之後,為了增添裝飾性內容的,因為這樣可以實現語義化,如果用html來添加一些沒有實際內容的節點或者輔助式樣本的文本,他們是毫無意義的。

4.它們有特有的屬性content,其中添加的內容預設是內嵌元素。

5.建立的虛擬元素預設是在所依附的元素之上的,我們可以使用z-index:-1;把它放到下面去。

6.它們是虛擬節點,而不是真正的節點。如:

div::after{
    content:" ";
    border:thinsolidred;
}

我們在瀏覽器可以看到:

::after並不是一個真實節點,實際上我們在一些網站上經常可以看到它們的使用。

6.input,img,iframe等元素都不能包含其他元素,所以不能通過虛擬元素插入內容。  

第二部分:應用

1.做間隔符。

<!DOCTYPE html>
<htmllang="en">
<head>
    <metacharset="UTF-8">
    <title>虛擬元素</title>
    <style>
        a{
            color:blue;
            text-decoration: none;
        }
        .log:after{
            content:"|";
            color:red;
        }
    </style>
</head>
<body>
    <ahref=""class="log">登入</a><ahref="">註冊</a>
</body>
</html>

效果如下:

2.做三角形

<!DOCTYPE html>
<htmllang="en">
<head>
    <metacharset="UTF-8">
    <title>虛擬元素</title>
    <style>
        a{
            color:blue;
            text-decoration: none;
        }
        .log:before{
            content:" ";
            display: inline-block;
            width: 0;
            height: 0;
            border:10px solid transparent;
            border-left: 10px solid red;
        }
    </style>
</head>
<body>
    <ahref=""class="log">登入</a>
</body>
</html>

效果如下所示:

3.清除浮動(下面內容取自張鑫旭大神)

<!DOCTYPE html>
<htmllang="en">
<head>
    <metacharset="UTF-8">
    <title>虛擬元素</title>
    <style>
    .box{padding:10px; background:gray;}
    .fix{*zoom:1;}
    .fix:after{display:block; content:"clear"; height:0; clear:both; overflow:hidden; visibility:hidden;}
    .l{float:left;}
    </style>
</head>
<body>
    <divclass="box fix">
    <imgclass="l"src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg"/>
</div>
</body>
</html>

效果如下:

注意:其中*zoom:1;是用來在IE6中清除浮動的(用在浮動元素的父元素上)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.