在 css 中的流的特性支撐了自適應屬性,類似於水容器中的元素如同水一樣,按照流的方式排布
1、由於 html 符合流的概念(文件流)
2、特殊布局的重建,通過對原有流的破壞,發到應有的效果
3、流向的改變,改變流向影響布局
體現在margin、border、padding、content
盒子模型的四大內容區域的自動分配水平和垂直方向空間
外部屬性和流體特性
尺寸由外部元素決定,也就是外在盒子
1、正常的流寬度,在沒有設定寬度的時候,寬度佔滿容器寬度(content)
2、但是在絕對定位中,會出現格式化寬度(收縮到合適的寬度)
內部屬性與流體特性
尺寸由內部的元素決定,也就是內在的盒子
1、包裹性,也就是說元素被包裹著,始終不能突破外在盒子
2、首選最小寬度,預設就是最小的適合寬度,不同與外部屬性
外在盒子:主要負責元素是否換行的盒子
內在盒子:主要負責元素的寬高、內容的呈現等屬性的盒子
塊級盒子:塊級元素,乙個元素佔一行,不換行,可以設定寬高
注意:block 和塊級元素並不是相等的,塊級元素還包括 item-list,table 等屬性
內聯盒子:內聯元素,在行內顯示,不支援設定寬高,預設的寬高就是文字的寬高
注意:inline 和內聯元素並不是相等的,塊級元素還包括 item-list,table 等屬性
塊級負責結構,內聯負責內容
內在盒子
內在盒子主要又分為四大塊:margin box、border-box、padding box、content box
margin box
並沒有margin-box
的屬性,margin
的背景永遠都是透明的
當margin
設定寬高的時候,對本身的尺寸是不會有所影響的,也就導致不會出現有margin-box
屬性
block
其實是由外在的塊級盒子和內在的塊級容器盒子組成
inline-block
就是外在的內聯盒子和內在的塊級容器盒子組成
也就是這種原因使得inline-block
可以在一行顯示inline
也可以設定寬高block
inline
就是內外都是內聯盒子的
寬高會作用在內在盒子上
寬度作用在content box
上,當給元素設定寬度屬性之後,加上padding
等,盒子變寬就是這個道理
流動性丟失,對於塊級元素當給元素設定了寬度之後,原有的預設的width:auto
屬性失效後,流動性失效
關於height:100%
的問題,當父元素的height:auto
之後,子元素設定高度的百分比是沒有效果的
解決方式:
1、設定顯示的高度值
2、使用絕對定位(絕對定位的寬高百分比是相對padding box
的,但是非絕對定位元素是相對於content box
的)
流體布局下的寬度分離原則
width 屬性不影響padding/border
屬性的情況下分開寫
設定寬度的元素獨佔乙個作用塊,方便維護但是通過padding,border
屬性的變化,達到不修改 width 的效果更佳
顧名思義,就是盒尺寸box-sizing 主要用於改變 width 屬性
預設情況下,width 作用在content-box
上
通常寫 css 的時候,我們會寫box-sizing: border-box
,也就是寬度作用在border-box
上
content box
從寬度值中釋放,和 padding 共同分配 width
1、適用於自適應的流體布局,ie7 支援min-width/max-width
2、初始值的問題,max 系列的初始值是 none,但是 min 系類的初始值是 0
3、關於權值的問題,超越! important
,超越最大
權值是最大的:max-width
會覆蓋 width,儘管有! important
加持
min 屬性會超越 max,min-width
屬性會覆蓋max-width
在 html5 文件宣告中,內聯元素的所有解析和渲染表現就如同每乙個行框盒子前面有乙個「空白節點一樣」
永遠透明,永遠不佔據寬度,無法用指令碼獲取,但是又真正的存在
HTML文件流與元素型別基本介紹
常見預設行元素型別的標籤主要有span strong,em等。其主要特點如下 不可設定元素寬,高相關屬性。預設寬高為自身所包內容的寬高度 高度主要由line height決定 margin外邊距只對左,右,下方向生效。padding內邊距只對左,右方向生效。與其他行元素 包括行內塊元素 在同一行 與...
CSS世界(一)流與元素
流者,動也,切來由 流水落花春去也,天上人間 css的流方向 預設從左至右 從上之下good father son 乙個盒子包裹另乙個盒子,當包裹盒子沒有設定border和padding且div包裹盒子裡沒有內容,裡邊盒子的設定的上邊距不會起作用。css元素分 內聯級元素 和 塊級元素 內聯級元素 ...
CSS文件流與塊級元素和內聯元素
塊元素 block element 一般是其他元素的容器元素 塊元素一般都從新行開始,它可以容納內聯元素和其他塊元素,常見塊元素是段落標籤 p form 這個塊元素比較特殊,它只能用來容納其他塊元素。如果沒有css的作用,塊元素會順序以每次另起一行的方式一直往下排。而有了css以後,我們可以改變這種...