三列布局的聖杯布局和雙飛翼布局的理解與思考

2021-10-05 13:12:05 字數 2696 閱讀 6276

1.dom結構

中間/div>

左邊右邊

定義出整個dom結構,將center放在最上面,以便優先渲染。

2.css**

首先將container盒子內的三個div設定成左浮動,給定左邊盒子寬度200px,右邊盒子寬度200px,中間盒子寬度100%,再加以背景顏色區分。

.container

.container>div

.center

.left

.right

效果圖如下:

可以看到,由於center盒子寬度是100%,所以left盒子和right盒子被擠到第二行了,可以通過margin設定偏移值

.left
不難看出,right盒子只需要減掉其本身寬度的左邊距值

是的,center盒子的寬度依然是100%,只是左邊和右邊被兩個div覆蓋了。所以還需要給左右盒子騰出空間,將container設定左右內邊距值。

再給左右盒子設定相對定位,並給出對於的left值讓它們各自到空白的地方。

.left

.right

下面附完整** 

*

.head

.container

.foot

.container>div

.center

.left

.right

效果如圖

那麼,如果將container設定寬度為100%呢?

根據效果圖可以看出,center盒子布局溢位了,由此可以得出,div設定寬度百分百之後,如果再設定margin和padding,會導致子布局溢位。這裡可以用box-sizing: border-box解決,也就是將內邊距包含在設定的width和height裡面。

.container
之後我又想,可不可以繞過container,直接在center設定padding值或者margin值呢?

理論上是可以的,於是我先嘗試了padding

可以看見,使用了padding,文字內容不被覆蓋,但它padding的部分是會被看做內容覆蓋的。所以只能指望於margin了

1.dom結構

中間			左邊

右邊

2.css**以上說得差不多了,就是在聖杯布局的基礎上,將center盒子用乙個盒子包圍起來,代替他成為浮動元素。給center-box盒子設定寬度,center盒子由於不是浮動的,於是寬度會自動撐開,並且由於左右margin值,給左右留了空白

.center-box

.center

而左右盒子也不用像聖杯布局那樣麻煩。直接設定margin-left的偏移量就行了。

.left

.right

下面直接附整個**

*

.head

.container

.center-box

.foot

.container>div

.center

.left

.right

最後,值得一提的是消除浮動, 以上我由於懶直接設定了個height。消除浮動最常用的有三種方法。

第一種:直接在父元素加overflow:hidden;

第三種:通過:after偽類

.container:after
再次最後,最好給body設定個最小寬度,因為瀏覽器視窗如果過於小的話,會使布局變得很亂。聖杯布局的min-width最好大於左盒子寬度+右盒子寬度+左盒子寬度(因為用到了絕對定位,還得加上中間盒子到零點的距離)。雙飛翼的min-width只需要大於左盒子寬度+右盒子寬度就可以了。

三列布局(聖杯布局和雙飛翼布局)

要求 1.兩邊固定 當中自適應 2.當中列要完整顯示 3.當中列要優先載入 header header content class clearfix middle middle middle middle middle middle middle middle middle left left ri...

三列布局之聖杯布局和雙飛翼布局

簡單理解就是,頁面有三個等高的模組,左右兩個模組寬高固定,中間模組的寬度隨視口的變化而變化。注意點 為了保證中間模組正常顯示,需設定視口最小寬度 要保證中間列優先載入 所以不能單純用浮動解決 在整體布局中,盡量少用絕對定位 html container center center div left ...

布局 聖杯布局 雙飛翼布局

隨著前端技術的發展推進,web端的布局方式已基本成熟,那麼在 布局方式中,三列布局最為常用,布局方式也有很多,漸漸的開發者們開始從效率的角度優化自己的 如果三排布局能將中間的模組放在dom樹前面,那麼瀏覽器在做重繪的時候不久有限顯示了嗎?機制的開發者們開始圍繞者這個方向進行了dom的優化,於是誕生了...