目錄
What is CSS?
首頁 web前端 css教學 css中:before和:after在實務上的應用講解

css中:before和:after在實務上的應用講解

Nov 02, 2018 am 11:49 AM

根據定義:before和:after是CSS的偽元素,我們可以使用它們在元素內容之前或之後插入內容,有很多的文章都給出了它們的基礎知識,所以我想寫一篇關於: before和:after在實際應用的文章,表示我們正在使用它們。

語法

假設我們有以下簡單的html標記:

<p>paragraph text</p>
登入後複製

我們可以使用這樣的偽元素:

p:before {
    content: "this is ";    
    font-weight: bold;    
    font-style: italic;
}
登入後複製

結果是:

css中:before和:after在實務上的應用講解

請注意,實際上是在內容之前或之後添加元素。它不是出現在所選元素旁邊的東西,而是與其內容相關。 (推薦課程:css影片教學

圖示

#使用:before和:after實作一個小圖示是非常好用的,因為你可以新增每個CSS樣式屬性,所以可以將新建立的元素設定為一個區塊元素並附加背景圖像。

同樣,我們有相同的標記

段落文字

看下面的CSS程式碼:

p:before {
    content: "";
    display: block;
    background: url("icon.jpg") no-repeat;
    width: 20px;
    height: 20px;
    float: left;
    margin: 0 6px 0 0;
    }
登入後複製

icon.jpg是從Photoshop匯出的20x20圖片。以下是瀏覽器的外觀:

css中:before和:after在實務上的應用講解

樣式外部連結

我在許多產品中看到了這一點。以不同方式設定指向外部資源的連結是一種很好的做法。這可以透過上述技術輕鬆完成。假設我們有以下段落的文字:

<p>Krasimir Tsonev is <a href="http://krasimirtsonev.com">developer</a>who likes to write and <a href="https://twitter.com/KrasimirTsonev">tweet</a>.</p>
登入後複製

我們可以在該連結後面新增一個小圖標,表示它指向當前網域之外的頁面。

a {
    text-decoration: none;
    font-weight: bold;
    color: #000;
    }
a:after {
    content: "";
    display: inline-block;
    background: url("icon-external.jpg") no-repeat top right;
    width: 14px;
    height: 12px;
    }
登入後複製

css中:before和:after在實務上的應用講解

麵包屑(導航)

通常當你做麵包屑時,它們之間有連結和分隔符號。而不是在DOM中加入元素,您可以使用純css實現相同的效果。

HTML:

<p>
    <a href="#">Home</a>
    <a href="#">Team</a>
    <a href="#">Developers</a>
</p>
登入後複製

只需幾行CSS:

a {
    text-decoration: none;
    font-weight: bold;
    color: #000;
    }
a:after {
    content: " /";}
a:first-child:before {
    content: " » ";
    }
a:last-child:after {
    content: "";
    }
登入後複製

結果如下:

css中:before和:after在實務上的應用講解

上述結果產生了一下效果。首先,在所有連結之前都有一個符號。我結合兩個偽元素的第一個子元素和before表示:「加入了»在第一個連結之前」。最後,我做了同樣的事情,從清單中的最後一個連結中刪除分隔符號。

我發現這非常有幫助。主要是因為我不必在生成導航的程式碼中關注這一點。我的意思是如果我必須用PHP建立相同的東西我應該寫一些額外的程式碼。例如:

$links = array(&#39;Home&#39;, &#39;Team&#39;, &#39;Developers&#39;);
$str = &#39;» &#39;;for($i=0; $i<count($links); $i++) {
    $str .= &#39;<a href="#">&#39;.$links[$i].&#39;</a>&#39;;
    if($i < count($links)-1) 
    {
        $str .= &#39; / &#39;;
    }
    }
    echo $str;
登入後複製

即在上面的程式碼中,我在連結前加入了符號,並在PHP中加入了分隔符號的一些邏輯。這有些不對,因為PHP程式碼不應該對事物的外觀負責。

清除漂浮物

使用float屬性仍然很好。畢竟它對佈局組織有很大幫助。但是,一旦元素浮動,您需要另一個元素來清除浮動。否則結果不太好。例如,以下程式碼:

* html
<a href="#">Home</a>
<a href="#">Products</a>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at purus ac lacus ultrices vehicula.</p>
* css
a {
    float: left;
    display: block;
    width: 100px;
    ... other styling
    }
登入後複製

將產生以下佈局:

css中:before和:after在實務上的應用講解

#文字應該在連結下面,而不是新增新的DOM節點,可以使用偽元素:before清除浮點數:

p:before {
    content: "";
    display: block;
    clear: both;
    }
登入後複製

css中:before和:after在實務上的應用講解

#引用

:before和:after非常適合引用文字。假設我們有一個想法,我們想要格式化它。

<p> 
    Martin Fowler said    
    <span class="quoted">Any fool can write code that a computer can understand. 
    Good programmers write code that humans can understand.
    </span>
</p>
登入後複製

只有使用CSS才能達到以下效果:

css中:before和:after在實務上的應用講解

span.quoted {
    font-family: Georgia;
    font-size: 16px;
    display: block;
    margin: 14px 0 0 0;
    font-style: italic;
    }
    span.quoted:before {
    content: "“";
    font-size: 40px;
    color: #999;
    line-height: 0;
    display: inline-block;
    margin: 0 6px 0 0;
    }
    span.quoted:after {
    content: " ”";
    font-size: 40px;
    color: #999;
    line-height: 0;
    display: inline-block;
    margin: 0 0 0 4px;
    }
登入後複製

 箭頭

在網頁設計時,有時候會為彈出視窗或工具提示添加一些好看的裝飾。直接編碼它們有點困難。幸運的是,我們可以在沒有其他圖片或JavaScript時利用CSS檔案來解決這個問題。下面我們就來具體看。

css中:before和:after在實務上的應用講解

開始,我們的標記看起來像這樣

<h2 id="What-nbsp-is-nbsp-CSS">What is CSS?</h2>
<div class="popup">
    Cascading Style Sheets is a style sheet language used for describing
    the presentation semantics of a document written in a markup language.
    </div>
登入後複製

我们左边有一个标题,右边有弹出窗口。我们需要在描述文本的左侧添加这个小箭头指向标题;怎么解决这个问题呢?我们可以使用简单的边框样式制作箭头并将这样的元素附加到弹出窗口中。

h2 {
    float: left;
    width: 170px;
    }
    .popup {
    float: left;
    width: 340px;
    background: #727272;
    padding: 10px;
    border-radius: 6px;
    color: #FFF;
    position: relative;
    font-size: 12px;
    line-height: 20px;
    }
    .popup:before {
    content: "";
    display: block;
    width: 0; 
    height: 0; 
    border-top: 12px solid transparent;
    border-bottom: 12px solid transparent;
    border-right: 12px solid #727272; 
    position: absolute;
    top: 16px;
    left: -12px;
    }
登入後複製

设计不同的标题类型

目前有一个单页网站的项目,项目中有不同部分的标题。每个标题都包含两行。以下是最终设计的样子:

css中:before和:after在實務上的應用講解

这个就是我们利用:before和:after设计出来的:

h2 {
    width: 100%;
    margin: 0;
    padding: 0;
    text-align: center;
    }
    h2:after {
    display: inline-block;
    margin: 0 0 8px 20px;
    height: 3px;
    content: " ";
    text-shadow: none;
    background-color: #999;
    width: 140px;
    }
    h2:before {
    display: inline-block;
    margin: 0 20px 8px 0;
    height: 3px;
    content: " ";
    text-shadow: none;
    background-color: #999;
    width: 140px;
    }
登入後複製

 最后

伪元素:after和:before元素是你可以设置HTML样式而不添加新的DOM节点最好用的方法。

以上是css中:before和:after在實務上的應用講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用GraphQL緩存 使用GraphQL緩存 Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

使用Redwood.js和Fauna構建以太坊應用 使用Redwood.js和Fauna構建以太坊應用 Mar 28, 2025 am 09:18 AM

隨著最近比特幣價格超過20k美元的攀升,最近打破了3萬美元,我認為值得深入研究創建以太坊

用高架創建自己的野蠻人 用高架創建自己的野蠻人 Mar 18, 2025 am 11:23 AM

無論您是開發人員的哪個階段,我們完成的任務(無論大小)都會對我們的個人和專業成長產生巨大影響。

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

比較瀏覽器的響應式設計 比較瀏覽器的響應式設計 Apr 02, 2025 pm 06:25 PM

這些桌面應用程序中有許多目標是同時在不同的維度上顯示您的網站。因此,例如,您可以寫作

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

See all articles