css【詳解】—— 圣杯布局 vs 雙飛翼布局 (含手寫清除浮動 clearfix)

兩者功能效果相同,實現方式不同

效果預覽

在這里插入圖片描述

  • 兩側寬度固定,中間寬度自適應(三欄布局)
  • 中間部分優先渲染
  • 允許三列中的任意一列成為最高列

圣杯布局

通過左右欄填充容器的左右 padding 實現,更多細節詳見注釋。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>css 圣杯布局</title><style>body {/* 清除瀏覽器默認樣式 */margin: 0;/* 設置最小寬度 */min-width: 550px;}.header {background-color: gray;height: 40px;}.container {/* 圣杯布局 -- 通過 padding 實現 */padding-left: 200px;padding-right: 150px;}.center {/* center寬度自適應 */width: 100%;float: left;background-color: yellow;height: 100px;}.left {width: 200px;float: left;margin-left: -100%;position: relative;right: 200px;background-color: blue;height: 100px;}.right {width: 150px;float: left;margin-right: -150px;background-color: red;height: 100px;}.footer {/* 清除浮動 */clear: both;background-color: gray;height: 40px;}</style></head><body><div class="header">header</div><div class="container"><!-- center 置于 left 和 right 的上方,用于優先渲染頁面主體內容 --><div class="center">center</div><div class="left">left</div><div class="right">right</div></div><div class="footer">footer</div></body>
</html>

雙飛翼布局

通過左右欄填充主體內容的左右 margin 實現,更多細節詳見注釋。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>css 雙飛翼布局</title><style>body {/* 清除瀏覽器默認樣式 */margin: 0;/* 設置最小寬度 */min-width: 550px;}.header {background-color: gray;height: 40px;}.container {/* 自適應寬度 */width: 100%;/* 左浮動 */float: left;}.center {/* 雙飛翼布局 -- 通過 margin 留白實現 */margin-left: 200px;margin-right: 150px;background-color: yellow;height: 100px;}.left {width: 200px;/* 左浮動 */float: left;/* 自身向左移動父元素(此處為body)寬度的 100% */margin-left: -100%;background-color: blue;height: 100px;}.right {width: 150px;/* 左浮動 */float: left;/* 自身向左移動 150px */margin-left: -150px;background-color: red;height: 100px;}.footer {/* 清除浮動 */clear: both;background-color: gray;height: 40px;}</style></head><body><div class="header">header</div><div class="container"><!-- center 置于 left 和 right 的上方,用于優先渲染頁面主體內容 --><div class="center">center</div></div><!-- left 置于 container 外面 --><div class="left">left</div><!-- right 置于 container 外面 --><div class="right">right</div><div class="footer">footer</div></body>
</html>

手寫清除浮動 clearfix

/* 手寫 clearfix */
.clearfix:after {content: "";display: table;clear: both;
}
.clearfix {*zoom: 1; /* 兼容 IE 低版本 */
}

用在類似圣杯布局的容器上,footer 不再需要 clear: both;

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>css 圣杯布局</title><style>body {/* 清除瀏覽器默認樣式 */margin: 0;/* 設置最小寬度 */min-width: 550px;}.header {background-color: gray;height: 40px;}.container {/* 圣杯布局 -- 通過 padding 實現 */padding-left: 200px;padding-right: 150px;}.center {/* center寬度自適應 */width: 100%;float: left;background-color: yellow;height: 100px;}.left {width: 200px;float: left;margin-left: -100%;position: relative;right: 200px;background-color: blue;height: 100px;}.right {width: 150px;float: left;margin-right: -150px;background-color: red;height: 100px;}.footer {/* 清除浮動 *//* clear: both; */background-color: gray;height: 40px;}/* 手寫 clearfix */.clearfix:after {content: "";display: table;clear: both;}.clearfix {*zoom: 1; /* 兼容 IE 低版本 */}</style></head><body><div class="header">header</div><div class="container clearfix"><!-- center 置于 left 和 right 的上方,用于優先渲染頁面主體內容 --><div class="center">center</div><div class="left">left</div><div class="right">right</div></div><div class="footer">footer</div></body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713456.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713456.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713456.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《無線網絡技術》考試版筆記

