CSS中的float和margin的混合使用示例代碼
在最近的學(xué)習(xí)中,在GitHub上找了一些布局練習(xí),我發(fā)現(xiàn)了我自己對(duì)布局超級(jí)不熟悉(很難受)。
在以前的學(xué)習(xí)中,感覺(jué)使用CSS就記住各個(gè)屬性的功能就OK了,但是呢?真的很打臉。不說(shuō)了,太傷心了,進(jìn)入正題吧!
最近我使用float和margin布局,加深了我對(duì)這兩個(gè)一起使用的理解。(新生可以看一下,大神請(qǐng)忽略)
float屬性
float: left | right | none | inherit
當(dāng)然最常用的還是前面兩個(gè):向左浮動(dòng)和向右浮動(dòng)
浮動(dòng)最主要的特點(diǎn):脫標(biāo)。
脫離標(biāo)準(zhǔn)流,處于更加高級(jí)的層面,影響父元素和后面元素的布局,這里就不具體介紹了。
margin屬性
這里主要講margin-left和margin-right
margin-left: 設(shè)置元素的左外邊距。
margin-right: 設(shè)置元素的右外邊距。
總的來(lái)說(shuō),這個(gè)兩個(gè)屬性的字面理解還是很容易的,但是越簡(jiǎn)單的東西越不要小看。
重點(diǎn)
以下代碼:
html:
<div class="box">
<div class="zi_box1">1</div>
<div class="zi_box2">2</div>
<div class="zi_box3">3</div>
<div class="clear"></div>
</div>
CSS:
.box {
background-color: #555555;
width: 600px;
height: 200px;
}
.zi_box1 {
float: left;
background-color: #c23232;
width: 200px;
height: 100px;
}
.zi_box2 {
float: left;
background-color: chartreuse;
width: 200px;
height: 100px;
}
.zi_box3 {
float: left;
background-color: blue;
width: 200px;
height: 100px;
}
.clear {
clear: both;
}
最后實(shí)現(xiàn)的效果圖:

三個(gè)子盒子充滿父盒子,因?yàn)榈麄儗挾瓤梢栽诟负凶永锩鎿伍_。
如果父盒子撐不開呢?
加大一個(gè)子盒子的寬度,序號(hào)為3的盒子
zi_box3 {
width: 300px;
}
效果圖如下:

那么第三個(gè)盒子則會(huì)另外起一行。
結(jié)合margin使用時(shí)
在第一代碼的基礎(chǔ)上,增加一個(gè)margin值
zi_box1 {
margin-left: 20px;
}
這時(shí)候,由于三個(gè)盒子的寬度加上margin值大于父盒子的寬度,所以盒子3就會(huì)另起一行

反之,給盒子3設(shè)置一個(gè)外邊距的值,盒子1和盒子2不設(shè)置外邊距,是不是盒子3也會(huì)另外起一行呢?答案是肯定的,因?yàn)樗麄兊膶挾纫呀?jīng)超過(guò)父盒子的值了。
實(shí)現(xiàn)三列布局
在不改變DOM的順序的情況下,使盒子3,盒子1,盒子2的順序呢?是不是就可以充分使用margin這個(gè)屬性了。最開始白癡的我(很少練習(xí)布局吧,大神就不要噴我了,我只是個(gè)菜鳥)
白癡代碼
.zi_box1 {
margin-left: 200px;
}
.zi_box2 {
margin-left: 200px;
}
.zi_box3 {
margin0left: -400px;
}
//這里很天真的想法,以為每個(gè)元素是單獨(dú)行動(dòng)
這樣寫的效果圖:

我當(dāng)時(shí)就傻了,這是什么玩意。
但是在最后的摸索中,我知道原因了,最最最最重要的就是DOM的執(zhí)行順序
造成這樣的原因就是:盒子1先解析,margin-left: 200px,那么這樣盒子3也就去了第二行; 再盒子2解析,margin-left:200px,那么盒子2也去了第二行,因?yàn)榈谝恍幸呀?jīng)有600px這么寬的長(zhǎng)度了。最后解析盒子3,margin-left:-400px,盒子向前移動(dòng)400px,不就造成了這樣的效果圖嘛。
這樣想的,就是指考慮片面的,而不是全局的
實(shí)現(xiàn)三列布局的最終代碼
.zi_box1 {
margin-left: 200px;
}
.zi_box2 {
margin-left: 0px;
}
.zi_box3 {
margin0left: -600px;
}
效果圖

可以簡(jiǎn)單的這樣理解
盒子1向右移動(dòng)200px,那么盒子2和盒子3也會(huì)向右移動(dòng)200px,具體的效果圖如下

那么盒子3移動(dòng)到前面去,是不是需要600px的距離啊(是不是很容易懂,嘻嘻),當(dāng)然這只是我的片面理解,也不完全是對(duì)的。
那么float: right和margin-right是一樣的道理。
總結(jié)
到此這篇關(guān)于CSS中的float和margin的混合使用的文章就介紹到這了,更多相關(guān)css float margin混合使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
浮動(dòng)指的是一個(gè)元素脫離文檔流,懸浮在父元素之上的現(xiàn)象。這篇文章給大家介紹css浮動(dòng) float屬性的相關(guān)知識(shí),感興趣的朋友一起看看吧2020-02-24
html/css中float浮動(dòng)的用法實(shí)例詳解
這篇文章主要介紹了html/css中float浮動(dòng)的用法實(shí)例詳解,需要的朋友可以參考下2019-09-10
css float left布局換行不正常問(wèn)題的解決
這篇文章主要介紹了css float left布局換行不正常問(wèn)題的解決的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-06
css 布局 之 兩端布局的實(shí)例代碼 (利用父級(jí)負(fù)的margin)
這篇文章主要介紹了css 布局 之 兩端布局 (利用父級(jí)負(fù)的margin)的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋2020-06-08
這篇文章主要介紹了CCS中的margin:top塌陷問(wèn)題,本文通過(guò)實(shí)例截圖給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-27
css中子元素設(shè)置margin-top為什么影響了父元素
這篇文章主要介紹了css中子元素設(shè)置margin-top為什么影響了父元素,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著2019-05-22
外邊距折疊指的是毗鄰的兩個(gè)或多個(gè)外邊距 (margin) 會(huì)合并成一個(gè)外邊距,本文詳細(xì)的介紹了一下css外邊距折疊的實(shí)現(xiàn),分為3種情況,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-30
CSS 同級(jí)元素position:fixed和margin-top共同使用的問(wèn)題
這篇文章主要介紹了CSS 同級(jí)元素position:fixed和margin-top共同使用的問(wèn)題的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-13
詳解css使既有浮動(dòng)又有左右margin的多個(gè)元素兩端對(duì)其
這篇文章主要介紹了詳解css使既有浮動(dòng)又有左右margin的多個(gè)元素兩端對(duì)其,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-07










