该用户从未签到
|
## **方法一 **
4 N0 s- c+ N# n Y' O思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中% c; l0 T, z3 b4 D
优点:父元素(parent)可以动态的改变高度(table元素的特性)
3 J8 @) p. v( a! {8 |& H" f0 Y缺点:IE8以下不支持2 K1 _4 S Z. S4 d( Q* T2 f
$ d1 v" J( I3 k0 l/ \9 ?) N```- C8 B9 M- B9 g" [+ x f
<!DOCTYPE html>
G# M+ R# m6 I& \<html lang="en">
, s6 t0 h: m; o. f$ ^! D# Q<head>
/ a, l. a- \/ l; p! `* U0 B% w3 h <meta charset="UTF-8">7 N+ T- i7 P+ k8 `2 g) ~8 x5 f0 w' ^
<title>未知宽高元素水平垂直居中</title>$ e5 W; _0 P5 t. F) ?* \. B
</head>
5 p+ y; X! l. T$ P0 s1 n% d<style>: T" ?: a3 D- B9 b- l- L
4 N. [% d1 d h
.parent1{
. v0 ^+ _3 O% I7 b2 d$ S display: table;
: D" ~5 Z. ~0 l height:300px;( W7 k7 D u5 w- d1 M9 F/ O' o/ c2 ?
width: 300px;; C7 [6 w3 N7 H4 o- F2 h9 f' f
background-color: #FD0C70;: K$ Z1 G J5 U1 o$ h
}3 Z- i3 Q9 D1 [9 B$ t0 P
.parent1 .child{( Z5 t# E) I5 f$ H
display: table-cell;
1 G0 a7 i2 a! u! C vertical-align: middle;0 [7 O4 G5 B4 o& n
text-align: center;/ i9 p; f3 z/ n( R/ E
color: #fff;
6 f* @# {8 t2 p font-size: 16px;
/ h; ?: b, V- k. i}3 B7 n0 v$ K' F
3 ^$ x/ e8 G$ V. H" P. i</style>
7 w- x; `0 }( s S5 l' T<body>
7 I1 {+ y0 B6 Q+ y, v <div class="parent1">
! x5 F) M: m; q8 V: _: U <div class="child">hello world-1</div>
9 h& x9 A9 X3 T, k: B& }% Z, i </div>6 n/ S. B r) h
</body>' ^ E6 m& _7 M2 y) R6 C' \0 o4 m
</html>
# \' R4 B+ h: O" c: I$ x& e/ k7 F```5 O+ Y; ~- B5 G7 E9 r
## 方法二:
( c9 u. C" y$ \) f' l9 `5 x' b2 T2 h: p* c% J$ }* `
思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为02 b: _3 D3 }3 M/ ^9 r* W
缺点:多了一个没用的空标签,`display:inline-block` IE 6 7是不支持的(添加上:`_zoom1;*display:inline`)。. s: v6 W/ M3 B: l& t
当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了
! t- D% d& {$ S; a5 Z, l* R( ^' V7 q! r4 x- ~9 n) C
```
2 i4 b: S( @ m<!DOCTYPE html>
7 p: W6 K! @; Q' u<html lang="en">
# e7 Q4 \4 s: I3 W7 y" p' m% C<head>- M8 [1 \- c, \; U4 K8 f! O! N
<meta charset="UTF-8">
/ Z6 _# m4 i; t" U' R- O h+ O8 O <title>未知宽高元素水平垂直居中</title>$ A6 \, q# f, ]9 m; E/ A
</head>
5 h D# W0 x( O<style>
9 R! T; F$ J9 o* p* n9 { C.parent2{! l4 ]$ }4 M% n5 M0 r; d) L2 `" y$ \
height:300px;1 H- h, V( G/ n/ I' a$ K
width: 300px;+ r1 A! }1 @8 |# C: y* z
text-align: center;
7 F P2 k4 `# T6 | background: #FD0C70;$ o9 b3 s% Y& B# T5 t
}
2 U7 V4 g$ c: k; b. s( a! \) G.parent2 span{
0 b- @ \9 R7 s display: inline-block;;
; J( O" M" B0 v width: 0;8 n! q# w2 e- Z7 |4 P
height: 100%;8 f6 ?1 i4 G6 {/ F4 {8 e6 t5 v
vertical-align: middle;5 ~4 ?4 E% B. M- [/ u8 j4 R
zoom: 1;/*BFC*/2 e6 c. T l* r# m( }
*display: inline;
5 D* m7 f: e4 Q6 z# z2 P}! T- D. V& O: L0 I% q6 h" b# G1 l
.parent2 .child{
: y* i% Z" @3 [( [" o; n display: inline-block;
: K1 y4 j( Z. o( k6 t% y- E- k3 j# [ color: #fff;
, G8 @4 ?! e) V9 p zoom: 1;/*BFC*/
0 O$ P) K0 m; b1 A$ u4 e/ t *display: inline;
* L/ j2 n# W3 i/ ]2 S: ~: e}
+ {8 U4 w0 Y. [) r! Q4 d/ U1 t' D
</style>) F# g4 q! H- X5 ^0 j- c
<body>
6 O, f8 B) q. K5 ` C, w; G; f& m <div class="parent1">
1 D7 Z9 w. a; H9 y8 R+ ~& A1 @! R <div class="child">hello world-1</div>
8 L0 }" L+ h/ ^- B- {, G </div>
$ k! O, j' X2 L! m/ s' ~
' P" v- b& L( p( E5 x. N <div class="parent2">5 [8 B' K8 o# o- ]
<span></span>
& E0 E4 |; Q% Y& L <div class="child">hello world-2</div>
0 v: F1 ]+ O" \' @: L </div>
' _+ s4 a* ~2 y) `</body>+ q! s( i- A* x8 W$ r
</html>- v- B- N) _5 u7 [9 J1 U
```( l6 h/ n% M) Z3 G- B V
9 u. b( O: m/ o3 }) M1 Q## 方法三6 C+ r# q0 l+ K' `. J6 s
/ I3 _- d: ^) L; H) n2 j( S
思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 `transform:translate(-50%; -50%)`: h/ y& ~# f" k% z7 P% Z
优点:高大上,可以在webkit内核的浏览器中使用1 m0 J. m }( L2 [9 T
缺点:不支持IE9以下不支持transform属性
' O; P" B# \* f$ N: P( k- A% V, B. f3 l: Q- O( I9 e
```$ r7 ? U0 T3 @& n8 p- m2 K8 ]
<!DOCTYPE html>/ i$ l3 Q4 `$ B+ N; i
<html lang="en">: y; ]6 q4 e% ?- @8 }
<head>9 r! P% D3 f1 Z* e7 b
<meta charset="UTF-8">8 D; J& p; @7 a) L0 G
<title>未知宽高元素水平垂直居中</title>
8 Y; l0 x8 l- s. E, g0 q' o$ v: ~</head>$ K9 M$ e7 |; j. G' @) H
<style>
" p0 g: v( d( r+ L! h.parent3{( Y- I/ W, S. k# p; D0 I3 g: O9 C
position: relative;9 _9 @: U% e' _: `6 X% f
height:300px;
5 k- }) f: }! S width: 300px;* @( U4 ~7 m1 ~
background: #FD0C70;" ~ V, D i4 a1 G# V. s4 } S
}0 I) c+ i, W: `0 n' q8 T
.parent3 .child{% ^5 g6 `0 i/ X+ G7 I- y5 e
position: absolute;
, i6 i! v3 d U7 N top: 50%;
( w5 [" s5 n8 o& Z9 d% k; p left: 50%;
D4 S* C1 ^9 @* q d, j color: #fff;
* w/ \3 s! N; ~6 i transform: translate(-50%, -50%);# q& {! U% ^. m- L4 b% W3 ^' R
}
# Q1 T: T& d8 y. t</style>/ Y+ q* G) _! K1 Q
<body>' P/ Z% Y3 j2 y0 n* R
<div class="parent3">3 p. W8 }( k' S2 ^
<div class="child">hello world-3</div>+ l! a; T& h6 G4 @5 G' h0 G# M2 o
</div>
2 U9 U% j/ ~0 I; a</body>7 Z4 M% D5 {7 m" R- u: @
</html>6 N; w* K9 R! G% F t% D& ^; G+ L
```
! t4 L( S) v' L- B. g0 K! q- F% D6 T9 |4 I! b% O
## 方法四:9 [ \- k; \1 ^7 o6 l0 B$ k- X3 D
思路:使用css3 flex布局
8 w5 r: n' E, @' U( g优点:简单 快捷
" ]1 A7 R. C7 f: z- B/ r0 i缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex3 r6 f0 I3 g8 L! M
$ ]0 j' a4 [) q, Q# ?8 j``` V( b. e$ L) x" }# R: G
<!DOCTYPE html>
; g0 O* B2 u$ B" H+ H<html lang="en">
( y- l" F0 D& G6 K. B% D. z$ g! D% `2 Q<head>7 ^. D8 k/ t( J. g: @) P
<meta charset="UTF-8">( @- A5 O: \/ K$ k
<title>未知宽高元素水平垂直居中</title>
8 d5 Q7 B; {: t9 N' S</head>
& A. q2 n7 [4 F- f+ E: G) J<style>3 Y8 B) G5 H3 L1 O' A$ O
.parent4{
( D0 S6 G0 r, M1 m2 Q* E display: flex;
4 f* D* P" g/ o( ]! J4 ` justify-content: center;* U$ X6 o) e2 U) o ^5 ~' j7 h
align-items: center;
9 K6 u6 `6 \4 E$ c2 q width: 300px;1 ?, r0 c5 N+ L; |: W2 f' c! C
height:300px; U! A1 O% [ p3 a9 a* ^
background: #FD0C70;
1 n: J( a, a; W) ^7 A/ D}# a4 V. O" \7 M& \% f. m
.parent4 .child{+ A" [/ [3 |) r5 t
color:#fff;8 I, ~( a& \, T" _- Z5 H
}
+ V9 F8 [( U- q</style>5 ^+ m, a5 m$ I5 u8 e
<body>div> <div class="parent4">
7 w5 C' u. q- }2 ^* E <div class="child">hello world-4</div>7 N9 m8 S) \% \' O5 Q
</div>
+ o- n, h; J& R# l1 t% {9 q</body>
$ @% a" `) B& j% Y5 B0 N</html>
) B# s4 L5 U3 Q# d```
; N V1 v! s4 J |
|