CSS常見布局

目錄

1. 兩欄布局
2. 左右定寬中間自適應(yīng)的三欄布局(圣杯、雙飛翼)
3. 平均布局

1. float左右布局

  • 兩個盒子左右浮動拗慨,形成左右布局芹务,外層盒子添加clearfix類名证杭,解決父元素高度坍塌問題腋妙。
    HTML:
<div class="wrapper clearfix">
    <div class="left"></div>
    <div class="right"></div>
</div>

CSS:

.left {
  float: left;
  background: red;
  width: 200px;
  height: 200px;
}
.right {
  float: right;
  width: 200px;
  height: 200px;
  background: green;
}
.clearfix::after {
  content: '';
  display: block;
}

效果:


image.png

2.(1) 圣杯布局

先構(gòu)建HTML代碼艇抠,將最重要的中間部分放最前面幕庐,最先渲染

  <div class="wrapper clearfix">
    <div class="middle"></div>
    <div class="left"></div>
    <div class="right"></div>
  </div>

CSS方面,先將中間div設(shè)為100%寬度家淤,讓三個div浮動起來异剥,解決父盒子坍塌

.clearfix {
  content: '';
  display: block;
  clear: both;
}
.left, .right, .middle {
  width: 200px;
  height: 200px;
  float: left;
}
.middle {
  width: 100%;
  height: 200px;
  background-color: red;
}
.left {
  background-color: blue;
}
.right {
  background-color: green;
}

目前效果如下:


image.png

接下來就要讓下面的兩個div上來,用我們神奇的負邊距絮重!

.left {
  background-color: blue;
  margin-left: -100%;  /*給left盒子加上100%寬度的負邊距*/
}
.right {
  background-color: green;
  margin-left: -200px;
}

此時的效果:


image.png

冤寿,
中間div可以自適應(yīng)拉伸,但中間的div左右有部分被壓住了青伤,不信你看:"middle"文字不見了督怜!此時就要用到relative定位將left和right分別左右移了

.left {
  background-color: blue;
  margin-left: -100%;
  position: relative;
  left: -200px;
}
.right {
  background-color: green;
  margin-left: -200px;
  position: relative;
  right: -200px;
}

大功告成


image.png

2.(2) 雙飛翼布局

雙飛翼布局和圣杯布局很類似,過程如下:

  1. 首先還是寫一個一樣的HTML結(jié)構(gòu)狠角,三個div浮動号杠,給最外層div清除浮動
  2. 中間部分寬度100%,左右盒子定寬丰歌,給左右盒子設(shè)置負外邊距姨蟋,使其跑上來
  3. 接下來,圣杯布局采取左右盒子relative定位移位的方法立帖,而雙飛翼布局采用在middle盒子中套一個小div眼溶,給這個小div設(shè)置左右margin,達到左右定寬中間自適應(yīng)的效果厘惦。
    貼代碼啦M捣隆Aú尽!
    HTML
  <div class="wrapper clearfix">
    <div class="middle">
      <div class="middle-inner">middle</div>         </div>
    <div class="left">left</div>
    <div class="right">right</div>
  </div>

CSS

* {
  margin: 0;
  padding: 0;
}
.middle-inner {
  margin: 0 200px;
}
.clearfix::after {
  content: '';
  display: block;
  clear: both;
}
.left, .right, .middle {
  width: 200px;
  height: 200px;
  float: left;
}
.middle {
  width: 100%;
  height: 200px;
  background-color: red;
}
.left {
  background-color: blue;
  margin-left: -100%;
}
.right {
  background-color: green;
  margin-left: -200px;
  
}

最終效果:


image.png

3.(1) 平均布局(float)

類似淘寶上的這種就可以用平均布局來做


image.png

過程如下:

  1. 外層盒子固定寬度酝静,子盒子浮動节榜,父盒子清除浮動
  2. 子盒子用百分比寬度(盡量不要寫死)
  3. margin通過calc計算屬性計算得出
    HTML
  <div class="pictures clearfix">
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
    <div class="picture"></div>
  </div>

CSS

.pictures {
  width: 800px;  /*外層盒子寬度定死*/
  margin: 0 auto;
}
.picture {
  width: 23.5%;  /*每個小盒子百分比寬度*/
  padding: 97px 0;
  margin-left: calc(6% / 3);  /*用calc計算剩余寬度*/
  margin-top: 10px;
  background: red;
  float: left;
}
.picture:nth-child(4n+1) {  /*最左邊盒子不要margin*/
  margin-left: 0;
}
.clearfix::after {  /*解決float父級高度坍塌*/
  content: '';
  display: block;
  clear: both;
}

最終效果


image.png

3.2 平均布局(flex)

flex布局就簡單多了,過程如下:

  1. 外層盒子display: flex别智;flex-wrap: wrap宗苍;
  2. 內(nèi)層盒子設(shè)定寬度和高度
  3. calc計算margin(建議不要用space-between)
    CSS
.pictures {
  width: 800px;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
}
.picture {
  width: 23.5%;
  padding: 97px 0;
  margin-left: calc(6% / 3);
  margin-top: 10px;
  background: red;
  float: left;
}
.picture:nth-child(4n+1) {
  margin-left: 0;
}
.clearfix::after {
  content: '';
  display: block;
  clear: both;
}

為何不要用justify-content: space-between?
因為如果用space-between,第二行刪掉一個盒子后薄榛,是這樣的讳窟。。敞恋。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丽啡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子硬猫,更是在濱河造成了極大的恐慌补箍,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啸蜜,死亡現(xiàn)場離奇詭異坑雅,居然都是意外死亡,警方通過查閱死者的電腦和手機衬横,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門裹粤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜂林,你說我怎么就攤上這事遥诉。” “怎么了悉尾?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵突那,是天一觀的道長。 經(jīng)常有香客問我构眯,道長愕难,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任惫霸,我火速辦了婚禮猫缭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壹店。我一直安慰自己猜丹,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布硅卢。 她就那樣靜靜地躺著射窒,像睡著了一般藏杖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脉顿,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天蝌麸,我揣著相機與錄音,去河邊找鬼艾疟。 笑死来吩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蔽莱。 我是一名探鬼主播弟疆,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盗冷!你這毒婦竟也來了怠苔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仪糖,失蹤者是張志新(化名)和其女友劉穎嘀略,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乓诽,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年咒程,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸠天。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡帐姻,死狀恐怖稠集,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饥瓷,我是刑警寧澤剥纷,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站呢铆,受9級特大地震影響晦鞋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棺克,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一悠垛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娜谊,春花似錦确买、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芭商。三九已至,卻和暖如春搀缠,著一層夾襖步出監(jiān)牢的瞬間铛楣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工胡嘿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛉艾,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓衷敌,卻偏偏與公主長得像勿侯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缴罗,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案助琐? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,759評論 1 92
  • 三欄式布局 涉及浮動和清除浮動,主要講解“圣杯”和“雙飛翼”兩種解決方法面氓。這兩種方法實現(xiàn)的都是三欄布局兵钮,兩邊的盒子...
    紫電倚青霜閱讀 2,374評論 0 6
  • 情不知所起,一往而深舌界。生者可以死掘譬,死可以生。生而不可與死呻拌,死而不可復(fù)生葱轩,皆非情之至也。
    CHT閱讀 327評論 0 1
  • 煙花三月天 彈古調(diào) 西湖邊 微漾的波 搖晃時間 堂前舊時燕 惹伊人 輕卷簾 含羞的臉 半遮半掩 誰的三月笛 飄過了...
    王二痞子閱讀 1,088評論 15 24