CSS實現水平垂直同時居中的5種思路

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/04/28/5441210.html
-Advertisement-
Play Games

× 目錄 [1]水平對齊+行高 [2]水平+垂直對齊 [3]margin+垂直對齊[4]absolute[5]flex 前面的話 水平居中和垂直居中已經單獨介紹過,本文將介紹水平垂直同時居中的5種思路 思路一: text-align + line-height實現單行文本水平垂直居中 思路二: te ...


×
目錄
[1]水平對齊+行高 [2]水平+垂直對齊 [3]margin+垂直對齊[4]absolute[5]flex

前面的話

  水平居中垂直居中已經單獨介紹過,本文將介紹水平垂直同時居中的5種思路

 

思路一: text-align + line-height實現單行文本水平垂直居中

<style>
.test{
    text-align: center;
    line-height: 100px;
}
</style>
<div class="test" style="background-color: lightblue;width: 200px;">測試文字</div>   

 

思路二: text-align + vertical-align

【1】在父元素設置text-alignvertical-align,並將父元素設置為table-cell元素,子元素設置為inline-block元素

  [註意]若相容IE7-瀏覽器,將結構改為<table>結構來實現table-cell的效果;用display:inline;zoom:1;來實現inline-block的效果

<style>
.parent{
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}
.child{
    display: inline-block;
}
</style>
<div class="parent" style="background-color: gray; width:200px; height:100px;">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div> 

【2】若子元素是圖像,可不使用table-cell,而是其父元素用行高替代高度,且字體大小設為0。子元素本身設置vertical-align:middle

<style>
.parent{
    text-align: center;
    line-height: 100px;
    font-size: 0;
}
.child{
    vertical-align: middle;
}
</style>
<div class="parent" style="background-color: gray; width:200px; ">
  <img class="child" src="http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/img1.gif" width="50%" alt="test">
</div>  

 

思路三: margin + vertical-align

  要想在父元素中設置vertical-align,須設置為table-cell元素;要想讓margin:0 auto實現水平居中的塊元素內容撐開寬度,須設置為table元素。而table元素是可以嵌套在tabel-cell元素裡面的,就像一個單元格裡可以嵌套一個表格

  [註意]若相容IE7-瀏覽器,需將結構改為<table>結構

<style>
.parent{
    display:table-cell;
    vertical-align: middle;
}
.child{
    display: table;
    margin: 0 auto;
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  

 

思路四: 使用absolute

【1】利用絕對定位元素的盒模型特性,在偏移屬性為確定值的基礎上,設置margin:auto

<style>
.parent{
    position: relative;
}
.child{
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 50px;
    width: 80px;
    margin: auto;
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  

【2】利用絕對定位元素的偏移屬性和translate()函數的自身偏移達到水平垂直居中的效果

  [註意]IE9-瀏覽器不支持

<style>
.parent{
    position: relative;
}
.child{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  

【3】在子元素寬高已知的情況下,可以配合margin負值達到水平垂直居中效果

<style>
.parent{
    position: relative;
}
.child{
    position: absolute;
    top: 50%;
    left: 50%;
    width: 80px;
    height: 60px;
    margin-left: -40px;
    margin-top: -30px;
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  

 

思路五: 使用flex

  [註意]IE9-瀏覽器不支持

【1】在伸縮項目上使用margin:auto

<style>
.parent{
    display: flex;
}
.child{
    margin: auto;
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  

【2】在伸縮容器上使用主軸對齊justify-content和側軸對齊align-items

<style>
.parent{
    display: flex;
    justify-content: center;
    align-items: center;
}
</style>
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
  <div class="child" style="background-color: lightblue;">測試文字</div>
</div>  


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

-Advertisement-
Play Games
更多相關文章
  • 效果:http://hovertree.com/texiao/jquery/61/ jQuery仿阿裡雲購買伺服器選擇時間長度,操作簡單,只需點擊所要選的時間段 代碼: 轉自:http://hovertree.com/h/bjaf/njmbk43d.htm 更多特效:http://www.cnblo ...
  • getElementById():獲取有指定惟一ID屬性值文檔中的元素 getElementsByName(name):返回的是數組 getElementsByTagName():返回具有指定標簽名的元素子元素集合 getAttribute():返回指定屬性名的屬性值 setAttribute(): ...
  • FKP-REST是一套前後端分離,基於javascript的全棧實現,基於node的高性能,易部署性及javascript前後端語言的一致性,學習成本,時間成本及項目快速啟動等等方面,FKP都是一種不錯的解決方案 FED: 前端有完整的腳手架系統,支持代碼的編譯、壓縮、模塊化,及基於Reactjs的 ...
  • 縮略圖組件 縮略圖在網站中最常用的就是產品列表頁面,一行顯示幾張圖片,有的在圖片底下帶有標題、描述內容、按鈕等信息。bootstrap框架將這部分獨立成一個模塊組件,通過類名.thumbnail配合bootstrap的網格系統來實現。下麵是bootstrap縮略圖組件不同版本的源碼文件: LESS ... ...
  • ...
  • 1,Bootstrap 模態對話框和簡單使用 可以使用按鈕或鏈接直接調用模態對話框,這是簡單的用法: 另外,當你需要讓對話框能夠在每次打開時表單數據清空,如下: ...
  • 最近拜讀了曾探所著的《JavaScript設計模式與開發應用》一書,在讀到發佈-訂閱模式一章時,作者不僅給出了基本模式的通用版本的發佈-訂閱模式的代碼,最後還做出了擴展,給該模式增加了離線空間功能和命名空間功能,以達到先發佈再訂閱的功能和防止名稱衝突的效果。但是令人感到遺憾的是最終代碼並沒有給出足夠 ...
  • 目前前端框架太多,接觸過angular、ember,現在開始倒騰vue 此處用到v-if、v-else、v-show,v-if或讓元素不在DOM上,v-show只是改變display:block屬性,感覺v-if好 感覺跟適合、 演示效果:http://wjf444128852.github.io/ ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...