這篇文章由Uri Shaked和Michal Porag合著,探討了CSS寬度和高度計算的複雜性。基於對CSS規範的廣泛調試和分析,我們將揭示元素維度通常不預期的行為。
基本概念:
您可以假設設置width: 640px;
和height: 360px;
導致640x360像素元素。但是,添加填充改變了這一點。帶padding: 10px;
,由於默認的content-box
box-sizing
渲染尺寸變為660x380px。框模型計算寬度和高度如下:
-
寬度:
width padding-left padding-right border-left border-right
-
高度:
height padding-top padding-bottom border-top border-bottom
這適用於塊級元素(例如,<div> ,,,,<code><p> ,,,,<code><main></main>
),自然擴展以填充可用的寬度。內聯元素的行為不同。
內聯元素細微差別:
對於內聯元素(例如<span></span>
), width
和height
在很大程度上被忽略;尺寸由內容確定。將塊元素嵌套在內聯元素中會破壞內聯流,從而突出顯示這種區別。內聯元素還無視top
和bottom
邊緣。
親子互動:
親子關係顯著影響維度計算。
相對單位:百分比相對於父元素的維度。
width: 100%;
採用父母的寬度。高度的行為類似。填充和邊距:基於百分比的填充和邊緣始終相對於父母的寬度,即使對於垂直值。儘管現在首選該
aspect-ratio
屬性,但使用此“填充hack”來創建縱橫比框。display: inline
和inline-block
:display: inline;
在display: inline-block;
將內聯行為與塊級框模型計算相結合,尊重margin
,width
和height
。
循環百分比尺寸:
在缺乏聲明寬度的父母中,具有相對寬度的子元素(例如33%
)會產生“環狀百分比尺寸”方案。瀏覽器迭代根據孩子的內容計算父母的寬度,然後將孩子的百分比寬度相對於新計算的父寬度應用。
min-width
, min-height
, max-width
, max-height
:
這些屬性定義了最小和最大尺寸限制。即使具有明確的寬度(例如100%
), max-width
也可以限制元素的大小。交換width
和max-width
值可以在涉及父元素時,尤其是在display: inline-block;
。
min()
, max()
和clamp()
:
這些功能提供了響應式尺寸,而無需媒體查詢:
-
min()
:返回其論點的最低限度。 -
max()
:返回其參數的最大值。 -
clamp()
:min()
和max()
的組合。
這些功能提供了定義響應元素維度的簡潔方法。
結論:
CSS寬度和高度計算非常複雜。雖然指定了明確的值,但渲染尺寸受框模型,元素類型(塊與內聯),親子關係,相對單位和其他因素的影響。了解這些不幸的是精確的佈局控制至關重要。
作者: Uri Shaked和Michal Porag
以上是探索CSS的寬度和高度的複雜性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),