CSS 垂直居中

来源:http://www.cnblogs.com/gao-feng/archive/2017/11/18/7856617.html
-Advertisement-
Play Games

1、使用絕對定位垂直居中 絕對對位原理:元素在過度受限情況下,將margin設置為auto,瀏覽器會重算margin的值,過度受限指的是同時設置top/bottom與height或者left/right與width。 使用絕對定位要求元素必須設置明確高度。內容超過元素高度時需要設置overflow決 ...


1、使用絕對定位垂直居中

  絕對對位原理:元素在過度受限情況下,將margin設置為auto,瀏覽器會重算margin的值,過度受限指的是同時設置top/bottom與height或者left/right與width。

複製代碼
.absolute_center{
                /*display:none;*/
                position:absolute;
                width:200px;
                height:200px;
                top:0;
                bottom:0;
                left:0;
                right:0;
                margin:auto;
                background:#518fca;
                resize:both;/*用於設置了所有除overflow為visible的元素*/
                overflow:auto;
            }
複製代碼

   使用絕對定位要求元素必須設置明確高度。內容超過元素高度時需要設置overflow決定滾動條的出現

  優點:支持響應式,只有這種方法在resize之後仍然垂直居中

  缺點:沒有顯式設置overflow時,內容超過元素高度時會溢出,沒有滾動條

  

   2、負marginTop方式

  已知元素高度後,使用絕對定位將top設置為50%,mergin-top設置為內容高度的一半(height + padding) / 2;內容超過元素高度時需要設置overflow決定滾動條的出現

  原理:top:50%元素上邊界位於包含框中點,設置負外邊界使得元素垂直中心與包含框中心重合;

複製代碼
                .negative_margin_top{
                position:absolute;
                top:50%;
                left:0;
                right:0;
                margin:auto;
                margin-top:-100px; /*-(height+padding)/2*/
                width:200px;
                height:200px;
            }    
複製代碼

   優點:代碼量少、瀏覽器相容性高支持ie6 ie7

  缺點:不支持響應式(不能使用百分比、min/max-width)

 

   3、藉助額外元素floater

   元素高度已知,在center元素外插入一個額外元素floater,設置floater的height為50%;margin-bottom為center元素高度的一半(height + padding) / 2。內容超過元素高度時需要設置overflow決定滾動條的出現。

  原理與2方法類似,floater的下邊界是包含框的中心線,負下外邊界保證center的中心線與包含框中心線重合。

 View Code 複製代碼
            .floater{
                height:50%;
                margin-bottom:-100px;
            }
            .floater_center{
                height:200px;
                width:200px;
                margin:auto;
            }
複製代碼

   優點:瀏覽器相容性好,支持舊版本ie

  缺點:需要額外元素,不支持響應式

 

   4、table-cell方式

  將center元素的包含框display設置為table,center元素的display設置為table-cell,vertical-align設置為middle。

  原理:利用表佈局特點,vertical-align設置為middle後,單元格中內容中間與所在行中間對齊

 View Code 複製代碼
        .container2{
                display:table;
                height:100%;
            }
            .table_cell{/*將cell垂直居中,如果外層div不為table則tablecell必須有高度*/
                display:table-cell;
                vertical-align:middle;
            }
複製代碼

   優點:支持任意內容的可變高度、支持響應式

  缺點:每一個需要垂直居中的元素都會需要加上額外標簽(需要table、table-cell兩個額外元素)

   

  5、inline-block方式

  將center元素display設置為inline-block,vertical-align設置為middle,為包含框設置after偽元素,將偽元素display設置為inline-block,vercial-align設置為middle,同時設置height為100%,撐開容器。

  原理:為同一行的inline-block元素設置vertical-align:middle,該行內的inline-block元素會按照元素的垂直中心線對齊。

 View Code 複製代碼
        .container{
                display:block;
            }
            /*inline-block的前世今生*/
            .container:after{
                content: '';
                display: inline-block;
                vertical-align: middle;
                height: 100%;
            }
            .inline_block{
                display:inline-block;
                vertical-align:middle;
            }
