97免费在线观看视频 I 午夜夫妻视频 I 久久久久久网站 I 天堂网男人 I 欧美大波大乳人奶 I 丝袜 中出 制服 人妻 美腿 I 窝窝午夜理论片影院 I 日韩在线伦理电影 I 韩国特级毛片 I 亚洲欧美另类激情 I 在线成人日韩 I 麻豆视频免费看 I 黄色生活毛片 I 极品一线天小嫩嫩真紧 I 色久天堂 I 久久久久久黄色片 I 林智妍三级露全乳电影视频 I 大肉大捧一进一出好爽视频 I 空乘伦理hd I 少妇口述与子做过爱 I 成人免费影片 I 国产精品国内免费一区二区三区 I 日韩制服一区 I 青青草福利在线 I 日本在线观看不卡视频 I 婷婷六月综合亚洲 I 国产又粗又黄又硬 I 美女扒开屁股让男子桶爽 I 欧美性午夜视频观看 I 欧美狠狠插 I 亚洲福利在线观看视频 I 无码抽搐高潮喷水流白浆 I 亚洲欧美国产日韩色伦 I 你懂的视频网站在线观看 I www.蜜桃视频在线观看 I 日本无码人妻精品一区二区蜜桃 I 久久中文字幕人妻丝袜 I 碰草在线视频 I 日韩精品成人av网站

兩列自適應布局

2016/11/8 8:37:47   閱讀:2292    發布者:2292

隨便拿一個搜索引擎搜索一下"兩列自適應布局",都能得到很多種實現方法,
這篇文章的重點是這些方法的底層邏輯是什么,他們是怎么得來的。

分析:

需要滿足三個要求:

①兩個盒子在同一行

②右邊的盒子需要占滿剩下的空間

③兩個盒子不能重疊

這三個條件又分別有很多種實現方法(不考慮絕對定位):

組合起來,會有很多種實現方式。

方法:

<div class="left"></div> <div class="main"></div>

1、float+block+margin:

.left { 
    float: left; 
    width: 100px; 
} 
.main { 
    margin-left: 110px; 
    width: 100%; 
}

缺點:如果想修改.left的寬度,還需要修改.main 的margin-left。

 

2、float+BFC:

.left { 
    float: left; 
    margin-right: 10px; 
    width: 100px; 
} 
.main { 
    overflow: hidden; //或overflow:auto 
}

優點:可以設置浮動的margin來控制間距,想要修改寬度時只修改寬度就行了。

 

增加條件:

如果需要讓重要的內容先渲染,即HTML結構應該是:

<div class="main"></div> <div class="left"></div>

如果是這樣的話,第一個盒子的寬度必須是100%,因為如果想要同行,他只能是float或是display:inline-block
(不考慮絕對定位),這兩種狀態都需要設置width:100%來做到自適應。

  • 浮動:

如果.main設置float的話,根據浮動流的原理,要讓.main的右邊出現和.left寬度相同或更多的空隙,
才能讓.left到上面一行來,如果要讓.left貼住.main的左邊線,就要制造出和.main自身相等的空隙,
所以需要給.left設置margin-left:-100%;

這時候.left就疊到了.main的上面。如果給.main設置margin-left: 100px,.left還是會疊在
.main上面,因為這時候.main的寬度變小了,.left的負邊距也變小了,所以不管給
.main的margin-left值設置成多大,.left始終會覆蓋住它。

所以,如果想用float+margin讓他們不重疊的話,只能再增加一個盒子,為其設置margin。即:

<div class="main"> <div class="main-content"></div> </div> <div class="left"></div>
.left { 
    margin-left:-100%; 
    height: 400px; 
    display: inline-block;  /*或者 float:left;*/ 
    width: 100px; 
} 
.main { 
    float: left; 
    width: 100%; 
} 
.main-content { 
    margin-left: 110px; 
}

除此之外還剩下兩條路,一個是float+BFC,一個是position:relative。

先看float+BFC,.main是float,但是他已經完全被后面的浮動流蓋住了,所以他無法充當
那個"float",顯然他也無法做那個BFC,所以這條路是走不通的。

然后看position:relative。讓.main右移空出.left的位置,然后用relative將其拉出來,即:

.left { 
    margin-left:-100%; 
    position: relative; 
    left: -110px; 
    display: inline-block;  /*或者 float:left*/ 
    width: 100px; 
} 
.main { 
    margin-left: 110px; 
    float: left; 
    width: 100%; 
}

 

  • display:inline-block;

如果讓.main display:inline-block的話,必須讓當前行盒留出大于.left寬度的空隙,
并且讓.left浮動,他們才可以到一行上去。

