我爱电脑技术论坛's Archiver

star2008 发表于 2008-5-9 16:22

清除浮动的最佳方法

   2O:@7W6C#[
在CSS森林群里讨论一个margin的问题中无意间发现overflow也可以用来清除浮动,嘿嘿,这个方法不单使用简单,而且FF、OP、IE7都支持,从此可以告别那又长兼容性又差的FF清浮动的方法了。%^J9nCS2W Y

d?2r/q"\2GU 方法真的很简单,只要为需要清浮动的标签加上overflow这个属性。
}*[4n1dETG
jF)[,l)j CSS代码/D` { x+}&L%y1p~3k

V*L c0ZQ ul{
ic},c-pW~f list-style:none;z2Z l rPe%~
height:auto;
*G3J6l*X s I margin:0;p,hp})gE*skL,qO
adding:0;
X]Qb M background-color:#436973;
,Y `7}8P P }0Js r4y_? Kg
li{
-m3c/tR e,[)W float:left;
I:G4J&OW"Iw'N width:80px;+nLIve N2J%o
height:80px;%JX5s*xS7ae
background-color:#83B1DF;
L;G*_;e;T.j[ }
5A5yp)}^TH-Cw-VVD .demo{O1P;Eq+D$O
clear:both;3Xk"d sq7F
border:1px solid #FF00FF;
/u}5KCV/l\{ margin-bottom:5px;2u&l1K7T4?V[G
}w3LTFm^'~ }
.overflow{3P8KjD-k
overflow:auto;
h,Q[u_L7bd0T)G zoom:1; N(|S7TYYc"Y FSJ8D H
background-color:#43FF73; t%Z6r/P\2r$a%bM
}
Rv@ZO7U!Bh(H ul{
(j^(e9rp\/o | list-style:none;!HX)Q$x }Z.f8k
height:auto;
&Ch'~yJ*B[/Xj margin:0;4_2V:T-of
padding:0;} j:qK!G"u G9vo
background-color:#436973;
,`+NK&@| }
!CE4g5c v bg [r li{
0X4x7U6rOT.KQ_o float:left;
]0cy-AKV3v width:80px;
WjR1t~#jv height:80px;
hm^&e(v9tNx/w background-color:#83B1DF;
9lh!CK:D"?M }'{)jO)^,[7Hf4D@
.demo{.C y0N1_0|m7_|GM
clear:both;
}X/\Y0h [2\bu S border:1px solid #FF00FF;3H[s v1DA
margin-bottom:5px;
G [S y6d-`+U"O }1C$JHm.QjE
.overflow{ jQv~ [
overflow:auto;L _0K2E9u*d(y \
zoom:1;.cY@ ]UL _Gz:b`
background-color:#43FF73;
3}'xZ[-j!H }
UJ hi5^ nSI,Yy ^;Zz Nll
HTML代码
)T RIZV8oA )]#t*nM:C a"_.t)\
<div class="demo">
G#]x#w&^ j6u <ul class="overflow"> ^5D!VP/V(`8LBk gy
<li>1</li>
x'N_]XW <li>2</li>2fy&m8x0D%tY
<li>3</li>
`9T-H6p"} <li>4</li>0]sq&D3C]D,I2s*v
<li>5</li>
~ XK9Au&N"i q <li>6</li>}X!a Qs1R
<li>7</li>
,NPra OSS <li>8</li>:o;d@%n5B+]_7@ i4M F
<li>9</li>"M-e9v%ZI GN
</ul>#v6I I)UoY2u
</div> P%kM^%ub_&f
<div class="demo">
2\2b1Xn"{0\ W|;@ <ul>
'dWI,N5GB2BL <li>1</li>
v:j4@hE:L#G?X <li>2</li>)Z"Z0w"?(TXa}r,j2w
<li>3</li>Gv'Z(MMG"K0nY
<li>4</li>
(Yo|^ y$R <li>5</li>B`-xS2i c.SS
<li>6</li>
1\T:t5oc <li>7</li>uq\2L:L e'@c8\
<li>8</li>
UmNu$vI3X+m)a <li>9</li>
!vG2`S+\b|+r </ul>
)O&h3d;OX M*Fg8_*l </div>5A;Q%se K

M\"\ nel 其中zoom是为了IE6准备的。q!C|sf2I1u&Fsr

"o,g5?#K+r:l,E 完整的Demo
/M'i8f4]x!@| X(m;d.Ji!] C2s
注:忘了一个很重要的内容,并不是所有的overflow属性都可起来一样的效果,比如visible属性就只能对IE起作用。例子可以看这里Demo2
"o%O:`U5a7@ 这样的话就有一个问题啦,如果要有高度,而且内容超出高度的时候,定义auto或hidden都可能会有一些不想要的效果出现。这里提供一个解决方案:对于IE6及以下版本的IE,可以直接定义高度;对于IE7、FF、OP,可定义min-height。
[ B0`xmBzSk
9l|X'v#Z8y CSS代码q@ Ivmm$R(Q,n3JKX

ner}z overflow
D0B)R3a};`H {
v.?$QlR height:auto;
PEJD4s? _height:200px; A9N[ [6rJ VG
min-height:200px;
'{j1[RZ/b0F verflow:auto;n!i`;FHP&A(|
zoom:1;
"mL$U6t\ _overflow:visible;
%MZ$mM x,B$of{.C }

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.