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   閱讀:2415    發布者:2415

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

分析:

需要滿足三個要求:

①兩個盒子在同一行

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

③兩個盒子不能重疊

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

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

方法:

<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人片在线观看无下载 | 56国语精品自产拍在线观看 | 人妻无码中文字幕 | 又爽又黄又无遮挡的视频 | 久久久久久久久久久久亚洲 | 亚洲欧美日韩综合在线一 | 国产综合在线观看 | 国产精品久久久久免费观看 | 伊人天堂午夜精品福利网 | 女生啪啪网站 | 揉搓凸起的花蒂爽尿在线观看 | 九九九热视频 | 国产午夜福利在线观看红一片 | 日本xxxx在线观看 | 四虎网站在线 | 99精品热视频这里只有精品 | 久久男| 综合网婷婷| 久久久久久美女精品啪啪 | 成人网站免费大全日韩国产 | 综合人妻久久一区二区精品 | 亚欧中文字幕 | 色哟哟欧美精品免费视频 | 国产精品乱码久久久久久久久 | 强行糟蹋人妻hd中文 | 亚洲国产综合精品一区 | 精品一区二区三区东京热 | 精品亚洲国产成人av在线时间短的 | 香蕉av在线 | 国产特级毛片aaaaaa | 羞羞影院午夜男女爽爽影院网站 | 精品久久久久久一区二区里番 | 在线观看的网站 | www.7788久久久久久久久 | 亚洲成 人 综合 亚洲欧洲 | 欧美黄色毛片 | 国产精品爽爽va在线观看无码 | 亚洲最大成人综合网720p | 天堂网在线中文 | 日韩黄色小视频 | 欧美成人免费一区二区三区视频 | 黄色资源在线观看 | 小明永久2015xxx免费看视频 | 97婷婷大伊香蕉精品视频 | 欧美视频一二三区 | 国产成人av三级在线观看 | 国产精品乱码一区二三区小蝌蚪 | 日本xxxbbb| 女同性久久产国女同久久98 | 人妻avav中文系列久久 | 精品国产乱码久久久久久免费 | 欧美丰满熟妇乱xxxxx网站 | 精品一卡2卡3卡4卡新区在线 | 日本一本久草 | 高h文h肉h柔佳| 色伊人亚洲综合网站 | 理论片中文 | 91一区二区三区四区 | 2017日日夜夜| а 天堂 在线 | 精品久久久久久久免费人妻 | 日韩欧美一二 | 9999国产| 在线国产91 | 精品国产三级 | 欧美丝袜一区二区三区 | 亚洲啪啪网站 | 国产色婷婷五月精品综合在线 | 大辣椒福利视频导航 | 天天噜 | 韩国毛片视频 | 久久久久波多野结衣高潮 | 国产91在线视频观看 | 国产嫖妓一区二区三区无码 | 日韩天堂 | 久久久夜| 亚洲欧洲自拍拍偷无码 | 夜色资源站www国产在线视频 | 亚洲tv久久爽久久爽 | 日本国产精品视频 | 黑人上司与人妻激烈中文字幕 | 国产成人小说视频在线观看 | 欧美三级 欧美一级 | 亚洲午夜成人av电影 | 国产suv一区二区 | 欧美日韩免费观看视频 | www.久久免费 | av黄在线 | 国产又粗又硬的视频 | 国产亚洲精品欧洲在线观看 |