前端效能優化實踐 盡可能多的使用偽元素

2021-09-28 16:50:58 字數 2005 閱讀 8106

以前沒怎麼覺得,但最近頻繁的用div去使用一些「無傷大雅」的分割線、包裹圈之類的東西。今天恰好翻開了曾經學習過的「偽元素」這一章。不覺慚愧,寫此文章記錄一下。

首先,偽元素是乙個元素的子元素,並且是inline行內元素

偽元素最常用的也就before和after兩個。

我們加上之後,在瀏覽器中檢視,發現對於乙個標籤的before成了這個標籤的第乙個子元素,而after成為了它的最後乙個子元素。

但是,偽元素是「偽」的。也就是說,你沒有辦法用js去對它進行增、刪、改、查。

那我們就高興了,因為回想起學js的知識,這就說明:偽元素不屬於html頁面

你可以用偽元素造成視覺上的效果,又不會增加js查詢dom的負擔(也就是說,即使你給頁面加了很多偽元素,也不會影響dom查詢的效率),何樂而不為呢?

偽元素還常被用來「清除浮動」,即我們常說的:父元素clear: both;(雖然這種方法優缺點,但是足夠適合絕大多數適用場景)

如:

.clearfix:after

哦,對了。因為它不是乙個實際的html標籤,還可以加快瀏覽器載入html檔案。(對seo也是有幫助的)

在我所做的專案(前端)中,有一屏我把他設定為「聆聽**」環節,標題中就運用了偽元素:

由於滑鼠移入後會翻轉,所以前後兩條線的位置就 「至關重要」 了。

開始我想到:用前後兩個div,只顯示border-top或border-bottom來達到效果,但是總的來說,不盡如人意。還會增加cssom樹的渲染。

所幸今天翻到了偽元素,對!用偽元素設定後,還可以把中間的div和他們「繫結起來」,有一定的好處。說幹就幹:

<

!doctype html>

"en"

>

"utf-8"

>

3d頭<

/title>

body,figure

.stage

.stage .flipbox

.flipbox .pic

.pic.front

.pic.back

.stage:hover .flipbox

.flipbox:after,

.flipbox:before

.flipbox:after

.flipbox:before

<

/style>

<

/head>

="stage"

>

="flipbox"

>

="pic front"

>music時刻<

/figure>

="pic back"

>此時此刻,非我莫屬<

/figure>

<

/div>

<

/div>

<

/body>

<

/html>其實,兩個偽元素的位置是重點:開始我把left和right都分別設為0,就好玩了:他們兩條線重疊在一起,蓋住後面的字了。搞得我還以為是位置弄錯了。。。(其實都差不多)

<

!doctype html>

"en"

>

"utf-8"

>

驗證偽元素<

/title>

.or.or:after,

.or:before

.or:after

.or:before

<

/style>

<

/head>

="or"

>or<

/p>

<

/body>

<

/html>

猜想不成立。

完!

選擇盡可能多的不相交區間

題目 有n個區間,ai,bi 統計不相交區間最多有多少個?貪心策略 將這n個區間按bi由小到大排序,然後從前向後遍歷,每當遇到不相交的區間就加入目標集合,遍歷完成後就找到了最多的不相交區間。正確性證明 參見 以下是hduoj2037的源 include include include define ...

選擇盡可能多的不相交區間

題目 有n個區間,ai,bi 統計不相交區間最多有多少個?貪心策略 將這n個區間按bi由小到大排序,然後從前向後遍歷,每當遇到不相交的區間就加入目標集合,遍歷完成後就找到了最多的不相交區間。正確性證明 參見 以下是hduoj2037的源 include include include define ...

條款3 盡可能的使用const

const成員函式的一般好處有 使用的過程中應該在const與non const成員函式之間避免 重複 class textblock char operator std size t position private std string text 這樣做可以但是會導致你 較為臃腫,做了很多的重複...