国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我所了解的CSS包含塊

BenCHou / 3605人閱讀

摘要:根元素包含塊根元素的包含塊是一個矩形叫做初始化包含塊。如果屬性是的話,包含塊就是由組成的。示例二代碼在這里,這個標簽為默認的且它的父標簽的為,所以標簽的包含塊為標簽,通過我們的判斷規則一來確定。

寫在前面,本文將同步發布于Blog、掘金、segmentfault、知乎等處,如果本文對你有幫助,記得為我得到我的個人技術博客項目給個star哦。

指出錯誤觀念

許多開發者認為一個元素的包含塊就是他的父元素的內容區,其實這是錯誤的(至少不完全正確)!
一個元素的尺寸和位置經常受其包含塊的影響。大多數情況下,包含塊就是這個元素最近的祖先塊元素的內容區,但也不是總是這樣。
下面我們看看盒模型:
當瀏覽器展示一個文檔的時候,對于每一個元素,它都產生了一個盒子。每一個盒子都被劃分為四個區域:

內容區

內邊距區

邊框區

外邊距區

什么是包含塊?

包含塊有分為根元素包含塊和其他元素的包含塊。

根元素包含塊

根元素html的包含塊是一個矩形,叫做初始化包含塊(initial containing block)。
可以看到html外面還有空間,這個包含html的塊就被稱為初始包含塊(initial containing block),它是作為元素絕對定位和固定定位的參照物。
對于連續媒體設備(continuous media),初始包含塊的大小等于視口viewpor的大小,基點在畫布的原點(視口左上角);對于分頁媒體(paged media),初始包含塊是頁面區域(page area)。初始包含塊的direction屬性與根元素的相同。

其他元素的包含塊

大多數情況下,包含塊就是這個元素最近的祖先塊元素的內容區,但也不是總是這樣,下面就來學習如何確定這些元素的包含塊。

如何確定元素的包含塊?

確定包含塊的過程完全依賴于這個包含塊的 position 屬性,大致分為下列場景:

如果 position 屬性是 static 或 relative 的話,包含塊就是由它的最近的祖先塊元素(比如說inline-block, block 或 list-item元素)或格式化上下文BFC(比如說 a table container, flex container, grid container, or the block container itself)的內容區的邊緣組成的。

如果 position 屬性是 absolute 的話,包含塊就是由它的最近的 position 的值不是 static (fixed, absolute, relative, or sticky)的祖先元素的內邊距區的邊緣組成的。

如果 position 屬性是 fixed 的話,包含塊就是由 viewport (in the case of continuous media) or the page area (in the case of paged media) 組成的。

如果 position 屬性是 absolute 或 fixed,包含塊也可能是由滿足以下條件的最近父級元素的內邊距區的邊緣組成的:

A transform or perspective value other than none
A will-change value of transform or perspective
A filter value other than none or a will-change value of filter (only works on Firefox).

元素包含塊的作用?

元素的尺寸和位置經常受其包含塊的影響。對于一個絕對定位的元素來說(他的 position 屬性被設定為 absolute 或 fixed),如果它的 width, height, padding, margin, 和 offset 這些屬性的值是一個比例值(如百分比等)的話,那這些值的計算值就是由它的包含塊計算而來的。
簡單來說,如果某些屬性被賦予一個百分值的話,它的計算值是由這個元素的包含塊計算而來的。這些屬性包括盒模型屬性和偏移屬性:

height, top, bottom 這些屬性由包含塊的 height 屬性的值來計算它的百分值。如果包含塊的 height 值依賴于它的內容,且包含塊的 position 屬性的值被賦予 relative 或 static的話,這些值的計算值為0。

width, left, right, padding, margin, text-indent(2018-05-27修改)這些屬性由包含塊的 width 屬性的值來計算它的百分值。

下面看些例子

下面示例公用HTML代碼


  

This is a paragraph!

示例一

CSS代碼

body {
  background: beige;
}

section {
  display: block;
  width: 400px;
  height: 160px;
  background: lightgray;
}

p {
  width: 50%;   /* == 400px * .5 = 200px */
  height: 25%;  /* == 160px * .25 = 40px */
  margin: 5%;   /* == 400px * .05 = 20px */
  padding: 5%;  /* == 400px * .05 = 20px */
  background: cyan;
}

在這里,這個P標簽position為默認的static,所以它的包含塊為Section標簽,通過我們的判斷規則一來確定。

示例二

CSS代碼

body {
  background: beige;
}

section {
  display: inline;
  background: lightgray;
}

p {
  width: 50%;     /* == half the body"s width */
  height: 200px;  /* Note: a percentage would be 0 */
  background: cyan;
}

在這里,這個P標簽position為默認的static且它的父標簽Section的display為inline,所以P標簽的包含塊為body標簽,通過我們的判斷規則一來確定。

示例三

CSS代碼

body {
  background: beige;
}

section {
  transform: rotate(0deg);
  width: 400px;
  height: 160px;
  background: lightgray;
}

