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一免费 | 国产一级一区二区 | 久久精品女人天堂av免费观看 | 国产乱淫av麻豆国产 | 国语自产偷拍精品视频 | 一二三区视频在线观看 | 大肉大捧一进一出好爽动态图 | 精品无码成人久久久久久 | 国产a级全部精品 | 国产第99页 | 撸av| 少妇又色又紧又黄又刺激免费 | 人人澡人人看 | 成人毛片区 | 久久久欧美精品激情 | 色妺妺在线视频 | 国产美女免费网站 | 理论片午午伦夜理片久久 | 天天干夜夜躁 | 亚洲天堂最新地址 | 日韩经典午夜福利发布 | 欧美喷水视频 | 日韩精品首页 | 国产亚洲精品久久久久婷婷图片 | 伊人久久亚洲综合影院首页 | 免费久久99精品国产自在现线 | 精品国产v无码大片在线看 青青青看免费视频在线 | 无码人妻aⅴ一区二区三区日本 | 东北老女人高潮大叫对白 | 看成年女人午夜毛片免费 | 老太婆av | 91在线免费看片 | 中文字幕无码乱码人妻系列蜜桃 | 亚洲欧洲综合有码无码 | ts在线观看 | 狠狠色很很在鲁视频 | 国产美女被遭高潮免费视频 | 亚洲精品久久av无码一区二区 | 秋霞成人午夜伦在线观看 | 91精品国产91 | 国产中文字幕在线视频 | 污漫网站 | 13小箩利洗澡无码视频网站免费 | 成人淫片免费视频95视频 | 女人被做到高潮免费视频 | 蜜臀av夜夜澡人人爽人人 | 饥渴少妇激情毛片视频 | 有码视频在线 | 色噜噜亚洲男人的天堂 | 乱码专区一卡二卡国色天香 | www.精品视频 | 国产人妖视频一区二区, | 88国产精品欧美一区二区三区 | 重口道具调教多人高h虐 | 人妻洗澡被强公日日澡电影 | 免费国产午夜高清在线视频 | 国产欧美日韩va另类影音先锋 | 久热爱精品视频在线◇ | 在线播放午夜理论片 | 国产一区二区精品久久岳 | 91免费国产 | 久久久国产乱子伦精品作者 | 亚洲国产成人精品无码一区二区 | 99ri在线 | 国产精品无码av不卡 | 高潮毛片无遮挡高清免费视频 | 五月丁香国产在线视频 | 国产在线伊人 | 日a在线 | 91伊人久久大香线蕉蜜芽人口 | 酒店大战丝袜高跟鞋人妻 | 亚洲精品视频在线观看免费 | 色夜码无码av网站 | 午夜大片免费男女爽爽影院 | 国产丝袜视频一区二区三区 | 国精产品999一区二区三区有 | 国产精品第一区揄拍 | 丰满少妇理论片 | 日韩日日夜夜 | 999久久欧美人妻一区二区 | 天堂在线最新版www中文 | 亚洲不卡中文字幕 | 玖玖成人 | 亚洲国产精品线久久 | 欧美成人第一页 | 天天天天噜在线视频 | 欧美激情三区 | 狠狠操狠狠插 | 国产av人人夜夜澡人人爽麻豆 | 欧美日韩精品区 | 久久精品久久国产 |