该用户从未签到
|
## **方法一 **
, \/ u; h9 K/ P1 j4 ^% B思路:显示设置父元素为:table,子元素为:cell-table,这样就可以使用vertical-align: center,实现水平居中/ t* Q: x6 y2 u4 t4 K- P1 [
优点:父元素(parent)可以动态的改变高度(table元素的特性)# e) o! P7 q0 ^0 G" \
缺点:IE8以下不支持: D5 y# {( f) H( R* ~3 v7 r [0 \2 t
* P8 a4 b0 J. c5 r- |! [' [
```/ z2 L3 m( g; I: r: ]
<!DOCTYPE html>
) T% t+ F7 Z8 X# L<html lang="en">/ T7 e$ z7 O1 N
<head>7 K5 x" f. }% |* `/ M$ R% ^; a% l
<meta charset="UTF-8">1 \9 i s/ O8 ^* k
<title>未知宽高元素水平垂直居中</title>
( K/ E7 O: o2 M- l</head>; y) q& |" D. t$ H: l
<style>2 D4 I3 t. V" Y' @( m" n
) b( i2 w& L* o( T4 E
.parent1{
% i" x: Z; t g2 [" i display: table;! M; y. G2 ]4 b& c
height:300px;
+ v! y: g" M% \4 U) j% B3 U width: 300px;
- p! ?: k4 M9 Z2 P; ~- L! C3 d background-color: #FD0C70;
/ W2 i) v, A# N/ j( G6 J5 M}
" e- O8 R5 b5 c' T.parent1 .child{
. N3 h$ p: y. U0 o. q display: table-cell;
/ }4 ]3 T5 Z# w# J# J- M) ]* n vertical-align: middle;
2 q0 L, Q: H; ?9 B; c6 h% h text-align: center;
- ]& \# d. h. A) p1 H+ c# `' ] color: #fff;
) {" J3 |2 G5 ^) A font-size: 16px;
d6 Z5 |/ G6 J9 C% m}
; H% a) _4 j1 H' t+ H! G: r6 j! N: Z3 L' w' N4 m* j" @
</style>1 p/ n7 B! r2 Z8 f; Z6 K1 [
<body>
" s5 R1 |( Z; ?- h. k( E7 D. ] <div class="parent1">
$ S( R( a$ h3 C3 l% R! M3 t <div class="child">hello world-1</div>
3 t* K/ ]9 s( j/ p8 s4 g/ R% E </div>" M8 a% l2 m- b1 g/ o
</body>
( S" s" s+ C; U& O7 P</html>* H2 Y7 A, T; N! @- V
``` _1 b& D0 O n/ R2 p( X
## 方法二:
( b' k1 p" x# d
/ F: y# E0 b/ A5 ~; j" w# C# w8 V思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
/ ]7 T* E. U* W' v- T缺点:多了一个没用的空标签,`display:inline-block` IE 6 7是不支持的(添加上:`_zoom1;*display:inline`)。
: w% A0 t/ o: m$ ]: {- d, k当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了
( A3 T4 ?+ D" p/ P' j- t1 i" p, F9 z$ r5 E3 N( e7 D
```3 p; F/ o: h8 I) d; T8 n
<!DOCTYPE html>2 N$ q/ Y1 F7 h% P4 e( ?
<html lang="en">; \3 U7 _# S2 r' R! U
<head>
/ v6 C; P4 F4 j q0 a <meta charset="UTF-8">7 ]2 }" t0 ?7 J* q- \% Y
<title>未知宽高元素水平垂直居中</title>
$ `) i/ {, X* B0 X8 ^0 F</head>) { \1 ?$ j+ v* X! L
<style>
# \, ^& T# j6 W.parent2{
P* v4 {+ T% w+ Q& Q1 G4 }( ` height:300px;& Q8 ^/ i/ g- F$ F
width: 300px;" Q+ B/ h2 d: k: r' C: \, G
text-align: center;& {; O1 f6 ~0 j" h2 `0 _6 v
background: #FD0C70;/ b3 p( b/ y* M( T
}0 A; i8 f+ {5 J. j) }
.parent2 span{
7 W) N) \2 X6 z display: inline-block;;& M5 b6 O$ G6 K" {4 Q9 C [6 Z
width: 0;
8 d5 p- `: W7 x Z6 o% o height: 100%;
( Y& F8 ]: Z' D7 j vertical-align: middle;/ x& Q; C1 i! Y0 _/ K" l; w' O
zoom: 1;/*BFC*/
/ T$ F9 x" J5 x# X- V1 L *display: inline;* n9 w- K/ K- m4 X& [8 k* |
}
# m9 d+ H3 @8 R8 |5 l* O' g% B.parent2 .child{
8 d( [! E2 i( a i+ o$ w# g display: inline-block;
( s% F2 [: x( a ]+ ?& i color: #fff;& I# l. g9 A! Z7 P& Y9 f" [3 R& C
zoom: 1;/*BFC*/5 n& Q$ i5 j& c( D6 e( A
*display: inline;
# i$ J" P9 x! {! n}
5 {3 y C- f1 ^5 j
4 {- J# E3 J) T1 N7 _</style>% o0 J' ~4 |4 x8 K0 I, z0 N
<body>' e; b; |0 W! B) _* R
<div class="parent1">3 O4 R. P- b6 P6 \2 U
<div class="child">hello world-1</div>
4 P, O9 e% Y- Q+ R5 k- E8 ^% Y </div>
% c% v" ^# E8 v
& C* k/ H4 O* c4 b8 ? <div class="parent2">
& e; x3 P8 b. p( h" o. v* [; V2 { <span></span>1 |, U& W) A; e4 e
<div class="child">hello world-2</div>8 O4 ~% W x% A# x* E
</div>
8 L; C; `9 k4 Z$ N7 A</body>
# b, U! N2 ~# z) c! _) p) X</html>
4 A9 v+ i' d5 i3 L```/ B+ g/ A- o, P( D: W% o
Z8 f4 k3 ^, L. D
## 方法三- i! g+ b0 _8 o# i) y q1 a
) b. J7 a) c$ J/ l思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 `transform:translate(-50%; -50%)`
; J/ _( v$ ]4 `% F5 P6 q优点:高大上,可以在webkit内核的浏览器中使用2 x/ \5 R; w# |; E9 U* p% l& m" \
缺点:不支持IE9以下不支持transform属性' o+ ]) e K* z/ h! b, _
* C* Z) f2 a3 j% z. A3 o. h( w! ^
```
( { H: @( @7 Q0 i, S<!DOCTYPE html>
5 d* u6 _( h2 ]/ b, b9 d) M; U% o<html lang="en">9 @, l0 `2 X; [$ ]
<head>
) v2 Y5 k3 ^3 u( M, Y" a6 ?) f <meta charset="UTF-8">
- L; x1 D: I3 I <title>未知宽高元素水平垂直居中</title>) }7 m8 l8 S6 l
</head>* U9 X+ _% j6 c/ a: i
<style>' C# q# Y3 j! _. P
.parent3{
$ ]# @, }* M! J' K position: relative;
8 |$ I' H% Z5 ?) a1 C6 H8 z height:300px;% W. `- V* b6 E& s
width: 300px;
) x$ j# w/ C6 [$ y' _ background: #FD0C70;
7 o+ d9 h9 X; T}$ L: }) ] F/ f% M
.parent3 .child{' a( q4 v: O; a# o# @: P* T! E
position: absolute;
1 P) X# b8 w" r top: 50%; a; k# ~& m- W# J2 j9 x
left: 50%;! ~* D4 J$ N' O! c8 H
color: #fff;
6 Z+ ^* V2 o8 A( U. D- q2 ~ transform: translate(-50%, -50%);
. l7 C. {8 I( O9 W# Q3 ^7 M8 R6 a}, d& h( O+ `4 n i) |
</style>% r) n5 z. r- F' d& I. w/ J4 F
<body>
) b: \5 Z3 v* ~0 A<div class="parent3">
" S; _( ~2 | n <div class="child">hello world-3</div>: T% {, c# y, U. @, L
</div>' w0 T0 @8 c! o; ~% G/ l+ j
</body>
" F8 c+ {: c7 `: x2 a</html>
8 p, @: q+ M& ]4 [```
; @. W1 M" a7 E/ h4 {, a
6 l% I: ]! N5 A5 ` [6 @6 O## 方法四:) E( \' \7 U# }: X
思路:使用css3 flex布局# E; w( J7 I" o: `, e" B. H. W
优点:简单 快捷" g t T+ C4 [9 a& d6 J
缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex. l/ V: F8 j5 |: t8 G5 U. K
. T! Y a& V. m( O7 T! A, q
```9 F9 q2 d% F- H! z; K5 R
<!DOCTYPE html>& h' Z( h0 H- _( X P
<html lang="en">
. Q# \, ?3 N. G+ o3 |7 g7 G6 C* u" H3 q<head>
/ c9 R" L7 a+ ^ j# J z2 T <meta charset="UTF-8">* R; h; \/ G! ~% ~( C: u5 {9 Q" D
<title>未知宽高元素水平垂直居中</title>& F0 z- Y+ Y* k( ^) C& c+ E; J ^$ \% W# w
</head>* J, S4 p8 T& A: @* S* D$ `
<style>
4 n+ ?1 C! x. x, j9 Q+ O- M.parent4{
7 `4 ^! |3 g! T9 U display: flex;7 o. o- a) h0 e' O( l' p
justify-content: center;$ f5 ~3 w9 M2 A+ A, @
align-items: center;1 H' H! g! h0 f% X: R# b
width: 300px;
" [; D% {- \8 D) W% k6 s! g height:300px;5 B% e- V# l6 s5 e7 M+ S
background: #FD0C70;: A x2 q# f- K2 d `" V
}
. k% Z e3 ?3 h$ R, v4 p* P.parent4 .child{
+ G4 A, z4 Q& _1 Q color:#fff;$ A4 S+ r6 z( V: D
}$ F* C% ]" O5 K5 W$ t) l" J
</style>
& ~( H, d6 b5 g( |<body>div> <div class="parent4">, C2 a% w. J b2 h5 l% @
<div class="child">hello world-4</div>' {. V6 z+ \0 E+ u* O6 w7 `( c
</div>
9 F5 ~ g F' Y. i</body>
0 X% N7 v* B4 l2 `7 }+ y# o</html>4 l3 j' G* I7 z4 J3 y6 i/ I
```
2 R8 ]' U) t& @0 U1 P+ t. c1 h6 ^9 V |
|