多列布局是從兩列布局引申出來的,所以我們先來看兩列布局
html結構如下所示:
class="parent">
class="left">
leftp>
div>
class="right">
r-leftp>
r-rightp>
div>
div>
這裡的left是定寬,right自適應
.left
.right
我們需要變動一下上面的html結構,在right外套乙個div
class="parent">
class="left">
leftp>
div>
class="right-fix">
class="right">
r-leftp>
r-rightp>
div>
div>
div>
.right-fix
.left
.right
這裡我們讓right-fix
右浮動,這時會使left
和right-fix
處於乙個層上。指定width:100%
讓right
充滿父元素,這時right-fix
會在left
的下方。所以我們需要再指乙個負的margin-left
讓right-fix
覆蓋在left
上面。同時right
指定margin-left
抵消掉right-fix
設定的負的margin。為了讓left
顯示在最上面,需要給left
指定乙個position: relative
。真是夠麻煩的。。。
.left
.right
給乙個塊元素設定了overflow: hidden
會觸發該塊元素的bfc(block formating context)
模式。在這裡,right塊就不會緊貼著它的父元素的左邊框了。所以它會和left左右依次排列。
- 優點:相容性好,只有ie6不支援。設定也比較簡單。
.parent
.left, .right
.left
這種方式採用了**布局。table-cell
布局的元素會左右依次排列。
- 給parent設定width: 100%
是因為預設**布局的寬度是子元素的寬度。
-table-layout
屬性可以提高渲染速度,以布局優先的原則
- 由於table-cell
布局的元素沒法設定margin
,所以邊距需要設定padding
.parent
.left
.right
給right
設定flex: 1
是同時設定了flex-grow
和flex-shrink
都設定為1,這樣以達到自適應。
- 優點:設定簡單,容易理解
- 缺點:flex的相容問題,效能問題
html結構如下所示:
class="parent">
class="left">
leftp>
div>
class="center">
centerp>
div>
class="right">
rightp>
div>
div>
.left, .center
.right
html結構如下所示:
class="parent">
class="left">
leftp>
div>
class="right">
rightp>
div>
div>
和定寬加自適應布局類似,不過這裡的left不知道寬度
不定寬+自適應
布局可以由上面介紹的定寬+自適應
布局引伸過來。這裡需要分析的地方使第二列的樣式是否與第一列的寬度有耦合性。分析如下:
-float+margin
/float-fix
兩種方法第二列需要設定margin
,而margin
的值是根據第一列的寬設定的,所以具有強耦合性,因而不能實現
- 同理float+overflow
可以實現
-table
布局可以實現,但同時需要注意
+.parent
中去掉table-layout
樣式。table-layout
是布局優先,而現在是不定寬。
+left
中新增width: 0.1%
,設定此主要是為了相容性考慮
**如下:
.parent
.left, .right
.left
html結構如下所示:
class="parent">
class="left">
leftp>
div>
class="center">
centerp>
div>
class="right">
rightp>
div>
div>
.left,.center
.right
/* p的寬度即是內容的寬度 */
.left
p,.center
p
.parent
.left,.center,.right
.left,.center
.left
p,.center
p
.parent
.left,.center
.right
.left
p,.center
p
兩列自適應布局
要求 1 兩個盒子在同一行 2 右邊的盒子需要佔滿剩下的空間 3 兩個盒子不能重疊 方式一 左側欄寬度不固定 兩列自適應布局title html,body wrap header container 父元素新增偽元素樣式清除浮動,處理float的子元素無法撐開父元素高度問題 clearfix aft...
三列自適應布局
方法一 float margin main left right 方法二 float bfc main left right 方法三 float 負邊距 relative 這裡和兩列布局有些不同,在兩列布局中,main只需要右移給.left空出位置就可以了,所以給他乙個margin left就能解決...
多textView自適應布局
最近專案遇到乙個獨特需求 如圖,熱搜詞可換,數量不定,不可滑動,如果有超出顯示,則不顯示,就是不能用.如果超出介面,就不顯示這個詞.1.拿到需求的第一反應,用recyleview列表做,簡單嘗試後發現,完全實現不了,因為即使設定recyleview不可滑動,也不能做到超出布局後的不顯示需求,而且完全...