第一章 無線網絡介紹 什么是多徑效應&#xff0c;如何去克服&#xff1a; 在發射機和接收機之間沒有明顯的直線路徑時&#xff0c;就會產生多徑傳播。如果兩個信號彼此疊加&#xff0c;那么接收設備就無法正確解調信號&#xff0c;無法還原為它的原始數據形式。 可以稍微調整接…

【leetcode熱題】求根到葉子節點數字之和

難度&#xff1a; 中等通過率&#xff1a; 40.6%題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 題目描述 給定一個二叉樹&#xff0c;它的每個結點都存放一個 0-9 的數字&#xff0c;每條從根到葉子節點的路徑都代表一個數字。 例如&#xff0c;從根到葉子…

Linux包管理dpkg、apt和snap

dpkg、apt和snap都是Ubuntu系統中用于軟件管理的工具&#xff0c;但它們在功能和使用上有一些區別。 dpkg: dpkg是Debian包管理系統的底層工具&#xff0c;也是apt和其他高級包管理工具的基礎。主要功能是用于安裝、卸載、配置和構建Debian軟件包&#xff08;.deb文件&#xff…

vue面試題:Computed 和 Watch 的區別?

Computed 和 Watch 的區別? 對于Computed&#xff1a;對于Watch&#xff1a;immediate&#xff1a;組件加載立即觸發回調函數deep&#xff1a;深度監聽&#xff0c;發現數據內部的變化&#xff0c;在復雜數據類型中使用&#xff0c;例如數組中的對象發生變化。需要注意的是&am…

USLE模型-LS因子的計算

目錄 計算坡度計算填洼計算流向計算水流長度計算水平投影![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/75e015b2d6874ce9b6652f2b8730b90f.png)計算可變的坡度指數m計算坡長因子L計算坡度因子S計算LS因子參考視頻 計算坡度 準備好30米分辨率的dem 計算填洼 計…

速看!深夜悄悄分享一個電力優化代碼集合包!

代碼集合包如下&#xff1a; 主從博弈的智能小區定價策略及電動汽車調度策略 碳交易機制下的綜合能源優化調度 兩階段魯棒優化算法的微網多電源容量配置 冷熱電多能互補綜合能源系統優化調度 考慮預測不確定性的綜合能源調度優化 考慮柔性負荷的綜合能源系統低碳經濟優化調度 考…

MySQL深入——24

Join語句到底可不可用 join語句用于兩個或多個表當中檢索數據。 INNER JOIN或者JOIN 當兩個表當中有匹配的值時&#xff0c;返回行 LEFT JOIN或者LEFT OUTER JOIN 返回所有左邊的行&#xff0c;即使右表當中沒有相匹配的行 RIGHT JOIN或者RIGHT OUTER JOIN 返回所有右邊的…

整數的分離與合成

整數是由數字和數位組成的&#xff0c;比如327是一個三位數&#xff0c;它的數字是3、2、7,數位是個數、十位、百位。 經常有些題目考查將一個整數拆分成各個數字&#xff0c;以及將各個數字合成一個整數&#xff0c;下面分別就此討論。 注&#xff1a;只考慮正整數&#xff…

C語言學生成績信息管理系統【結構體+文本】

功能描述&#xff1a; 1、錄入成績 2、顯示不及格學生信息 3、統計每檔學生數量 4、總成績統計 代碼&#xff1a; #include<stdio.h>#define N 30//結構體&#xff1a;typedef struct STUDENT{char id[10];//學號char name[20];//姓名float score[3];//三門成績,分別代…

Socket網絡編程(四)——點對點傳輸場景方案

目錄 場景如何去獲取到TCP的IP和Port&#xff1f;UDP的搜索IP地址、端口號方案UDP搜索取消實現相關的流程&#xff1a;代碼實現邏輯服務端實現客戶端實現UDP搜索代碼執行結果 TCP點對點傳輸實現代碼實現步驟點對點傳輸測試結果 源碼下載 場景 在一個局域網當中&#xff0c;不知…

