html元素居中五中方案

2021-10-10 17:38:19 字數 2513 閱讀 9186

在網頁開發中,經常會有巢狀元素中將子元素居中的要求。下邊將五種常用的居中方法進行總結。

1:原始圖(父子元素無border,無padding):

2:實現居中效果:

一:使用margin進行固定長度的偏移

在使用margin進行具體高度的偏移時,需要知道父元素和子元素的具體的寬高尺寸

1:水平方向居中

在進行水平方向上的居中時,可對子元素樣式使用

margin:0 auto;

2:垂直方向居中

在使用margin進行垂直方向上的居中時,至少要滿足三個條件中的一條才能達到垂直居中的效果,否則子元素和父元素會一同被帶下來。這涉及到margin的合併,在我的另一篇部落格《關於盒子模型中margin疊加現象的歸類與思考》中我對這個現象經過查閱資料和實驗做出了個人的推斷理解。三種前提條件分別是:

1.為父元素設定border;

2.為父元素設定padding;

3.在父元素中新增overflow:hidden的樣式。(在標準盒子模型中前兩種會將盒子模型的既定尺寸擴充,在沒必要設定padding和border時不建議使用前兩種方法。)。

/*關鍵樣式***/

#father

#son

分析:對父元素使用overflow:hidden子元素使用margin-top進行下移實現垂直居中。

缺點:在進行垂直居中時你需要明確父元素的height,並且進行計算,如果父元素的高度變了,子元素將不再垂直居中,還要再修改資料,維護性極差。

二;使用絕對定位並進行偏移

1.首先需要將父元素樣式設定position:relative;

2.將子元素樣式設定position:absolute;

3.使用left和top進行定位實現居中;

注意:只有在元素使用position:relative/absolute/fixed才能使用top/left/bottom/right/z-index屬性,同時元素的float,clear會失效。

/*關鍵樣式***/

#father

#son

注意:在使用絕對定位進行百分比偏移時他是將子元素整體偏移到另半邊,而不是將子元素的中軸線對準父元素的中軸線,所以還要使用margin-left:-50px;將子元素的一半偏移回來。

/*優化**(使用css樣式中的計算公式)*/

#son

注意:計算公式中的運算子前後都需要有空格隔開!!!

這裡寫描述

這裡寫描述

缺點:在使用left/top進行偏移50%之後,再使用margin-top/left偏移回子元素的一半。這就需要明白子元素的具體的尺寸,當子元素的尺寸有改變時,布局就會被破壞,維護性也極差。

三:使用絕對定位並margin自適應進行居中

1.首先需要將父元素樣式設定position:relative;

2.將子元素樣式設定position:absolute;

3.將left/top/bottom/right:0;

4.margin:auto;

/*關鍵樣式***/

#father

#son

分析:這種居中方式採用的是流體自適應居中,將left/top/bottom/right四個屬性都設定為0表示子模組相對於四條邊的偏移量都是零,這時再放進去乙個margin:auto;,在滿足前邊四個屬性的條件下進行margin的auto布局,就可以實現垂直居中。

優點:維護性高,不需要知道父子元素的具體尺寸也可以實現居中的效果。

四: 使用table-cell進行居中顯示

/*關鍵樣式***/

#father

#son

分析:將父元素display:設定為table-cell,此時就可以使用vertical-align: middle對內部的子元素進行垂直居中。之後在子元素樣式中使用margin: 0 auto;實現水平居中

注意:父容器的設定display: table-cell;後,如果想要將父容器本身使用margin居中無法達到效果,因為margin對display為table-cell的無效。涉及到table的樣式相對較為複雜,所以不建議使用。

五:使用彈性盒子來實現居中

css3中提供了一種響應式布局的方案:彈性盒子。他可以適應不同螢幕的大小和不同的裝置型別。同時,它也提供了更加有效地方式來對容器的子元素進行排列和對齊,以及分配剩餘空白空間。但是由於現在彈性盒子是css3的新的布局模式,所以有些瀏覽器還沒有相容,需要新增一些瀏覽器字首,以達到相容的效果。

/關鍵樣式**/

#father
分析:設定display為flex,同時在預設情況下flex-direction為row,即主軸線為水平方向,副軸為垂直方向。設定justify-content為center,可以將元素在主軸(水平)方向上居中顯示,設定align-items可以將元素在副軸(垂直)方向上居中顯示。

優點:維護性高,而且彈性盒子可以完成浮動和定位所能達到的效果,而且相當的簡便。

Html 元素水平居中方案總結

先來看我乙個簡單xhtml html檔案 部分 我們的目的是讓 container水平居中。lorem ipsum dolor sit amet,consectetuer adipiscing elit.phasellus varius eleifend.使用自適應邊界 auto margin 水平...

html 元素水平居中方式

本文將簡單敘述元素居中的基本方法。區 1 doctype html 2 html lang en 3 head 4 meta charset utf 8 5 title center title 67 head 8 body 9 h1 style text align center html中元素的...

Html5 CSS之元素的五大居中方式

你是不是也對元素居中的知識點很是模糊?是不是苦於找不到乙個總結的通俗易懂的說明?是不是自己懶得去總結?恭喜你,搜到這篇部落格!這是鄙人在前端的學習與實踐中總結出的元素的五大居中方式,黏貼了 並對 做了解釋,希望對迷茫的有所幫助!下面的居中示例中,統一使用了同乙個div作為父元素和p作為子元素 設定乙...