CSS 聖杯佈局 / 雙飛翼佈局的實現

来源:https://www.cnblogs.com/LHLVS/archive/2019/04/15/10709858.html
-Advertisement-
Play Games

工作的越久,有些基礎知識我們可能就逐漸淡忘了,今天我們來回顧一下css的聖杯佈局和雙飛翼佈局, 這兩個名詞你可能不熟, 那三欄佈局你肯定就非常熟悉了, 就是兩邊定寬, 中間自適應 的 佈局 1 , 聖杯佈局 首先HTML結構是這樣的,因為要保證中間的結構先渲染, 所以 center 要放在 最前面 ...


工作的越久,有些基礎知識我們可能就逐漸淡忘了,今天我們來回顧一下css的聖杯佈局和雙飛翼佈局,

這兩個名詞你可能不熟, 那三欄佈局你肯定就非常熟悉了,

就是兩邊定寬, 中間自適應 的 佈局 

1 , 聖杯佈局  

<!--三欄佈局-->
<header>三欄佈局</header>
<div class="container">
    <div class="center column">center</div>
    <div class="left column">left</div>
    <div class="right column">right</div>
</div>
<footer>footer</footer>

首先HTML結構是這樣的,因為要保證中間的結構先渲染, 所以 center 要放在 最前面 。

*{
    margin: 0;
    padding: 0;
}
body{
    min-width: 700px;
}
header , footer{
    background-color: antiquewhite;
    text-align: center;
}
footer{
    clear: both;
}
.container{
    height: 200px;
}
.container .column{
    float: left;
    position: relative;
    height: 100%;
}
.center{
    width: 100%;
    background-color: tomato;
}
.left{
    width: 200px;
    background-color: aqua;
}
.right{
    width: 200px;
    background-color: chartreuse;
}

先讓它們浮動, 並給left 和 right 一個 固定 寬度, center寬度100%,

footer清除浮動流, 結果變成上面這樣  。

然後我們要把 left  和 right 放上去   

先把left 放上去  :

.left{
    width: 200px;
    background-color: aqua;
    margin-left: -100%;
}

加上 一個 margin-left 為  負的自己的寬度  , 變成了這樣:

 

 我們可以看到 center的文字被 left  蓋住了  , 所以給container加一個padding 

.container{
    height: 200px;
    padding: 0 200px;
}

變成了這樣:

由於加了padding, 內容區域變小, left 也跟過來了, 所以要給left設置一個left:

.left{
    width: 200px;
    background-color: aqua;
    margin-left: -100%;
    left: -200px;
}

這樣left 就到最左邊了, center文字也出來了, 同理right

.right{
    width: 200px;
    background-color: chartreuse;
    margin-left: -100%;
    right: -100%;
}

最終效果:

 

2   雙飛翼佈局(始於淘寶的UED)

和聖杯佈局差不多, 不同之處在於它們處理中間部分被兩邊蓋住的方法不同

雙飛翼佈局給center加了一個inner center ,而不是在最外層加container

HTML:

<header>雙飛翼佈局</header>

<div class="center column">
    <div class="inner-center">
        center
    </div>
</div>
<div class="left column">left</div>
<div class="right column">right</div>

<footer>footer</footer>

然後 給 inner-center  加margin  (只列出關鍵代碼) :

.center .inner-center{
    margin-left: 200px;
    margin-right: 200px;
    height: 100%;
    background-color: tomato;
}
.left{
    width: 200px;
    background-color: aqua;
    margin-left: -100%;
}
.right{
    width: 200px;
    background-color: chartreuse;
    margin-left: -200px;
}

最終效果和聖杯佈局一樣。。。。。。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博客園css定製 選擇模板SimplClear 代碼如下: 自學第一周前端,可能有許多不到位之處。請各位大佬指正。。。 參考文獻 1. https://www.cnblogs.com/Penn000/p/6947472.html 2. https://blog.csdn.net/siwuxie095 ...
  • 註:以下屬於個人學習中的理解不能保證全部正確,如果有錯誤以後修正。 1.javascript和c#語言一樣嚴格區分大小寫,有沒有類的概念。 2.所有的變數聲明都使用var,雖然能打出藍色int,但卻不能使用,應該是系統的保留字吧。 3.局部變數有塊域(即花括弧{}),這個域不包含if、for、swi ...
  • function Slider(id){ //屬性 // 1. 通過id獲取元素對象(大盒子) this.bigBox = document.getElementById(id); //2. 獲取出大盒子中的所有圖片(數組) this.ullis = this.bigBox.children[0]. ...
  • [開發技巧]·HTML檢測輸入已完成自動填寫下一個內容 個人網站 --> http://www.yansongsong.cn 在上一個博客中簡易實現檢測輸入已完成,我們實現了檢測輸入已完成,現在我們再進一步,在此基礎上,實現檢測輸入已完成自動填寫下一個內容。當我們需要自動填寫的內容,不希望被更改的時 ...
  • 錯誤原因: 子組件 props -> list 要求接收的數據類型是 Array, 然而實際接收到的是 Undefined。 子組件代碼: 所以檢查父組件傳過來的值,保證傳過來的值是子組件所期望的數據類型即可。 ...
  • //HTML部分 <div class="wrap"></div> <div class="popUpBox"> <div class="layer-head"><div class="layer-head-text">彈出框</div><div class="layer-close"></div> ...
  • pc端個性化日曆實現 技術:vue = v for、slot scop 插槽域 需求:需要實現日曆上每一天動態顯示不同的信息 思路:運用vue 中 slot scop 插槽域的知識點,將個性化的代碼樣式放到slot中 再通過slot scop 獲取這個插槽中的所需數據 一、實現日曆組件 思路:佈局上 ...
  • 原理:通過動態生成canvas然後轉為base64格式 代碼Demo export const waterMark = (text) = { let _wm = document.createElement('canvas') _wm.setAttribute('width',150) _wm.se ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...