css實現三列佈局的方法:1、float浮動佈局;2、絕對定位佈局;3、flexbox彈性佈局,存在IE上相容性問題,只能支援IE9以上;4、table表格佈局,不利於搜尋引擎抓取資訊;5、gird網格佈局,相容性差。
本教學操作環境:windows7系統、CSS3&&HTML5版、Dell G3電腦。
三欄佈局,顧名思義就是兩邊固定,中間自適應。三欄佈局在實際的開發十分常見,例如淘寶網的首頁,就是個典型的三欄佈局:即左邊商品導航和右邊導航固定寬度,中間的主要內容隨瀏覽器寬度自適應。
我們不妨假定這樣一個佈局:高度已知,其中左欄、右欄寬度各為300px,中間自適應,可以透過幾種方法來實現?而各自的優缺點是什麼?
一、浮動佈局
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Layout</title> <style media="screen"> html * { padding: 0; margin: 0; } .layout article div { min-height: 150px; } </style> </head> <body> <!--浮动布局 --> <section class="layout float"> <style media="screen"> .layout.float .left { float: left; width: 300px; background: red; } .layout.float .center { background: yellow; } .layout.float .right { float: right; width: 300px; background: blue; } </style> <h1 id="三栏布局">三栏布局</h1> <article class="left-right-center"> <div class="left"></div> <div class="right"></div> // 右栏部分要写在中间内容之前 <div class="center"> <h2 id="浮动解决方案">浮动解决方案</h2> 1.这是三栏布局的浮动解决方案; 2.这是三栏布局的浮动解决方案; 3.这是三栏布局的浮动解决方案; 4.这是三栏布局的浮动解决方案; 5.这是三栏布局的浮动解决方案; 6.这是三栏布局的浮动解决方案; </div> </article> </section> </body> </html>
這種佈局方式,dom結構必須先寫浮動部分,然後再中間區塊,否則右浮動塊會掉到下一行。
浮動佈局的優點就是比較簡單,相容性也比較好。但浮動佈局是有限制的,浮動元素脫離文檔流,要做清除浮動,這個處理不好的話,會帶來很多問題,比如父容器高度塌陷等。
二、絕對定位佈局
<!--绝对布局 --> <section class="layout absolute"> <style> .layout.absolute .left-center-right>div{ position: absolute;//三块都是绝对定位 } .layout.absolute .left { left:0; width: 300px; background: red; } .layout.absolute .center { right: 300px; left: 300px;//离左右各三百 background: yellow; } .layout.absolute .right { right: 0; width: 300px; background: blue; } </style> <h1 id="三栏布局">三栏布局</h1> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h2 id="绝对定位解决方案">绝对定位解决方案</h2> 1.这是三栏布局的浮动解决方案; 2.这是三栏布局的浮动解决方案; 3.这是三栏布局的浮动解决方案; 4.这是三栏布局的浮动解决方案; 5.这是三栏布局的浮动解决方案; 6.这是三栏布局的浮动解决方案; </div> <div class="right"></div> </article> </section>
絕對定位佈局優點就是快捷,設定很方便,而且不容易出問題。缺點就是,容器脫離了文檔流,後代元素也脫離了文檔流,高度未知的時候,會有問題,這就導致了這種方法的有效性和可使用性是比較差的。
三、flexbox佈局
<!--flexbox布局--> <section class="layout flexbox"> <style> .layout.flexbox .left-center-right{ display: flex; } .layout.flexbox .left { width: 300px; background: red; } .layout.flexbox .center { background: yellow; flex: 1; } .layout.flexbox .right { width: 300px; background: blue; } </style> <h1 id="三栏布局">三栏布局</h1> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h2 id="flexbox解决方案">flexbox解决方案</h2> 1.这是三栏布局的浮动解决方案; 2.这是三栏布局的浮动解决方案; 3.这是三栏布局的浮动解决方案; 4.这是三栏布局的浮动解决方案; 5.这是三栏布局的浮动解决方案; 6.这是三栏布局的浮动解决方案; </div> <div class="right"></div> </article> </section>
flexbox佈局是css3里新出的一個,它就是為了解決上述兩種方式的不足出現的,是比較完美的一個。目前行動端的佈局也都是用flexbox。 flexbox的缺點就是IE10開始支持,但是IE10的是-ms形式的。
四、表格佈局
<!--表格布局--> <section class="layout table"> <style> .layout.table .left-center-right { display: table; height: 150px; width: 100%; } .layout.table .left-center-right>div { display: table-cell; } .layout.table .left { width: 300px; background: red; } .layout.table .center { background: yellow; } .layout.table .right { width: 300px; background: blue; } </style> <h1 id="三栏布局">三栏布局</h1> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h2 id="表格布局解决方案">表格布局解决方案</h2> 1.这是三栏布局的浮动解决方案; 2.这是三栏布局的浮动解决方案; 3.这是三栏布局的浮动解决方案; 4.这是三栏布局的浮动解决方案; 5.这是三栏布局的浮动解决方案; 6.这是三栏布局的浮动解决方案; </div> <div class="right"></div> </article> </section>
表格佈局的相容性很好(見下圖),在flex佈局不相容的時候,可以嘗試表格佈局。當內容溢出時會自動撐開父元素。
表格佈局也是有缺陷:①無法設定欄邊距;②對seo不友善;③當其中一個單元格高度超出的時候,兩側的單元格也是會跟著一起變高的,然而有時候這並不是我們想要的效果。
五、網格佈局
<!--网格布局--> <section class="layout grid"> <style> .layout.grid .left-center-right { display: grid; width: 100%; grid-template-columns: 300px auto 300px; grid-template-rows: 150px;//行高 } .layout.grid .left { background: red; } .layout.grid .center { background: yellow; } .layout.grid .right { background: blue; } </style> <h1 id="三栏布局">三栏布局</h1> <article class="left-center-right"> <div class="left"></div> <div class="center"> <h2 id="网格布局解决方案">网格布局解决方案</h2> 1.这是三栏布局的浮动解决方案; 2.这是三栏布局的浮动解决方案; 3.这是三栏布局的浮动解决方案; 4.这是三栏布局的浮动解决方案; 5.这是三栏布局的浮动解决方案; 6.这是三栏布局的浮动解决方案; </div> <div class="right"></div> </article> </section>
CSS Grid是建立網格佈局最強大且最簡單的工具。就像表格一樣,網格佈局可以讓Web設計師根據元素按列或行對齊排列,但他和表格不同,網格佈局沒有內容結構,使各種佈局不可能與表格一樣。例如,一個網格佈局中的子元素都可以定位自己的位置,這樣他們就可以重疊和類似元素定位。
但網格佈局的相容性不好。 IE10 上支持,也只支援部分屬性。
六、總結
1、float佈局是現在用的比較多的佈局很多門戶網站目前使用這個佈局方式,使用的時候只需要注意一定要清除浮動。
2、Position佈局只是根據定位屬性去直接設定元素位置,個人感覺不太適合用做頁面佈局
3、table佈局使用起來方便,兼容性也不存在問題,不利於搜尋引擎抓取資訊
4、flex佈局比較強大,但是還是存在IE上相容性問題,只能支援到IE9以上
5、grid佈局很強大,但相容性很差。
學習影片分享:css影片教學
#以上是css實現三列佈局有哪些方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版