中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS中優先級和Stacking Context等高級特性是什么

發布時間:2020-10-12 14:38:27 來源:億速云 閱讀:232 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關CSS中優先級和Stacking Context等高級特性是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

CSS 優先級

優先級是瀏覽器是通過判斷哪些屬性值與元素最相關以決定并應用到該元素上的。優先級僅由選擇器組成的匹配規則決定的。如果給一個P標簽增加一個類(Class),運行后Class 中的部分屬性并未發生改變,及CSS選擇器存在優先級問題。

選擇符優先級

常見的選擇器種類:

  • 內聯樣式(Inline Style),如<span style="color:black">...</span>;
  • ID選擇符(ID selectors),如#id;
  • Class選擇符(Class),如 .class {...}、[href=‘’]、:hover;
  • 標簽選擇符(Tag),如 p,:before

每一類選擇器的權值不相同,各選擇器的優先級是由權值決定的,

  • 內聯樣式:1,0,0,0
  • ID 選擇符:1,0,0
  • Class 選擇符:1,0
  • Tag選擇符:1

CSS中優先級和Stacking Context等高級特性是什么

來源優先級順序,如圖所示

CSS中優先級和Stacking Context等高級特性是什么

CSS中優先級和Stacking Context等高級特性是什么

樣式系統從最右邊的選擇符開始向左進行匹配規則。只要當前選擇符的左邊還有其他選擇符,樣式系統就會繼續向左移動,直到找到和規則匹配的元素,或者因為不匹配而退出。

CSS 優先級法則:

  1. 選擇器都有一個權值,權值越大越優先;
  2. 當權值相等時,后出現的樣式表設置要優于先出現的樣式表設置;
  3. 創作者的規則高于瀏覽者:即網頁編寫者設置的CSS 樣式的優先權高于瀏覽器所設置的樣式;
  4. 繼承的CSS 樣式不如后來指定的CSS 樣式;
  5. 在同一組屬性設置中標有“!important”規則的優先級最大;

CSS常用模型

盒子模型(Box Model)就是在網頁設計中經常用到的CSS技術所使用的一種思維模型。

CSS中優先級和Stacking Context等高級特性是什么

盒子模型相關CSS屬性元素內容(element content)、寬度及高度(Width/Height)、內邊距(padding)、邊框(border) 和 外邊距(margin) 。

在 CSS 中,width 和 height 指的是內容區域(element)的寬度和高度。增加內邊距、邊框和外邊距不會影響內容區域的尺寸,但是會增加元素框的總尺寸。假設框的每個邊上有 10 個像素的外邊距和 5 個像素的內邊距。如果希望這個元素框達到 100 個像素,就需要將內容的寬度設置為 70 像素。需要的屬性如下:

基本屬性

  • Width/Height
  • Padding
  • Margin
  • Boder
  • Outline
  • 偏移量屬性
    • Top/Left/Bottom/Right
  • 和.NET WinForm的區別:
    • 默認情況下Width/Height不包含Padding
    • Margin/Padding屬性的四個值的順序是top right bottom left (順時針)

所有東西可視為盒子模型

CSS中優先級和Stacking Context等高級特性是什么

縱向Margin合并

如果<p>的縱向margin是12px,那么兩個<p>之間縱向的距離是多少?按常理來說應該是 12 + 12= 24px,但是答案仍然是 12px。因為縱向的margin是會重疊的,大的會覆蓋下的。

CSS中優先級和Stacking Context等高級特性是什么

Position屬性規定元素的定位類型。這個屬性定義建立元素布局所用的定位機制。任何元素都可以定位,不過絕對或固定元素會生成一個塊級框,而不論該元素本身是什么類型。相對定位元素會相對于它在正常流中的默認位置偏移。以下是Posistion屬性取值范圍如下:

    • Static 普通流布局(Normal flow) ,默認值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
    • Relative 支持偏移量屬性的普通流布局 ,生成相對定位的元素,相對于其正常位置進行定位。因此,"left:20" 會向元素的 LEFT 位置添加 20 像素。
    • Absolute 在容器元素內絕對定位的布局 ,生成絕對定位的元素,相對于 static 定位以外的第一個父元素進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。
    • Fixed 在顯示范圍內的絕對定位布局,生成絕對定位的元素,相對于瀏覽器窗口進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規定。

CSS中優先級和Stacking Context等高級特性是什么

Float屬性

float 屬性定義元素在哪個方向浮動。以往這個屬性總應用于圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。

CSS中優先級和Stacking Context等高級特性是什么

Stacking context

提供z-index棧空間特性并影響子元素渲染順序的結構,稱之為stacking context。

CSS中優先級和Stacking Context等高級特性是什么

瀏覽器會給符合下面規則的dom元素分配一個Stacking context。

  • root元素(html)
  • 「已定位」元素(position: absolute or relative)且 指定z-index值非auto的元素
  • flex item且指定z-index值非auto的元素
  • opacity小于1的元素
  • 指定transform值非none的元素
  • 指定mix-blend-mode值非normal的元素
  • 指定filter值非none的元素
  • 指定isolation值為isolate的元素
  • 在will-change屬性上指定值為上述列表任意屬性的元素
  • 指定-webkit-overflow-scrolling值為touch的元素

z-index

CSS中優先級和Stacking Context等高級特性是什么

Stacking order

  • 根據DOM樹結構,具有stacking context的元素會形成一個樹形結構。
  • 一個stacking context中的元素會根據z-index決定疊加順序。z-index大的靠前
  • z-index 0級元素中,有stacking context的元素的疊加順序靠前
  • 以上條件不能區分時,使用DOM樹中的順序決定疊加順序。

CSS中優先級和Stacking Context等高級特性是什么

性能

CSS中優先級和Stacking Context等高級特性是什么

像素渲染流水線

提升性能需要在構造流水線中每個元素都需要注意:

  • Style
    • 降低樣式選擇器的復雜度
    • 減少需要執行樣式計算的元素的個數
  • Layout
    • 盡可能避免觸發布局
      • 幾乎所有的布局都是在整個文檔范圍內發生的。
      • 使用flexbox替代老的布局模型
      • 避免強制同步布局事件的發生
      • 避免快速連續的布局
  • Paint
    • 除了transform和opacity之外,修改任何屬性都會觸發繪制
    • 提升移動或漸變元素的繪制層
    • 減少繪制區域
    • 簡化繪制的復雜度
CSS 選擇器性能
  • 一個選擇器的最右端是這個選擇器的關鍵條件(Key Selector)
  • 瀏覽器按照從右向左的方式匹配選擇器,因此應該將更具體的條件盡可能放在右端。
  • 避免使用*規則
  • 選擇器盡可能短
  • ID選擇符前面不要再加限定符
  • 沒必要用Tag選擇符限定Class選擇符

關于CSS中優先級和Stacking Context等高級特性是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐昌市| 晋州市| 吕梁市| 当涂县| 吉隆县| 湘阴县| 武汉市| 天津市| 慈利县| 太仆寺旗| 武山县| 乌海市| 柳州市| 鄂温| 江山市| 台江县| 怀安县| 锡林郭勒盟| 龙南县| 博湖县| 洛浦县| 通道| 徐汇区| 甘南县| 黄骅市| 平陆县| 时尚| 东乌| 三亚市| 安义县| 来安县| 彭阳县| 汉中市| 汤阴县| 湘西| 宝丰县| 专栏| 桂阳县| 本溪| 满洲里市| 昆明市|