该用户从未签到
|
## **方法一 **
. \/ Y' s% C3 z3 [! q* M8 o思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中7 O! Z# j& x9 m/ @: h
优点:父元素(parent)可以动态的改变高度(table元素的特性)8 |. }" U" O; @9 K2 i2 t$ h
缺点:IE8以下不支持
* t/ X0 z _9 c1 _$ _( n1 r/ v' k8 J) @
```
% |: m A- T4 n: n, z/ @* n8 f<!DOCTYPE html>
" [# ]- k6 `0 y. y# _3 [. o; t<html lang="en">
3 j7 T2 k& \( c+ x: A7 M<head>7 n2 w/ F9 n: a" c- ]$ E9 r9 s
<meta charset="UTF-8">- ? a# v' d3 D0 n$ R
<title>未知宽高元素水平垂直居中</title>" F: k3 B0 P0 T- y3 G# N
</head>$ k& G( U3 j4 j1 M* p; T7 A" Q
<style>
8 `( _7 g' b* R9 C. R3 S
3 M Q. M3 F0 z5 N* O. d.parent1{, x$ }6 B. t6 R( b1 _
display: table;
0 E5 m- z2 E8 W% I/ I E) i8 r height:300px;
( M$ Z0 n& g4 b" b2 U! U* e0 g width: 300px;. ^8 m/ I b( e& V/ z/ t2 D
background-color: #FD0C70;: P) {- ^- M$ n9 U
}) i" ]) m& b4 R2 G( g( {+ A8 v* q
.parent1 .child{; ]" Q8 e7 M1 P" _) ?3 w- w
display: table-cell;& ?, C% q# Q- _7 t9 Q4 L' u0 n
vertical-align: middle;
4 d4 V6 Q4 W4 E. b% W6 i text-align: center;9 A4 F8 M7 V8 h
color: #fff;0 g# R- I1 k, y' C
font-size: 16px;
- F& ^5 n8 v4 z2 O* Y- q5 R3 `' Q}
" O; g0 X3 a9 M' v4 `6 O8 n. \7 Z( M% b' a# K- H
</style>0 @) j9 T* G2 c( ~. s5 w
<body>0 t9 ~$ |4 I1 A$ {- {5 k2 P/ q! N8 l
<div class="parent1">
; ?) _# G) C% }2 X8 h+ o% ^! u9 ^ <div class="child">hello world-1</div>, J! C! F K3 d ` n
</div>
6 @- h% O. }8 P+ Q V* e8 g2 L</body>4 o7 f) C8 Y7 h7 B
</html>
- O( U# n: y& ]9 C7 c```
" i+ g1 w2 N1 }: k## 方法二:
& m- _( U! s$ ]2 C- e% G. b' s* Z' u* n* n
思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
$ q8 d ^9 e! D缺点:多了一个没用的空标签,`display:inline-block` IE 6 7是不支持的(添加上:`_zoom1;*display:inline`)。
6 Q, @/ E0 o7 z1 G! G# W) l) J当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了
( W$ t+ Z" m* Y' V. |: Q V, j! @6 k! G* V6 O
```
u3 k) O& z0 q<!DOCTYPE html>/ r* Y& F/ E, [1 @2 ^; l/ C8 c7 m
<html lang="en">
# k: _* _$ t7 s F+ J' k<head># M) R0 @+ ?4 r
<meta charset="UTF-8">! U# [/ k' g# r+ R/ m
<title>未知宽高元素水平垂直居中</title>& W1 p' `9 x( j( Y
</head># F* C- I% P" @& ^
<style>9 h2 G3 [3 W# o G; o2 S7 w. j; T
.parent2{
# x& b$ e. n8 |5 m4 k height:300px;
! v, l# B% p* ^ a4 O width: 300px;
0 u. k0 \" v1 D4 T% g text-align: center;
: k5 \1 W4 G6 A6 b% L" c F background: #FD0C70;
7 ?7 Q, q/ ?0 V}; q& [$ Q- g" L: L9 S
.parent2 span{
5 s2 R6 x9 x2 _: M display: inline-block;;
9 {3 G+ k) O- J6 s0 Q( _ width: 0;
5 ]8 K8 v: K! @$ b, i" F height: 100%;
' T$ O# E- ?& p w9 A vertical-align: middle;8 h r) t# _/ Z8 Q
zoom: 1;/*BFC*/
1 g g" M, P) K *display: inline;
V& ] F. i$ N7 `}" p }/ e; N1 e7 b
.parent2 .child{) {* _+ H* x0 c
display: inline-block;4 o5 u9 u- }: T" G6 r6 _2 G
color: #fff;; |0 ?! B' k" `
zoom: 1;/*BFC*/( I" m! s( z8 e, ^8 o; C( p) P
*display: inline;
$ q- I( s ^, L7 z, q; G}. n6 Z2 A+ i/ E5 U) M2 N; g% U; A
: F2 @4 b& K7 U; w</style>
4 m" W" B9 D% `9 e, v( y+ Y<body>3 g9 M5 N4 G% b$ _, d1 e# W
<div class="parent1">
/ f7 |% T- i3 n Y; a0 ~ <div class="child">hello world-1</div>
. R7 {! l( Q4 I! m; u- G/ V </div>
/ H/ y/ B2 [. R
6 V7 i v# y) Q <div class="parent2">
$ K$ Z z* B% I3 u# M7 _ <span></span>
% T" P: n2 `& E <div class="child">hello world-2</div>
* w# f6 X' a. V </div>
3 H6 ]7 Z6 ~2 r+ n8 G+ f' S3 j</body>$ d- E/ S1 `) S7 a: E& ~- g# k
</html>
1 [9 l$ I/ M/ F```. C, _- `3 s3 O5 y6 R. g& r
X# i- f& J# r## 方法三
; }% J$ S% [0 V, V5 r5 E! v) u2 s; P/ G0 r
思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 `transform:translate(-50%; -50%)`
5 T1 V; C/ R2 g; f$ e" ^1 {8 O优点:高大上,可以在webkit内核的浏览器中使用
! n6 ]6 E9 `) C w( D4 k4 @缺点:不支持IE9以下不支持transform属性
( W! X/ G3 R7 s' k
/ v% e% e) n3 R6 H```
% T! e5 L5 P0 S<!DOCTYPE html> [/ U/ E$ W/ a- j" b# e* ~2 J
<html lang="en">
$ ~ {$ E5 \ E<head>
* u. e; Z6 P4 V; C <meta charset="UTF-8">
- |/ s* P k1 h9 b, ` <title>未知宽高元素水平垂直居中</title>. L. r) X3 k. C6 g* {, {3 K1 d
</head># I' N* }% d0 w+ @. g
<style>1 p4 v0 N) O1 h* g" J- M
.parent3{, ^4 G/ s& V ?6 O1 `. h; ]
position: relative;
1 H& y/ b8 x2 x9 Y! c3 v height:300px;1 H1 P0 W; B: x/ B. C a
width: 300px;
8 h+ y2 ?! } x4 z background: #FD0C70;+ o1 m0 l( A8 i3 {
} x' y( O2 z# ?; C
.parent3 .child{; b; R* f- ~1 D: q
position: absolute;
/ |& P ]* J6 G+ G! K top: 50%;
. o9 Z- H! m* m* v5 W+ \1 N left: 50%;
$ w) q5 `- D( G& B* @: e color: #fff;+ \4 F$ s0 L: j4 F
transform: translate(-50%, -50%);0 t. {4 s& l' Q) o x1 `. R8 B
}
/ X. [' X+ Z7 y$ H+ N& g</style>$ v; |( c$ E1 T: }0 D
<body>
7 S+ y' y, O- ]! i& T/ {3 b* T) y<div class="parent3">
J, v# H' r; R+ u <div class="child">hello world-3</div>
* I* B1 r) o# r) c% ~. v </div>
+ E4 J9 o0 H7 |: G</body>7 @ R; Z9 p% L) F; A; v3 y; l9 v
</html># U6 P3 H* q6 g
```
/ I, V1 I1 F- C' e1 P. p" B5 a$ R0 e; J, c/ N
## 方法四:
; G% Z6 H+ \ N( J思路:使用css3 flex布局6 U- Q8 p1 e j: H" C/ d
优点:简单 快捷
. O. g3 I: \4 ~% Q% ?缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex( P5 U/ n% o+ t
1 M- q7 q* |+ ~
```
5 r6 U5 I: d, T" }7 F, J<!DOCTYPE html>
/ V! W+ i# \+ B, N2 O4 }' _8 n8 E<html lang="en">
* E) f# g$ K1 {2 T! z<head>6 N( V) L% X7 i& F
<meta charset="UTF-8">: E: ~9 \8 c6 W* u% S
<title>未知宽高元素水平垂直居中</title>+ ^# F% s. @ I q& J, k
</head>
0 W- t, H5 K) X% B6 I<style>
- ]6 a! b! P) v- V* Z9 J.parent4{5 n. f; B7 r1 `) D3 j( C* M
display: flex;
! C9 \, ~7 U0 k# j justify-content: center;
/ z0 H/ n& I) v. L& D) R* U align-items: center;
% L7 U& o+ |1 I width: 300px;
6 z! o9 I: [0 _ t3 Z height:300px;
- m. w7 q( U& H) }3 L" g/ u background: #FD0C70;
: w$ R& h! V8 a+ E) q# w: I}
# Q/ q. e( A* Q- A4 b.parent4 .child{' [8 m6 P/ W) [. G7 N+ f
color:#fff;$ c T% @4 }; [/ `/ ~$ {0 }
}
8 B3 _6 u! `3 F3 e</style>4 Z; v- A0 o1 d5 q$ W
<body>div> <div class="parent4">6 G q' P( L8 p/ g0 D
<div class="child">hello world-4</div>
7 C) i9 c1 `/ l% P4 f </div>5 _: ]: O+ U0 d6 { S
</body>) A& I; z9 U. m; v
</html>
% M1 J. u3 _1 _( ]```& Q" _7 u' q5 f) x& h2 K7 ~- }
|
|