免费人妻精品一区二区三区-人人玩人人添人人澡东莞-很黄很色很污18禁免费-视频一区二区三区四区五区-久久99精品久久久久久9-国产97色在线 | 国-伊人七七-已婚少妇美妙人妻系列-欧美俄罗斯乱妇-奇米在线-国产精品99久久精品爆乳-欧美精品乱码视频一二专区-又大又爽又黄无码a片-粉嫩绯色av一区二区在线观看-国产爆乳无码av在线播放

兩列自適應(yīng)布局

2016/11/8 8:37:47   閱讀:2291    發(fā)布者:2291

隨便拿一個(gè)搜索引擎搜索一下"兩列自適應(yīng)布局",都能得到很多種實(shí)現(xiàn)方法,
這篇文章的重點(diǎn)是這些方法的底層邏輯是什么,他們是怎么得來(lái)的。

分析:

需要滿(mǎn)足三個(gè)要求:

①兩個(gè)盒子在同一行

②右邊的盒子需要占滿(mǎn)剩下的空間

③兩個(gè)盒子不能重疊

這三個(gè)條件又分別有很多種實(shí)現(xiàn)方法(不考慮絕對(duì)定位):

組合起來(lái),會(huì)有很多種實(shí)現(xiàn)方式。

方法:

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

1、float+block+margin:

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

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

 

2、float+BFC:

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

優(yōu)點(diǎn):可以設(shè)置浮動(dòng)的margin來(lái)控制間距,想要修改寬度時(shí)只修改寬度就行了。

 

增加條件:

如果需要讓重要的內(nèi)容先渲染,即HTML結(jié)構(gòu)應(yīng)該是:

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

如果是這樣的話(huà),第一個(gè)盒子的寬度必須是100%,因?yàn)槿绻胍校荒苁莊loat或是display:inline-block
(不考慮絕對(duì)定位),這兩種狀態(tài)都需要設(shè)置width:100%來(lái)做到自適應(yīng)。

  • 浮動(dòng):

如果.main設(shè)置float的話(huà),根據(jù)浮動(dòng)流的原理,要讓.main的右邊出現(xiàn)和.left寬度相同或更多的空隙,
才能讓.left到上面一行來(lái),如果要讓.left貼住.main的左邊線(xiàn),就要制造出和.main自身相等的空隙,
所以需要給.left設(shè)置margin-left:-100%;

這時(shí)候.left就疊到了.main的上面。如果給.main設(shè)置margin-left: 100px,.left還是會(huì)疊在
.main上面,因?yàn)檫@時(shí)候.main的寬度變小了,.left的負(fù)邊距也變小了,所以不管給
.main的margin-left值設(shè)置成多大,.left始終會(huì)覆蓋住它。

所以,如果想用float+margin讓他們不重疊的話(huà),只能再增加一個(gè)盒子,為其設(shè)置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; 
}

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

先看float+BFC,.main是float,但是他已經(jīng)完全被后面的浮動(dòng)流蓋住了,所以他無(wú)法充當(dāng)
那個(gè)"float",顯然他也無(wú)法做那個(gè)BFC,所以這條路是走不通的。

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

.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的話(huà),必須讓當(dāng)前行盒留出大于.left寬度的空隙,
并且讓.left浮動(dòng),他們才可以到一行上去。

想讓當(dāng)前行盒縮短的話(huà),可以給.main設(shè)置左邊或是右邊的負(fù)邊距,這會(huì)有一個(gè)副作用,
就是會(huì)讓.main向左或向右移動(dòng),所以,只能給他設(shè)置左邊的負(fù)邊距。

到一行上面之后.main會(huì)蓋住.left,這是因?yàn)樵谕粋€(gè)堆疊上下文中,inline-block會(huì)在float的上面,
所以還需要給.left設(shè)置position:relative讓他顯示出來(lái)。

因?yàn)?main已經(jīng)設(shè)置了負(fù)的margin-left,所以無(wú)法給.left讓出空間,position:relative這條路也是沒(méi)法走了。
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; 
}

 

總結(jié):

從問(wèn)題出發(fā),結(jié)合基礎(chǔ)的知識(shí)點(diǎn),可以得出以下5種實(shí)現(xiàn)方式:

 不要求重要內(nèi)容先渲染的話(huà),可以使用:

