80%的前端大牛都會忽視的CSS小知識

2023-04-19    分類: 網(wǎng)站建設(shè)

有很多開發(fā)者并不怎么關(guān)注 CSS,我想這已經(jīng)不是什么新鮮事了。通過網(wǎng)上的各種對話,或者與朋友和同事聊天的時候你都可以觀察到這個現(xiàn)象。


然而,在社區(qū)中,我們學(xué)到的很多知識都是來自于同伴的分享,有時我會意識到很多關(guān)于 CSS 的基礎(chǔ)知識在社區(qū)中從來沒有被分享過,因為其他人從來不愿意花時間在 CSS 上深究。

為了解決這個問題,我決定對 CSS 做一些研究并整理出一部分概念,我認為這些概念對于更好地理解和編寫 CSS 代碼很有幫助。

在所有的編程語言中都有一些用來描述概念的特定術(shù)語。CSS 作為一門編程語言也是一樣的,了解這些術(shù)語對于溝通交流甚至只是為了提高自己的知識儲備都是很有幫助的。

后代選擇器

你知道樣式選擇器中間的小空格嗎?它實際上還有一個名字,它的名字是后代選擇器。


布局,繪制和渲染層合并

這些術(shù)語更多地和瀏覽器渲染有關(guān),但它仍然很重要,因為一些 CSS 屬性會影響渲染進程的不同步驟。

1. 布局

布局步驟負責(zé)計算元素在屏幕上占用的空間大小。修改 CSS 中的“布局”屬性(例如:寬度、高度)意味著瀏覽器需要檢查其他所有的元素并“重排”頁面,也就是說重新繪制受影響的區(qū)域并將他們合并在一起。

2. 繪制

此過程是為元素的可視化部分(顏色、邊框等)填充像素的過程。繪制元素通常在多個圖層上完成。

改變“繪制”屬性不會影響頁面的布局,所以瀏覽器會跳過布局步驟但仍然會執(zhí)行繪制。

繪制經(jīng)常是整個渲染進程中代價最昂貴的部分。

3. 渲染成合并

在渲染層合并這個步驟中,瀏覽器需要按照正確的順序繪制圖層。因為有一些元素會發(fā)生重疊,所以這個步驟對于確保元素按照預(yù)期順序顯示非常重要。

如果你改變了一個既不需要布局也不需要繪制的 CSS 屬性,那么瀏覽器只需要做渲染層合并操作。

CSS 性能

后代選擇器或許會非常耗能

取決于程序的大小,僅僅使用沒有什么特殊性的后代選擇器代價會非常昂貴。瀏覽器會檢查每個后代元素是否匹配,因為后代這種關(guān)系不僅限于父子之間。

例如:


瀏覽器會評估頁面上的所有鏈接,最終定位到那個實際位于 #nav 元素內(nèi)的鏈接。

一種更高效的方法是在 #nav 元素中的每個 元素上添加一個特定的 .navigation-link 選擇器。

瀏覽器從右到左讀取選擇器

我覺得我應(yīng)該知道這個,因為這個聽起來很重要,但我并不知道……

解析 CSS 時,瀏覽器會從右到左解析 CSS 選擇器。

讓我們看看下面的例子:



采取的步驟如下:

?匹配頁面上的每個 元素。
?找到被
  • 元素包裹的 元素。
    ?使用之前的匹配結(jié)果并將范圍縮小到那些被
  • 成都定制網(wǎng)站網(wǎng)頁設(shè)計
    主站蜘蛛池模板: 老子午夜精品无码| 国产亚洲精久久久久久无码AV| 国产成人无码专区| 无码国内精品久久人妻麻豆按摩 | 人妻少妇看A偷人无码电影| 日韩一区二区三区无码影院| 中文字幕无码不卡免费视频| 日韩中文无码有码免费视频| 久久亚洲精品AB无码播放| 色综合久久久无码中文字幕| 亚洲AV无码AV男人的天堂| 精品无码国产AV一区二区三区 | 国产精品无码无在线观看| 亚洲人AV在线无码影院观看| 亚洲精品无码成人AAA片| 久久亚洲精品无码AV红樱桃| 国产自无码视频在线观看| 色欲aⅴ亚洲情无码AV蜜桃| 无码国产伦一区二区三区视频 | 亚洲日韩精品A∨片无码| 久久AV无码精品人妻出轨| 国99精品无码一区二区三区| 日韩人妻无码一区二区三区| 无码午夜人妻一区二区不卡视频| 无码专区狠狠躁躁天天躁| 中文字幕无码av激情不卡久久| 色综合无码AV网站| 亚洲AV无码专区在线观看成人 | 一本色道久久综合无码人妻 | 精品无码专区亚洲| 亚洲中文字幕无码中文| 91久久九九无码成人网站| 无码少妇一区二区性色AV| 国产成年无码久久久久毛片| 日本爆乳j罩杯无码视频| 国产成人无码av| 亚洲真人无码永久在线| 亚洲国产精品成人精品无码区 | 人妻无码aⅴ不卡中文字幕| 国产精品无码久久久久久久久久 | 无码中文字幕日韩专区视频|