生成式人工智能治理:入門的基本技巧

GenAI 以前所未有的速度調解并擾亂了“一切照舊”&#xff0c;同時帶來了令人難以置信的力量&#xff0c;但也帶來了不可否認的責任。當然&#xff0c;現代企業非常熟悉技術進步。然而&#xff0c;人工智能的到來&#xff08;和實施&#xff09;無疑引起了相當大的沖擊&#xf…

C# 12 中的新增功能

本文內容 主構造函數集合表達式ref readonly 參數默認 Lambda 參數 顯示另外 5 個 C# 12 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 8 SDK 嘗試這些功能。 主構造函數 - 在 Visual Studio 2022 版本 17.6 預覽版 2 中引入。 集合表達式 - 在 Visu…

ThreeJs同一個場景多個相機的顯示

在threeJs開發數字孿生中&#xff0c;我們正常是需要使用一個相機&#xff0c;畫面顯示的內容也就是這個相機拍攝到的內容&#xff0c;但是是否可以添加多個相機&#xff0c;可以同時從不同角度觀察模型呢&#xff0c;實際上是可以的&#xff0c;不過多個相機的拍攝到的畫面肯定…

Linux uname命令教程:了解系統信息和配置(附實例詳解和注意事項)

Linux uname命令介紹 uname&#xff08;Unix Name&#xff09;命令用于顯示系統信息&#xff0c;包括內核名稱、網絡節點名稱、操作系統名稱、版本號、硬件名稱和處理器類型。它是一個基本的系統管理工具&#xff0c;通常用于識別系統配置。 Linux uname命令適用的Linux版本 …

Linux服務:Nginx反向代理與負載均衡

一、Nginx反向代理 1、什么是反向代理&#xff1f; 代理分為兩類&#xff0c;正向代理和反向代理。 ①正向代理&#xff1a;幫助用戶訪問服務器&#xff0c;緩存服務器內容。 ②反向代理&#xff1a;代理服務器處理用戶的請求&#xff0c;決定轉發請求給誰處理負載均衡的作…

Go 與 Rust:導航編程語言景觀

在當今構建軟件時&#xff0c;開發者在編程語言上有著豐富的選擇。兩種脫穎而出的語言是 Go 和 Rust - 都很強大但卻截然不同。本文將從各種因素比較這兩種語言&#xff0c;以幫助您確定哪種更適合您的需求。 我們將權衡它們在并發、安全性、速度、互操作性等方面的方法。我們將…

Ubuntu篇——crontab修改編輯器

輸入命令: crontab -e 如果你的系統是第一次使用crontab服務&#xff0c;會首先讓你選擇一個編輯器 如果已經選擇過編輯器&#xff0c;后續想要修改默認編輯器&#xff0c;可以輸入sudo select-editor進行修改。

【GPU驅動開發】-GPU架構簡介

前言 不必害怕未知&#xff0c;無需恐懼犯錯&#xff0c;做一個Creator&#xff01; GPU&#xff08;Graphics Processing Unit&#xff0c;圖形處理單元&#xff09;是一種專門用于處理圖形和并行計算的處理器。GPU系統架構通常包括硬件和軟件層面的組件。 一、總體流程 應…

Node.js基礎---Express中間件

1. 概念 1.什么是中間件 中間件(Middleware)&#xff0c;特指業務流程的中間處理環節 2. Express 中間件的調用流程 當一個請求到達 Express 的服務器后&#xff0c;可以連續調用多個中間件&#xff0c;從而對這次請求進行預處理 3. Express 中間件格式 Express 的中間件&…

每周一算法:雙端隊列廣搜

題目鏈接 電路維修 題目描述 達達是來自異世界的魔女&#xff0c;她在漫無目的地四處漂流的時候&#xff0c;遇到了善良的少女翰翰&#xff0c;從而被收留在地球上。翰翰的家里有一輛飛行車。有一天飛行車的電路板突然出現了故障&#xff0c;導致無法啟動。 電路板的整體結…