這篇文章主要為大家詳細介紹了css讓容器水平垂直居中的7種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這種css佈局平時用的比較多,也是面試題常出的一個題,網路上一搜一大丟,不過還是想自己總結一下。
這種方法比較多,本文只總結其中的幾種,以便加深印象。
效果圖都為這個:
方法一:position加上margin
XML/HTML Code複製內容到剪貼簿
#<p #class ="wrap">
<#p class="center">p>
p> #CSS Code複製內容到剪貼簿 /**CSS**/ .wrap { width height: 200px; #background : yellow; position: relative; } .wrap .#center { width: 100px; height: 100px; background: green##; margin: auto; position left #right top: 0; #bottombottom #} 相容性:主流瀏覽器皆支持,IE6不支援 XML/HTML Code複製內容到剪貼簿 #<##p# class# #"wrap">
<p class= "center"
>
p>
### ############################ #############CSS Code######複製內容到剪貼簿#################/*&/ ### .wrap{ ###width###: ###200px###; ###height###: ###200px####; ###background###: ###yellow ###; ###display###: ###table-cell###; ###vertical-align###: ###middle###; ####text-align###: ###center###; ####} .center{ display#: inline-block; #vertical-align: middle; width: 100px; height: 100px; background# : green;
}
方法三:position加transform
XML/HTML Code複製內容到剪貼簿
#
<p class="wrap">
<p class="center"> p>
#p>
#CSS Code複製內容到剪貼簿
/* css */ .wrap { #position: relative; background: yellow; width: 200px; height: 200px;} .center { position: absolute; background##: green; green; # top:50%; left:50%; -webkit-transform:translate(-50%,-50%); transform:translate(-50%,-50%); width
:height
:相容性:ie9以下不支援transform,手機端表現的比較好。
flex;align-items: center;justify-content: center
複製內容到剪貼簿
<p
class#> <#p class="center"#>
> ##
####################################################。 p######>### ############ #########################CSS Code ######複製內容到剪貼簿######
/* css */ .wrap { background: yellow; width: 200px; height: 200px; display: flex; align-items: center; -content: center;
center { #background: green; width: 100px; height: 100px;
方法五:display :flex;margin:auto
#XML/HTML Code複製內容到剪貼簿
#
<#p class="wrap">
#<# #p class="center">p> ;
#p>
#CSS Code#複製內容到剪貼簿
.wrap { background: yellow; width: 200px#; height:
; display: flex; } .center { #background: green; width: 100px; height:
100px:
auto移動端首選
方法六:
複製內容到剪貼簿
# <
## p
class<#p class
=###"center"######>###########p###### >### #####################p######>### ######################################################################## ### ########################CSS Code#######複製內容到剪貼簿######/* css */ .wrap { background: yellow; width: 200px; height: 200px; position: relative;
#} /**方法一**/ .center { background: green; position#: # absolute; width: 100px; height: 100px#; left:
#如果111 ##; top: 50px; #} /** 方法二**/ .center { background: green
;absolute
;100px
;100px
;left
##: 50%;
top
#: 50%;
margin-left
:-
50px
;
:-50px;
}
#相容性:適用於所有瀏覽器方法六中的方法一計算公式如下:
子元素(conter)的left值計算公式:left=(父元素的寬- 子元素的寬) / 2=(200-100) / 2=50px;left值固定為50%; 子元素的margin-left= -(子元素的寬/2)=-100/2= -50px;top值也是一樣,固定為50%子元素的margin-top= -(子元素的高/2)=-100/2= -50px;#方法七:相容於低版瀏覽器,不固定寬高
XML/HTML Code複製內容到剪貼簿
#<##p# class# #"table"> # <
"tableCell">
##ofclass##<p
#class#1 #=>不固定寬高,自適應
p
> ############################ #######p######>### ############ ################################################################# ########CSS Code######複製內容到剪貼簿##################/*css*/### .table { ###height###: ###200px###;###/*高度值不能少*/### ###width###: ###200px###;###/ *寬度值不能少*/### ###display###: table; ###position###: ###relative###; ###float####:###left## #; ###background###: ###yellow###; ####
} .tableCell { display: table-cell; vertical-align: middle; vertical-align: middle;
text-align; *> : 10px;
# *top: 50%;
left: 50%;
content {
#position *
#position;
: -50%; *#left: -50%;
background;
}
##}
#
暫時總結上面的七種,這個方法太多,其實只要習慣了其中的一兩種就夠用了。
總結如果是行動端,那麼用方法四和方法五是比較方便的。而且支援不固定寬高的情況,快、準、狠
也就是用flex; align-items: center; justify-content: center;##XML/HTML Code
<
class="wrap"#> <#p class="center"
p>
#。 p>
#CSS Code 複製內容到剪貼簿/* css */ .wrap { background
:width
:height
:display
: flex align- items:center
;
-content: center;
#} .center {
background; width: 100px; height: 100px; height#:
100px} 或display:flex;margin:auto; XML/HTML Code
CSS Code複製內容到剪貼簿
/* css */ .wrap { background: yellow; width: 200px; height: 200px; display : flex;
} .center { background: green; #width##green; #width##green; #width##green; #width: 100px
;100px
;auto
;
##1
#如果是PC端,要考慮相容性的話。方法六是不錯滴,也就是純position。
#複製內容到剪貼簿
#<
p
>
# <
class ="center">#p>
##p>
#CSS Code#複製內容到剪貼簿##/* css */ .wrap { background: yellow; width: 200px#; height: #1 ; position: relative;
}
/**方法一**/{
background;
position:
absolute###; ####width###: ###100px ###; ###height###: ###100px###; ###left###: ###50px###; ####top###: ###50px## #; ############ ###########} ###/**方法二**/### .####center### { ###background###: ###green###; ###position###: ###absolute###; ###width###: ####100px####; ###width###: ####100px####; ## #height###: ###100px###; ###left###: 50%; ###top###: 50%; ####margin-left####:-### 50px###; ###margin-top###:-###50px###; ###########} ############ # ###########如果PC端的中間的元素高度不固定,那麼就用方法七即可,程式碼就不複製了。 ######這種css元素垂直的如果真的要總結起來,應該有十幾二十幾種。不過也沒必要全部掌握吧,只要大概了解一些,用起來沒有副作用就好。 ###以上是css讓容器水平垂直居中的7種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!