::before和::after偽元素的妙用

来源:https://www.cnblogs.com/thomson-fred/archive/2018/08/04/9418910.html
-Advertisement-
Play Games

場景: 假如有一天,你的在寫一個前端項目,是關於一份點餐商家電話信息表,你啪塔啪塔地寫完了,突然間項目經理跑過來找你,要求你在每一個商家的電話號碼前都添加一個電話符號,來使得電話號碼更直觀和頁面更美觀。這個時候你就糾結了,這不是折磨人嗎?這不是要我在每個電話號碼前都添加一個<img>標簽?這要整到猴 ...


場景:

         假如有一天,你的在寫一個前端項目,是關於一份點餐商家電話信息表,你啪塔啪塔地寫完了,突然間項目經理跑過來找你,要求你在每一個商家的電話號碼前都添加一個電話符號,來使得電話號碼更直觀和頁面更美觀。這個時候你就糾結了,這不是折磨人嗎?這不是要我在每個電話號碼前都添加一個<img>標簽?這要整到猴年馬月?搞不好還會出現標簽浮動的問題。

這個時候::after偽元素和::before偽元素就是救星了,在css中有這麼兩個偽類,允許通添加偽元素在html元素前/後添加內容。

這裡我簡單寫了一個demo

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
.phone-number{
    font-size: 14px;
    font-weight: 600;}

.phone-number::before{
    content: '\260E';
    font-size: 22px;
    color: red;
}
</style>
</head>

<body>
    <div class='phone-number'>&ensp;13300000000</div>
    <div class='phone-number'>&ensp;13300000001</div>
    <div class='phone-number'>&ensp;13300000002</div>
    <div class='phone-number'>&ensp;13300000003</div>
    <div class='phone-number'>&ensp;13300000004</div>
</body>
</html>

實現的效果如下

每一個號碼都有一個class屬性,我只需要對這個class屬性寫一次css渲染層和添增上

:: before偽元素就可以實現這個功能了。顯然這比一個個添加<img>標簽要輕鬆得多。

可能有人會問,這個的符號是怎麼來的?html官方規定了一些特殊符號的unicode碼,具體可以看http://www.cnblogs.com/starof/p/4718550.html

 

下麵是:: before偽元素和:: after偽元素的具體用法和使用規則

(1)content:’()’

作用:在標簽前/後添加字元串

使用規則:content後面一定要用‘’把要添加的內容括起來,否則是無法顯示的(括弧不一定需要添加)。

例如:

在<p>¥80元</p>之後添加如下css裝飾代碼:

p::after{
         content:'門市價100元';
         font-size: 14px;
         text-decoration: line-through;
         color: grey;
}

 

(2)content:url(‘圖片地址’)

作用:在標簽前/後添加圖片(圖片通過網路url實時載入)

使用規則:必須用url()引入需要添加的圖片,道理跟background的設置一樣。圖片的地址也需要用‘’括起來。

例如:

在<div id='yidong-nub'>

<a href='http://www.10086.cn/images/index/logo.png'>&emsp;10086</a>

</div>

添加css裝飾代碼

a::before{
    content:url('http://www.10086.cn/images/index/logo.png');
}

 

(3)清除浮動

::after{

content : ’’ ;

display:block;

}

用法是設置content的為空字元串

關於清除浮動的一些可用方法有很多種,我在這裡就不展開來說了。

 

用人可能會說,用法(1)在p標簽後面添加內容,直接在html代碼裡面的p標簽後面再增加一個p標簽不就行了嗎?為什麼還要用這種方法呢?

可以思考一下,通過在後面添加一個p標簽,同時也需要用css代碼去裝飾這個新添加上去的標簽。顯然,代碼量上,後者比前者多了,而且後者在html中新增了一個DOM節點,如果數量很多時,解析器在解析時難免會增加一定的時間。而前者沒有這種問題,而且還能更好實現表現層和樣式層的分離式開發。

 

最後值得知道的是,使用::before和::after偽元素這種添加內容的方式,只是在css渲染頁面的時候添加上去的,在DOM節點上是查不到這些添加上去的內容的。所以,一般不要添加實際的內容。意味著除了文本內容和圖片/icon之外的html標簽是無法添加進去的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 不知道從什麼時候開始,單頁網站就悄悄走進人們的視線,尤其是國外的網站,更是鐘愛單頁網站.製作一個全屏滾動的效果,然後每個滾動頁弄一個好看的背景色,配上一些描述性的文字,大家都喜歡這麼弄,仿佛逼格瞬間可以爆表似的.當然,不得不承認,介紹產品的頁面用單頁網站似乎確實高大上的多.在站長之家看到一篇文章,讓... ...
  • 本篇目錄: 1.截取指定位元組數的字元串 2.判斷是否微信 3.獲取時間格式的幾個舉例 4.獲取字元串位元組長度 5.對象克隆、深拷貝 6.組織結構代碼證驗證 7.身份證號驗證 8.js正則為url添加http標識 9.URL有效性校驗方法 10.自定義jsonp方法 11.cookie操作 12.生成 ...
  • BFC的概念以及作用 BFC的定義: 直譯為 。它是一個獨立的渲染區域,只有Block level box參與, 它規定了內部的Block level Box如何佈局,並且與這個區域外部毫不相干。 我們常說的文檔流其實分為==定位流、浮動流和普通流==三種。而 其實就是指BFC中的FC。 是`for ...
  • 代碼可以在 https://pan.baidu.com/s/1uN120-18hvAzELpJCQfbXA 處下載 下麵來 移除 廣告元素,在js目錄下,創建一個 removeAds.js, 用來移除網頁中的廣告元素 修改manifest.json 同時, 發現了一個問題,如果打開的是 https: ...
  • 理解好javascript的變數作用域和鏈式調用機制對用好變數起著關鍵的作用,本文來談談這兩個概念。 ...
  • 關於行內元素(補充一點) 行內元素只能容納文本或其他行內元素。(a特殊a裡面可以放塊級元素) 例子: 關於行高tip: 選擇器的嵌套層級不應大於3級,位置靠後的限定條件應儘可能的精確。 屬性定義必須另起一行。 關於行高的測量: css的三大特性(層疊 優先 繼承) a、層疊性:多種css樣式的疊加 ...
  • 使用html5視頻背景 直到現在,仍然不存在一項旨在網頁上顯示視頻的標準。今天,大多數視頻是通過插件(比如 Flash)來顯示的。然而,並非所有瀏覽器都擁有同樣的插件。HTML5 規定了一種通過 video 元素來包含視頻的標準方法。 瀏覽器支持的視頻格式 當前,video 元素支持Ogg,MPEG ...
  • Require.js與Sea.js的區別 相同之處 和 都是模塊載入器,倡導模塊化開發理念,核心價值是讓 JavaScript 的模塊化開發變得簡單自然。 不同之處 兩者的主要區別如下: RequireJS 想成為瀏覽器端的模塊載入器,同時也想成為 Rhino / Node 等環境的模塊載入器。Se ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...