以前沒怎麼覺得,但最近頻繁的用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 這樣做可以但是會導致你 較為臃腫,做了很多的重複...