该用户从未签到
|
## **方法一 **
" C1 [% @ x# v* R% I: b思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中
) h$ [# i( g+ P( T优点:父元素(parent)可以动态的改变高度(table元素的特性)
" Q8 t/ d/ U2 h& e: x缺点:IE8以下不支持' B0 n$ D! M: J' _
8 v5 D: L% J! o1 T% x5 l```
. I$ G: n% b4 V2 b4 d7 ~<!DOCTYPE html>
5 v7 Y1 {" M6 `& U( J<html lang="en">
( |1 {$ j6 }, l' J6 V& |<head>
V2 v. k' z( C* m4 p& v$ q% o7 W <meta charset="UTF-8">
4 ^2 N4 i) ?* a( ~ <title>未知宽高元素水平垂直居中</title>+ k7 V' W: `7 F1 [% b
</head>: Q# T( E: \0 Q; S E4 q
<style>8 { y5 w! h0 ]2 o8 N
9 S& a+ G9 O2 H4 A
.parent1{* F5 s5 N/ L; ^& ?5 m+ x
display: table;- H+ Z" x/ _' C- x2 ?
height:300px;
, w9 `; R" o5 q width: 300px;
, B6 `4 J( ]/ Q* J0 A* F2 F6 A background-color: #FD0C70;" {3 @6 i3 K; S- r& {# T: g
}% b) w4 }* @* G2 H5 l: u1 |% p
.parent1 .child{" W* V; p5 Y/ Y2 l
display: table-cell;6 m5 a1 j0 B3 a ?+ K3 p
vertical-align: middle;
n4 [2 P s' x6 ~" S1 o/ P text-align: center;
; ?2 [ D7 ?: _& n color: #fff; K( R4 j* O) [- W5 u" ~9 Q( a' F* G
font-size: 16px;5 ]' Y4 A/ {* e7 b! Q# k1 Z
}
! V0 k/ j) @4 B! s0 i9 ?$ w* W. B2 U0 S6 W; j. u x
</style>
0 v8 b# |& ?6 U2 p+ r ^! `<body>
! w5 T- G, P5 h, M: ?2 W <div class="parent1">( c/ i+ D9 V* ]6 t7 S. f
<div class="child">hello world-1</div>+ T* N& R' R# l$ Q
</div># x1 b$ @) t4 Z9 x. i- [
</body> v3 R0 U. w5 d
</html>+ Q, S) N0 f+ J4 p6 t
```
: e7 I6 g9 j j c" I## 方法二:
; \, r3 y: H& ~$ d! b4 U. h8 O7 P6 R, ?" s/ ? W0 }6 k
思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
8 W' U5 M+ a2 F5 t+ z1 z6 j缺点:多了一个没用的空标签,`display:inline-block` IE 6 7是不支持的(添加上:`_zoom1;*display:inline`)。+ K7 b8 T2 c0 P/ h
当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了) b6 [* ~6 Z' C' d' V* V( A
& u0 l0 G* p# v' w7 B. Z' w" n1 g
```! L( \5 j! l* P% ]! Z& f2 ]4 n6 J
<!DOCTYPE html>8 m& w* I4 B, Y6 L+ }4 `& t6 s
<html lang="en">" y# o( u' u& O8 A
<head>
7 d( K% i' T; M- M! b+ E" G$ J, ` <meta charset="UTF-8">
' O y# T5 q8 U9 r5 u- M4 z <title>未知宽高元素水平垂直居中</title>
5 u. @: O$ _4 `* F</head>0 p0 ~ B/ _) `( o: g0 } g5 s# l, I
<style>2 b9 ^$ ~/ r0 H8 Z7 }$ q" v
.parent2{
5 _$ u3 u7 `4 b+ A1 a5 m height:300px;' V" `" M5 m8 w3 X1 C; H$ s
width: 300px;
2 S# ?; W8 G, e C3 A text-align: center; U3 f' E5 r7 g
background: #FD0C70;$ J W0 a$ V4 I& w! Q
}
* E6 ^ }3 e/ c8 O$ _.parent2 span{" e6 s, z& u$ {' _1 m. A
display: inline-block;; L/ N1 T0 M! {! K$ l! v/ O
width: 0;
& {9 I8 g, w7 c E9 ^ height: 100%;" d" B& R0 y. ?* G
vertical-align: middle;
/ W* Y' G; P; B1 c$ a6 `' f zoom: 1;/*BFC*/
+ A, Y' y0 Y/ E/ A6 d, @ *display: inline;
/ S) `2 _4 M, ?& r, v/ j}
: Z$ Z9 x' K4 w3 ?8 X.parent2 .child{$ {3 {8 l+ ]! p
display: inline-block;# m |4 q; a0 U% ~6 Z
color: #fff;
* }$ X. f/ }- { zoom: 1;/*BFC*/
5 G& {4 d5 e1 H3 [- r *display: inline;
0 W* V7 A# v. y. J- ~( l$ [8 ]0 z0 G}2 I4 |! c/ K- O+ ~
: ~9 I z& p2 [% A+ T: g</style>
; B( p+ Z# \, \/ A L<body>
7 {6 [1 G( b. ^+ Z5 \: I& A! ^& u <div class="parent1">0 y3 ^: ~: j; r
<div class="child">hello world-1</div>
' R1 i% M. T* D/ n </div>" u! N7 f; X5 D6 }- Z. t& {2 o
8 z2 ^- L) B: L, T
<div class="parent2">5 ?( i: O# y I. _6 A) s
<span></span>
' E! F Z9 T0 J& k/ ~ <div class="child">hello world-2</div>
. f1 X, b. X' y! T* a </div>6 v' J$ k$ K: ?
</body>! a0 O9 o/ y A
</html>
7 I" a+ r0 D1 X6 B. P: L```* U4 d; w% L. [" M _
5 B1 S9 f' i! j2 F
## 方法三
/ x% ?) X; q( h8 ?
. g0 x c* E# [ V思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 `transform:translate(-50%; -50%)`9 N8 {) K. ~, u
优点:高大上,可以在webkit内核的浏览器中使用
9 K1 Q8 j4 M; |/ [1 T$ O- K缺点:不支持IE9以下不支持transform属性3 k! T1 e# |! ?6 Z. i
* ~' ~3 N; w8 ^+ x! K z```3 U" W/ n- g4 ?7 y
<!DOCTYPE html>
/ U* L3 I; C* o1 ~% w i8 w9 X! m l3 k<html lang="en">" H0 f+ G9 q2 i# Q: J/ K( R! v
<head>4 i p' Z$ W9 g7 H! c6 M h
<meta charset="UTF-8">
) T7 l1 k! ]( o0 Q <title>未知宽高元素水平垂直居中</title>- S' T% t+ S: Z3 j& i( ^
</head>
# x1 E. p }, s7 E<style>
# h8 y/ }" x; y3 A.parent3{
/ X q" _' v4 d2 t( ~4 W& t1 u/ e8 { position: relative;
% G# j" n( y& l t height:300px;
Z8 h5 _+ V* w2 X" E, v' H! a width: 300px;
$ a, Z9 N2 x3 |$ N6 N, n# d background: #FD0C70;
( ]$ u% a0 T) z b3 c1 P}
4 V [' n/ j6 w' Z.parent3 .child{( t; Q3 V. G. E; W6 G, z
position: absolute;
/ {* S! T; Y1 P" ]. v% t top: 50%;
) {. X& Y4 J8 n5 `7 q' e left: 50%;
! Y0 r/ D2 j, \, ~ color: #fff;. u) {0 I# g. }+ Z! K
transform: translate(-50%, -50%);& c, Z5 R. W! t
}
* m; f# Z% @; Z3 u4 |</style>8 d! j: n W; f9 g
<body>$ O( R- l7 H3 E) s( [% w0 O2 M
<div class="parent3">9 Q3 c1 L* d7 j- a/ R: ^& ]
<div class="child">hello world-3</div>
Q) c3 I. t3 Q5 l# ^+ s </div>
5 U5 @3 |& ^& e: v' ]</body># }; b. B% x M9 W6 J
</html>. ~$ U% M& s' b
```
" m3 l) W0 ?. p2 H! P3 y0 Z3 o5 R- ~1 |1 S
## 方法四:
2 J+ f9 Z C7 ~! T& s5 t9 w( u" m' O思路:使用css3 flex布局 y: a. j/ m! \6 d' F4 m9 [
优点:简单 快捷* O" X9 d" C1 H7 @8 ~
缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex
% u) L5 Q; M, n& @: [; W* a* {2 T. I1 R$ i s1 o# G' \* O
```7 q: x$ P' S# A
<!DOCTYPE html>4 S+ u- R Q/ O, C, D4 o
<html lang="en">
0 Q8 E. y& P% }: ~5 u9 T) s/ o<head>1 O" w" r# D& n; c4 P
<meta charset="UTF-8">
# k! h/ k: z! `5 X <title>未知宽高元素水平垂直居中</title>
" q% D+ i) U0 ^( k( @</head>2 ]5 |6 ]) F9 p8 f
<style>
9 Y7 ?2 M# F3 _+ x.parent4{
. c( G( A1 I4 ]/ ]" ] display: flex;. x5 F9 {: c' L7 E& f1 M
justify-content: center;3 Q) p7 b2 N. K
align-items: center;
$ v" e' ^( v! r& _* I; S( o- K width: 300px;
6 o5 h; r( L9 f height:300px;5 @. r) k; n2 L8 ^8 _
background: #FD0C70;. G* k; B2 O5 D7 u
}- ]! o6 G* X/ z' t4 z( O; b$ ~
.parent4 .child{
; T1 Z& S5 G1 M4 d, M4 o1 z color:#fff;0 e9 k, F S* ]& L# |, ?
}
& e) @# h9 }% Q3 a; j1 N</style>. G8 y5 @3 M2 A1 Y9 U- K# M. h
<body>div> <div class="parent4">
6 z- ^; R4 {% U! {# t, [ <div class="child">hello world-4</div>- h4 |* A" K( l9 x; o7 e/ U% m7 R" o
</div>
1 e D2 d0 f3 h! D& U! W" ]0 |* N</body>
* S2 @0 u9 I& x- m9 e</html>
. W9 {) @% ]. O- B9 U! o```
C0 d4 i/ f: P1 }/ | |
|