p {
  position: absolute;
  left: 80px;
  top: 30px;
  width: 50%;   /* == 200px */
  height: 25%;  /* == 40px */
  margin: 5%;   /* == 20px */
  padding: 5%;  /* == 20px */
  background: cyan;
}

在這里,這個P標簽position為absolute且它的父標簽Section的transform不為none,所以P標簽的包含塊為Section標簽,通過我們的判斷規則四來確定。

示例四

CSS代碼

body {
  background: beige;
}

section {
  position: absolute;
  left: 30px;
  top: 30px;
  width: 400px;
  height: 160px;
  padding: 30px 20px;
  background: lightgray;
}

p {
  position: absolute;
  width: 50%;   /* == (400px + 20px + 20px) * .5 = 220px */
  height: 25%;  /* == (160px + 30px + 30px) * .25 = 55px */
  margin: 5%;   /* == (400px + 20px + 20px) * .05 = 22px */
  padding: 5%;  /* == (400px + 20px + 20px) * .05 = 22px */
  background: cyan;
}

在這里,這個P標簽position為absolute且它的父標簽Section的position不為static,所以P標簽的包含塊為Section標簽的padding邊緣算起(前提是不能 box-sizing設置為border-box),通過我們的判斷規則二來確定。

示例五

CSS代碼

body {
  background: beige;
}

section {
  width: 300px;
  height: 300px;
  margin: 30px;
  padding: 15px;
  background: lightgray;
}

p {
  position: fixed;
  width: 50%;   /* == (50vw - (width of vertical scrollbar)) */
  height: 50%;  /* == (50vh - (height of horizontal scrollbar)) */
  margin: 5%;   /* == (5vw - (width of vertical scrollbar)) */
  padding: 5%;  /* == (5vw - (width of vertical scrollbar)) */
  background: cyan;
}

在這里,這個P標簽position為fixed,所以P標簽的包含塊為初始包含塊(viewport),通過我們的判斷規則三來確定。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/116884.html

相關文章

  • 我所知道flex布局 —— 上篇

    摘要:布局也經歷了一段演變歷史。不同于將要出現的網格布局針對目標為大比例布局,彈性盒布局更適用于應用組件和小比例布局。常規布局是基于塊和內聯流方向,而布局是基于流。 前言 你還在用display+position+float來進行css布局嗎?有沒有覺得用傳統的這種布局方法來實現特殊布局特別麻煩困難,例如:垂直居中。今天來記錄一下自己對flex布局的了解(雖然不算神馬新東西了都可以說是舊東西...

    andycall 評論0 收藏0
  • 基礎知識 - 收藏集 - 掘金

    摘要:本文是面向前端小白的,大手子可以跳過,寫的不好之處多多分鐘搞定常用基礎知識前端掘金基礎智商劃重點在實際開發中,已經非常普及了。 JavaScript字符串所有API全解密 - 掘金關于 我的博客:louis blog SF專欄:路易斯前端深度課 原文鏈接:JavaScript字符串所有API全解密 本文近 6k 字,讀完需 10 分鐘。 字符串作為基本的信息交流的橋梁,幾乎被所有的編程...

    wdzgege 評論0 收藏0
  • 翻譯 | 上手 Webpack ? 這篇就夠了!

    摘要:最后,我們在控制臺中打印這個新數組。也可以借助簡單的將其跑在瀏覽器上,之后可在控制臺中看到同樣的運行結果。使用配置文件雖然會更占位置,但與此同時增加了可讀性,因為它是由寫成的。例如,規定后綴的文件要先通過檢查,再通過把語法轉換為語法。 譯者:小 boy (滬江前端開發工程師) 本文原創,轉載請注明作者及出處。 原文地址:https://www.smashingmag...

    codercao 評論0 收藏0
  • 我所理解簡單項目結構

    摘要:將圖片都放入文件夾下指定公共的名字。匹配刪除的文件根目錄開啟在控制臺輸出信息啟用刪除文件插入開關說一些可能沒用的站在前端角度不懂的很多很多時候一個項目都是由一個小組完成的,小組成員可能包括產品,前端,后端,測試,運營等等。 不急,先聽我嘮會嗑~ 隨著js發展的如此迅速,市場上越來越多的前端框架可以方便開發者使用。 本人大四渣渣一名,先后實習了兩個地方,第一家公司用vuejs,實話...

    _DangJin 評論0 收藏0
  • bfc初探

    摘要:初探什么是全稱是塊級格式化上下文,是可視化渲染的一部分,它是塊級盒子的布局發生,浮動互相交互的部分。可以把父元素設置成這樣可以使這個元素包含其浮動子元素。而浮動元素本身是脫離文檔流的,非元素的高度計算是不會把浮動元素計算在內。 bfc初探 什么是bfc bfc全稱是塊級格式化上下文(block formating context),是web可視化css渲染的一部分,它是塊級盒子的布局發...

    yzd 評論0 收藏0

發表評論

0條評論

BenCHou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<