想讓當前行盒縮短的話,可以給.main設置左邊或是右邊的負邊距,這會有一個副作用,
就是會讓.main向左或向右移動,所以,只能給他設置左邊的負邊距。

到一行上面之后.main會蓋住.left,這是因為在同一個堆疊上下文中,inline-block會在float的上面,
所以還需要給.left設置position:relative讓他顯示出來。

因為.main已經設置了負的margin-left,所以無法給.left讓出空間,position:relative這條路也是沒法走了。
float+BFC顯然也是行不通。

所以只有一種方法:

<div class="main"> <div class="main-content"></div> </div> <div class="left">/div>
.left { 
    float: left; 
    position: relative; 
    width: 100px; 
} 
.main { 
     display: inline-block; 
     margin-left: -100px; 
    width: 100%; 
} 
.main-content { 
    margin-left: 110px; 
}

 

總結:

從問題出發,結合基礎的知識點,可以得出以下5種實現方式:

 不要求重要內容先渲染的話,可以使用:

1.float+margin

2.float+BFC

要求重要內容先渲染的話,可以:

1.float+relative

2.float+新盒子

3.inline-block+新盒子

除此之外,還有CSS3的flexbox,他的缺點是不兼容低級瀏覽器并且會出現一些bug。

每個方法都有各自的優點和缺點,沒有絕對的好與壞,要使用哪種方式還是要結合具體的需求來決定。

 

主站蜘蛛池模板: 亚洲成人免费视频在线 | 中文字幕久热 | 国内精品久久久久影院优 | 成人区亚洲区无码区在线点播 | 免费岛国av | 国产爆乳无码视频在线观看 | 超碰在线免费 | 成人无码网www在线观看 | 一本色道av久久精品 | 操一操影院 | 欧美激情在线免费观看 | 国产性一交一乱一伦一色一情 | 双腿张开被9个男人调教 | 欧美特大黄 | 亚洲精品tv久久久久久久久久 | 久久caoporn国产免费相关 | 国产成人精品福利一区二区三区 | 久久综合丝袜日本网 | 久久999| 欧美精品一区二区性色a+v | 成人亚洲一区二区三区在线 | 干一夜综合 | 亚洲综合另类小说色区 | 激情网久久 | 成人黄色免费看 | av黄色av | 一级做a爰片毛片视频 | 精品视频一区二区在线 | 欧美人与动牲交欧美精品 | 亚洲视频2 | 尤物福利在线 | 波多野结衣视频在线播放 | 国产主播一区二区三区在线观看 | 欧美天堂在线 | 日产精品无人区 | 欧美成人免费一区二区三区 | 香蕉久久久久 | 国产精品伦一区二区三级视频永妇 | 岛国av免费在线观看 | 四虎国产精品免费久久久 | 鸥美一级片| 美女一级全黄大片 | 中文字幕免费 | 91免费在线| 亚洲成人在线视频播放 | 五月天精品视频 | 久久久午夜精品理论片中文字幕 | 国产精品性视频一区二区 | 九九99热 | 一区二区视频网站 | 中文字幕网站 | 深夜福利一区二区三区 | 卡一卡2卡3卡精品网站 | 天天操天天插 | 国产成人综合一区人人 | 一本色道无码不卡在线观看 | 国产成人精品久久综合 | 免费观看女人高潮视频软件 | 精品一区二区久久久久久久网站 | 丰满少妇作爱视频免费观看 | 国产真实乱偷精品视频 | 亚洲精品女 | 最新日本中文字幕 | 婷婷综合av | 成人无码视频在线观看网站 | 激情超碰在线 | 成人乱人乱一区二区三区软件 | 亚洲欧美一区久久牛牛 | 成人污污网站 | 二区三区在线视频 | 伊人色综合网久久天天 | 国产精品福利在线观看 | 中文字幕激情小说 | 日本色妞 | 天天影视色香欲综合久久 | 国产美女精品人人做人人爽 | 国产日产欧美一区二区三区 | 97久久人澡人人添人人爽 | 久久久网址 | 亚洲精品久久无码av片软件 | 免费欧美成人 | 少妇午夜啪爽嗷嗷叫视频 | 小sao货揉揉你的奶真大电影 | 99精品国产免费观看视频 | 草逼导航| 国产精品成人免费一区久久羞羞 | 精品久久久久久久久久久院品网 | 182午夜视频| 成人影院yy111111 | 国产亚洲精品自在久久蜜tv | 亚洲a片v一区二区三区有声 | 少妇人妻系列无码专区系列 | 中国女人学生69xxx视频 | 欧洲亚洲国产精品 | 国产精品久久久久久久久久直播 | 国产精品77| 亚洲欧洲精品一区二区三区 | 亚洲亚洲人成综合丝袜图片 | 免费国产污网站在线观看 |