複製代碼

   優點:支持響應式、支持可變高度

  缺點:會加上額外標記

  

  6、line-height方式

  該方式只適用於情況比較簡單的單行文本,將line-height設置與元素高度同高。

  原理:如果line-height高度大於font-size,生於高度瀏覽器會平分到文字上下兩端。

            <div class="single_line">
                其實我們每個人的生活都是一個世界,即使最平凡的人也要為他生活的那個世界而奮鬥。
            </div>
            .single_line{
                  height: 30px;
                  font-size: 14px;
                  line-height: 30px;
                  border: 1px solid #518dca;
            }

   優點:簡單明瞭

  缺點:只適用於單行文本,局限性大

 

  7、彈性盒式佈局

  利用彈性盒式佈局,將字元素的主軸、側軸的排列方式都設置為居中對齊

  原理:使用CSS彈性盒

 View Code 複製代碼
.is-Flexbox {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
          align-items: center;
  -webkit-justify-content: center;
          justify-content: center;
}
複製代碼  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我發現現在很多網站都使用了這種效果,比如說錘子官網、elementui官網、秒味課堂等,不單單有滑鼠跟隨的效果,隨著滑鼠的移動還有視覺差的效果,看起來很高大上的技術,其實實現起來很簡單,主要利用css3的transform-style和persperctive屬性。 廢話不多說直接上代碼: html ...
  • 我兩年的web開發生涯 與以前的文章分享給大家自己的知識和觀點不同,這篇文章更多的是寫給自己的總結。 現在是 2017年10月18. 從 2015年9月 開始接觸前端開發,至今兩年零一個月。 從 2016年3月 入職中油瑞飛從事相關工作,至今一年零七個月。 目前我即將離職,並於下個月加入一點資訊。 ...
  • 以前學習使用vue,axios以及fetch去連接一個介面時遇到一些問題,這些問題都已經解決了,拿出來和大家分享一下。 1、搭建基本項目 http://blog.csdn.net/Small_Lee/article/details/68062223 2、安裝mint ui,vuex npm inst ...
  • 一個是前面提到的可以讀取函數內部的變數,另一個就是讓這些變數的值始終保持在記憶體中。 ...
  • 在閱讀一本HTML5游戲開發相關書籍時發現一個很好的例子,通過這個例子可以對面向對象的開發進行更深入的理解。這個對象要實現的是:將一個CSS sprite中的圖像繪製到canvas中。首先創建一個SpriteSheet對象,代碼如下: var SpriteSheet = new function() ...
  • 隨著互聯網的深入發展,前端開發工程師一躍成為市場上非常搶手的人才。很多同學,包括以前做UI的、Java的、或者對於IT完全零基礎的同學都想學習前端。下圖是網上流傳甚廣的一張前端學習思維導圖,很多初學者表示看到這些密密麻麻的知識點就已經暈了。確實,前端是一門涵蓋面很廣的學科。但是想學前端的你也不用慌張 ...
  • 前面的話 javascript里的關係又多又亂。作用域鏈是一種單向的鏈式關係,還算簡單清晰;this機制的調用關係,稍微有些複雜;而關於原型,則是prototype、proto和constructor的三角關係。本文先用一張圖開宗明義,然後詳細解釋原型的三角關係 圖示 概念 上圖中的複雜關係,實際上 ...
  • 一、變數 二、sass命名時橫杠和下劃線不區分 三、變數中可以套用變數 四、嵌套規則 五·、偽類和直接調用父級符號& 六、sass的導入 七、嵌套導入 八、關於註釋 九、預設變數 十、混合器的使用mixin 十一、混合器mixin傳參數 十二:繼承 十三:占位符 註意:占位符和繼承的區別:以上占位符 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...