该用户从未签到
|
## **方法一 **
# Y p, |7 }( I9 B- d思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中
/ l3 K: H( o+ M* A7 e8 @优点:父元素(parent)可以动态的改变高度(table元素的特性)+ `, O- G; P( G- N' J" u7 z
缺点:IE8以下不支持, Z2 \0 T' o" j5 r: d7 P2 W
& {$ [* i: `# h. Y
```
; d4 k) {5 W' [3 j$ N, h( H0 J<!DOCTYPE html>! d9 ~* _) }# P: _! _
<html lang="en">. r2 m S e: k2 U) F
<head>
* x* o5 y4 @5 R! M4 S <meta charset="UTF-8">, b# M' E. U0 N( S% G# B
<title>未知宽高元素水平垂直居中</title>8 ^9 F& w R6 v/ j
</head>
# o0 a! q& q9 K/ l# r! [% p7 a<style>
/ @1 w% y- O& j9 O0 f b" B) l5 t2 Q6 ]3 I2 G9 o9 A
.parent1{/ I* d+ M x+ u4 r A. Z5 J9 u
display: table;
+ N3 h F; j' z3 L- W height:300px;( z4 q) L) c& {* ~: c, W$ f% d
width: 300px;
; L9 u4 T/ q. P. W background-color: #FD0C70;" N9 { e& `9 q
}! a$ M7 ^" `+ t$ t
.parent1 .child{9 U% R3 b* b- I4 C, d$ L
display: table-cell;3 S' E: y* m9 v% S! _& R7 |
vertical-align: middle;- _) u: v8 s4 F' f
text-align: center;& C, S' z+ l( q- n$ k
color: #fff;% Q5 `! L" | G" ^: q
font-size: 16px;
/ i, {' z; Y4 p$ [: {3 S& ~5 _6 O}" |/ u: ?' s0 i2 ]) a
& B4 r+ c- H6 Z3 g5 c5 {0 d
</style>
! v0 k3 b) C$ n' y- o) h' t. u<body>/ @9 C9 y+ S# q @7 ]- z
<div class="parent1"># w+ C( ?" z1 H* W8 o9 T
<div class="child">hello world-1</div>
: Y V4 _- S: D [) O </div>
0 t, F$ f3 x" v! S! K</body>
! r' X. P; H$ K+ U7 j</html>+ p0 J4 Z/ h3 s. h h0 ~4 D
```
) O8 ?, j+ N* V1 D* `3 w1 t## 方法二:
: q9 o ^! q( w# ~! m
/ \7 X$ i' j+ r* w/ o _9 f. m思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
6 s" ~3 x) o0 l缺点:多了一个没用的空标签,`display:inline-block` IE 6 7是不支持的(添加上:`_zoom1;*display:inline`)。2 e( H Q' v/ X8 g
当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了
* R7 Q% U$ Y* T$ K5 x# T% w4 N
4 D* S! T0 o* \1 h- n" P```
: s& q# u5 U/ ^% |6 W<!DOCTYPE html>
3 y( B# ~" z$ z<html lang="en">% v& H" `9 U3 S) ]7 l% Z! T
<head>0 x9 g$ ]" E$ a( d/ c" E
<meta charset="UTF-8"> s4 `; {" K2 z! m( r
<title>未知宽高元素水平垂直居中</title>
- X$ t6 \% ^5 V, M z</head>6 W& ?8 O0 Q+ F: w
<style>
( h' [/ X/ o$ z* W) r.parent2{2 v( _8 R' i# c+ G% M
height:300px;$ [ H: {8 B: Q8 u
width: 300px;( m, {" U; {' Z. V2 s; p; Z
text-align: center;
/ k7 n: L4 t( t N background: #FD0C70;% w, o- o+ b. u7 {6 l
}
5 b. N/ Q" M9 V- o: \- S$ U6 z F.parent2 span{
$ S. E$ K5 s4 J display: inline-block;;
8 k, r' X% H$ i width: 0;
' [% O: I( y P2 k height: 100%;" r0 G; D7 P& u4 X3 `
vertical-align: middle;: l! t9 _% D% t! t! h+ _& w" ^1 ?
zoom: 1;/*BFC*/' {. F' U) }( C |- G
*display: inline;
+ ^" b" O5 E& Z* U, y$ i}
4 s5 R/ G8 ]- F5 D0 s.parent2 .child{$ j& H; k% u& L z; l) r- \
display: inline-block;
, n7 U! B) V8 S1 t color: #fff;2 \- O1 o# P" _4 `6 V+ {( o7 s
zoom: 1;/*BFC*/- M9 l3 f( M# {2 @1 [0 {
*display: inline;
9 P( K# w2 l }1 @" m8 D4 P0 m [}
( r9 D! Q4 W2 |$ p
( F* b: R ^$ M1 [! k</style>0 U& B% b6 d9 Y' Z) u
<body>; a6 t0 n% O5 r5 x; ^4 a
<div class="parent1">: F% X8 _# u0 z8 h) l+ h6 ?
<div class="child">hello world-1</div>
3 D( I# I8 [+ z$ s3 x2 T </div>
@# z) `8 a! m# m3 [8 x0 D8 _, N8 l# l+ n
<div class="parent2">3 N+ `0 N h# J* y
<span></span>9 @3 X( s/ n6 ]: t. l
<div class="child">hello world-2</div>% I( d$ Z9 E/ y# h8 T; I- i
</div>( {1 @+ W! H) Q2 L1 K2 s C
</body>. I% W/ M4 t& i9 S1 x5 ?3 O
</html>
6 K/ G/ e" n, N) N+ L. r4 e```; H& J J: z5 j
6 W- m& {1 r. t/ n* Z _+ ~
## 方法三/ i- G% s5 }5 d# L
3 t) T6 H, g0 V7 ` J5 ~
思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 `transform:translate(-50%; -50%)`; p m2 ^6 X% `7 |$ G& I! R) m
优点:高大上,可以在webkit内核的浏览器中使用
# K3 m. k5 @0 o" c) |4 ~; R! J. e缺点:不支持IE9以下不支持transform属性- c& N# t. q7 h( s* e
% v! X7 G/ E9 [8 m( C
```2 p. X4 [8 N1 u2 g- F' G) a# P
<!DOCTYPE html>' ~6 ], n+ T( Y
<html lang="en">
9 P" p, P; w: Z0 j; |<head>+ F! X1 R% x' p4 o5 Y
<meta charset="UTF-8">* F; z; p5 Z. _9 @
<title>未知宽高元素水平垂直居中</title>5 Q+ ], ]% L6 |; }! n
</head>- v) N. U" E2 U* \9 E$ y2 ]7 @
<style>
, |/ H4 ?( ~ B- Y1 f. N.parent3{8 k3 U- o6 O5 A7 t h4 [
position: relative;' k: U5 L6 G8 F6 g- k& p0 a
height:300px;/ Y' r. [+ }2 ^( u' q% N
width: 300px;( w% o- i2 p* \8 a
background: #FD0C70;
) k# P. S+ ]# \1 {}
. \" |3 j, d: b6 X" V: ^4 J4 V1 d.parent3 .child{3 d- g4 R/ R, n9 J" S
position: absolute;
% d: j) |7 ^& t. n- @ top: 50%;- Q% W" b2 K _ E+ ?
left: 50%; {3 [) C( v$ X- e/ O; k) p: ?
color: #fff;
8 ]" [& H- _" P transform: translate(-50%, -50%);0 \: W, Q- T+ F5 u, s, ^ n% h+ S
}
' H8 `# g" ^0 Y7 j& w' g</style>
- `6 U0 }9 w- w; V7 H& K<body>- @, d( A( |$ A
<div class="parent3">0 W$ \3 [, T! G$ W
<div class="child">hello world-3</div>& h/ R, r" ]6 g1 y; o$ |; h
</div>
9 K/ l8 N/ f- R- c: @( O* A8 U</body>
! X3 m+ w6 O: L2 U# ^2 M& n! _1 x; H</html>
0 P" A3 U( y7 s+ {5 T' t" U```
4 |! L# Q, f% H, L( T. C/ h! \
## 方法四:7 [7 I6 z# r! e( A8 [1 p5 I
思路:使用css3 flex布局# ]' z7 _1 @/ P0 x; q7 V+ w8 h# x7 G
优点:简单 快捷1 u0 B& B( f2 i. W: w7 t: U
缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex! O- Y# F8 H# `) L3 K( ?7 Y) s9 ?0 o
% g9 S9 J3 D9 J* B6 s5 y( B) [9 K
```
/ x! r- Q8 R8 p9 I/ q- k/ m<!DOCTYPE html>
/ ]) x$ L3 f5 J& u4 e* P( ^; j<html lang="en">! e; e6 b9 W) I0 v E2 s+ l
<head>
+ W; `( v7 K, J( t$ H& u <meta charset="UTF-8">: T: E$ O2 l6 c7 Y7 N
<title>未知宽高元素水平垂直居中</title>
3 t+ i, _8 @% L' z</head>
. y* |8 y2 V; ]6 k/ }5 N<style>
5 c. @5 ?/ A) C( Y; ].parent4{# G3 ?- c) W& H* I7 \# q
display: flex;
2 f; J6 Q4 W0 m& R justify-content: center;% {! R/ a6 M. E& M) }
align-items: center;
9 m; B6 K) X' q8 y0 f( D! [# _& K' N width: 300px;# [) _; v" C, s' T4 D# B7 F' n& i j
height:300px;+ e1 ^7 T) @- ?, C! P
background: #FD0C70;
6 z. i" x# r3 p' {4 u, k}% C( W9 Q8 e, j5 H2 u
.parent4 .child{* G# T f* L1 N( A
color:#fff;
4 x& t* y- J& [( n}$ q( i6 ~" @& S4 b \
</style>* P2 L9 Y _6 `, ?4 I, n
<body>div> <div class="parent4">
! s/ V' Z# T- l$ ] <div class="child">hello world-4</div>
* |8 d% R6 t$ w& J( n& B </div>
% P3 ^4 \8 x' E( \- ?- T</body>9 ~. A5 L% J }! E, `
</html>
" `- h, U" X9 [7 W9 n```2 b: _, n8 P" R3 q2 s8 J t
|
|