1.float+margin

2.float+BFC

要求重要內(nèi)容先渲染的話(huà),可以:

1.float+relative

2.float+新盒子

3.inline-block+新盒子

除此之外,還有CSS3的flexbox,他的缺點(diǎn)是不兼容低級(jí)瀏覽器并且會(huì)出現(xiàn)一些bug。

每個(gè)方法都有各自的優(yōu)點(diǎn)和缺點(diǎn),沒(méi)有絕對(duì)的好與壞,要使用哪種方式還是要結(jié)合具體的需求來(lái)決定。

 

主站蜘蛛池模板: 国产肥白大熟妇bbbb | 国产乱xxxxx国语对白 | 五月婷婷,六月丁香 | 午夜av在线免费观看 | 人人狠狠综合久久亚洲婷婷 | 丰满岳乱妇一区二区三区 | 狠狠色综合网丁香五月 | 99色| 麻豆精品一区二区三区 | 黄色免费网站视频 | 精品欧美乱码久久久久久 | 免费视频成人片在线观看 | 国产内射在线激情一区 | 激情五月激情综合网 | 久久精品国产免费观看三人同眠 | 裸体欧美bbbb极品bbbb | 无码专区久久综合久中文字幕 | 99精品视频99 | 欧美日韩国产三区 | 星空大象mv高清在线观看免费 | 亚洲男人电影天堂无码 | 精品国产电影久久九九 | 97成人碰碰久久人人超级碰oo | 久久精品国产麻豆 | 国产成人精品人人做人人爽 | 亚洲爱情岛论坛永久 | 黄色一级在线 | 国产日韩欧美视频在线观看 | 成人精品av | 国产精品99久久久久久久久久 | 欧美啊v| 一级做a爱 | 亚欧中文字幕久久精品无码 | 狠狠躁日日躁 | 久久久久久久久久久久福利 | 国产精品va在线观看丝瓜影院 | 久久久久国产精品人妻aⅴ武则天 | 久久精品一区二区三区四区 | 国模二区 | 成人av色 | 日本少妇吞精囗交视频 | 夜夜偷天天爽夜夜爱 | 四虎亚洲欧美成人网站 | 国产成人久久久精品二区三区 | 亚洲国产无套无码av电影 | 五月天六月婷婷 | 亚洲精品亚洲人成在线观看下载 | 偷拍激情视频一区二区三区 | 欧美变态另类zozo | 国产色婷婷精品综合在线 | 国产一国产aa毛片 | 国产女人在线视频 | 亚洲精品无码伊人久久 | 91伊人久久 | 天天躁躁水汪汪人碰人 | 国产看片网站 | 国产第一页在线 | av在线播放网站 | 亚洲第一无码精品立川理惠 | 亚洲爱情岛论坛永久 | 18av视频 | 末发育娇小性色xxxx | 国产一区二区无码蜜芽精品 | 亚洲a黄| 精品卡一卡二卡三免费 | 偷自拍亚洲综合在线 | 大片视频免费观看视频 | 亚洲日本黄色 | 97精品一区二区视频在线观看 | 中日黄色片 | 无码毛片视频一区二区本码 | 国产又色又爽又黄的免费软件 | 牲欲强的熟妇农村老妇女视频 | 色av资源| 又黄又猛又爽大片免费 | 真实乱子伦露脸自拍 | 亚洲激情四射 | 亚洲乱码卡一卡二卡新区中国 | 97精品人人a片免费看 | 黑人巨大精品欧美一区二区 | 国产11页| 色猫咪av在线网址 | www.五月婷 | 成人精品免费在线观看 | 视频在线播放 | 嫩草一区二区三区 | 天天综合亚洲 | 亚洲爱爱片 | 操网站| 中文字幕不卡av无码专线一本 | 亚洲国产精品自在拍在线播放 | 男生白内裤自慰gv白袜男同 | 亚洲国产精品久久久久秋霞小说 | 一级美女视频 | 国产精品美女久久久久av超清 | 扒开腿狂躁女人爽出白浆 | 国产精品玩偶在线观看 | wwwwxxxxx日本 | 国产乱码精品一区三上 |