搜尋
首頁web前端css教學討論CSS中的各類居中方式

今天主要談CSS中的各種居中的辦法。 
首先是水平居中,最簡單的方法當然就是

margin:0 auto;


也就是將margin-left和margin-right屬性設定為auto,從而達到水平居中的效果。

那麼其他的辦法呢?容我一一道來:

line-height

首先介紹文字的水平居中方法:

<div class="wrap">刘放</div>


利用line-height設為height的一樣即可:

.wrap{
  line-height: 200px;/*垂直居中关键*/
  text-align:center;
  
    height: 200px;
  font-size: 36px;
  background-color: #ccc;
}

利用padding和background-clip配合實現div的水平垂直居中:

<div class="parent">
  <div class="children"></div>
</div>
討論CSS中的各類居中方式透過backgroun-clip設定為content-box,將背景裁剪到內容區外沿,再利用padding設為外div減去內div的差的一半,來實現:

.parent{
 margin:0 auto;
 width:200px;
 height:200px;
 background-color:red;
}
.children {
 width: 100px;
 height: 100px;
 padding: 50px;
 background-color: black;
 background-clip:content-box;/*居中的关键*/

效果如下: 

margin填充

接下來介紹margin填充的方式來實現水平垂直居中。

首先我們還是定義父子div:討論CSS中的各類居中方式

 


這裡我們利用將子div的margin-top設定為父div高度減去子div高度的一半,然後再透過overflow設定為hidden來觸發父div的BFC,LESS程式碼如下:

@parentWidth:200px;
@childrenWidth:50px;
.parent {
 margin:0 auto;
 height:@parentWidth;
 width:@parentWidth;
 background: red;
 overflow:hidden;/*触发BFC*/
}
.children {
 height:@childrenWidth;
 width:@childrenWidth;
 margin-left:auto;
 margin-right:auto;
 margin-top: (@parentWidth - @childrenWidth) / 2;
 background:black;
}

最後得到居中效果如下:

absolute absolute搭配top,left 50%,再將margin設為負值也可以對div進行水平垂直居中,首先還是需要定義父子div:

<div class="parent">
  <div class="children"></div>
</div>

然後設定對應的css:

.parent {
 position:relative;
 margin:0 auto;
 width:200px;
 height:200px;
 background-color:red;
}
.children {
 position:absolute; 
 left:50%; 
 top:50%; 
 margin:-25px 0 0 -25px ;
 height:50px;
 width:50px;
 background-color: black;
}
討論CSS中的各類居中方式其中的margin中的值為該div寬度的一半,最後效果圖:

text-align居中

眾所周知,text-align可以使得一個div中的內容水平居中。但是如果是要將該div中的子div居中呢?可以將子div的display設為inline-block。

.parent {
 text-align:center;
 margin:0 auto;
 width:200px;
 height:200px;
 background:red;
}
.children {
 positiona;absolute;
 margin-top:75px;
 width:50px;
 height:50px;
 background: black;
 display:inline-block;/*使其父元素text-align生效*/
}

圖片居中

討論CSS中的各類居中方式一般的圖片居中都是和text-align一樣,將圖片包裝在一個div中,將該div的text-align設為center即可。

可以參考下面的連結: 

個人站點

有一種特殊的方式,利用了一個圖片進行佔位,以讓父容器獲得高寬,從而讓進行-50%偏移的圖片能有一個參照容器作百分比計算。優點是可以不知道圖片的大小,隨便放張尺寸不超過父容器的圖片上去都能做到居中。另外,相容性好,IE6都是能順利相容的。程式碼如下:

<div class="parent">
  <p>
    <img class="hidden-img lazy"  src="/static/imghwm/default1.png"  data-src="http://nec.netease.com/img/s/1.jpg"    alt="" />
    <img class="show-img lazy"  src="/static/imghwm/default1.png"  data-src="http://nec.netease.com/img/s/1.jpg"    alt="" /></p>
</div>
.parent {
 position:relative;
 width:100%;
 height:200px;
 background:red;
}
p {
 position:absolute;
 top:50%;
 left:50%;
}
.hidden-img {
 visibility:hidden;
}
.show-img {
 position:absolute;
 right:50%;
 bottom:50%;
}

效果如下:



transform居中

上面講到的div居中的例子中,div的寬度都是固定的,然而實際項目中,有可能遇到不定寬的div,特別是響應式或是行動端的設計中,更常見。所以下面介紹一種不需要定寬的div水平垂直居中方法。

先上程式碼:

<div class="parent">
  <div class="children">
    <div class="children-inline">我是水平垂直居中噢!</div>
  </div>
</div>
.parent {
 float: left;
 width: 100%;
 height: 200px;
 background-color: red;
}
.children {
 float:left;
 position:relative;
 top:50%;
 left:50%;
}
.children-inline {
 position: relative;
 left: -50%;
 -webkit-transform : translate3d(0, -50%, 0);
 transform : translate3d(0, -50%, 0);
 background-color: black;
 color:white;
}

效果如下:討論CSS中的各類居中方式

首先我們利用float,將需要居中的div的父div也就是children的寬度收縮,然後left:50%,將children的左邊與水平中線對齊。這個時候,還沒有真正居中,我們需要將children-inner左移動-50%,這樣就水平居中了。 
再來說垂直方向,先將children的top設為50%,然後其上邊和垂直中線對齊了,同樣,我們需要將children-inner上移動-50%。但是這個50%是計算不出來的,所以我們用到了transform : translate3d(0, -50%, 0); 

這個方法非常好用噢。

討論CSS中的各類居中方式

flex居中


最後來介紹一下CSS3中的display:flex來實現的水平垂直居中的方法。

<div class="parent">
  <div class="children">我是通过flex的水平垂直居中噢!</div>
</div>
html,body{
 width: 100%;
 height: 200px;
}
.parent {
 display:flex;
 align-items: center;/*垂直居中*/
 justify-content: center;/*水平居中*/
 width:100%;
 height:100%;
 background-color:red;
}
.children {
 background-color:blue;
}

效果如下:


這種方式最為簡便,就是相容性不好,不過隨著時間的前進,各大瀏覽器一定會都相容的。

以上就是討論CSS中的各類居中方式全部內容,希望大家可以喜歡。

討論CSS中的各類居中方式

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
丟失的CSS技巧cohost.org丟失的CSS技巧cohost.orgApr 25, 2025 am 09:51 AM

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

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

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

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

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

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

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

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

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

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

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

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

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具