发新话题
打印

[方法技巧] CSS兼容要点分析

CSS兼容要点分析

IE vs FF0 J! J7 \" ~" r, T: G

, _" P+ B3 p5 \CSS 兼容要点:3 D  G: Z8 F: M# j1 j# {' ^* U8 {
9 Z; B% h1 V! I4 R, u- p! g
DOCTYPE 影响 CSS 处理
2 h+ b, P  [# B3 N) Q1 v
- ?: v4 z0 y) L5 w( w0 T) o, I3 mFF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行
. m& Q; g" K1 ~2 V7 O1 ^1 m) s7 t* X7 K6 b: x0 J
FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中
& R# @, y5 ]6 a: z- U+ B4 Z) }4 ~4 }6 ^: P0 J
FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width
6 h% X; C8 o/ J' H' `$ S' h  X# y) t. C5 A$ o3 M" Q
FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式) y- X0 G/ l7 i: h) }
- [1 b  _0 O$ a) L
div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
% ]% k% t$ q3 L0 E" o: O
$ M/ i- ^' j6 T+ Dcursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以9 F- N4 q# Y2 W3 X0 U# t

# ^! u2 g) `% T4 }( G, xFF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格XHTML+CSS兼容性解决方案小集
! E0 Q3 ]9 R7 Q" q$ x  D' o
* x4 c6 [  C. }3 ^4 t, F使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^, }7 u- a1 D. e
, y! W' \- R) o' t0 _
1.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:' p9 c' d( E' j6 W2 I
" c8 f, d, R- `
div{margin:30px!important;margin:28px;}
* M: V5 ~% S- C( A7 o  Y1 p/ B4 }& S' h# L7 n2 c
注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:
4 m* z$ H+ y5 g7 @* I  F  Q. k& g4 ]8 l( E* R8 f! U
div{maring:30px;margin:28px}9 o  k* w" I  K' Y% x
5 L/ |: e6 H3 s# L, t- m
重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;
5 g/ ~- X% `5 M1 p1 C" V5 Y
5 q# ~8 h- ]/ O2.IE5 和IE6的BOX解释不一致IE5下div{width:300px;margin:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则 是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改
+ c' J8 E) Q5 X' A# g
6 G" t  ?$ l9 c# z8 i. `div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}- N/ X' U8 p1 O2 j
4 Q; A) _/ H8 u6 a8 M1 k! E
,关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)* F/ I$ S  _6 w: p
& Q  c: H$ n: k, i4 O; k, _
3.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义
7 H9 i# E3 k& o. Q" C* w8 Q! W  K8 {& ~: i1 D
ul{margin:0;padding:0;}
% }- f  E9 M' t* m: \
/ \# B' \: e9 J- H+ I2 U1 i就能解决大部分问题
! R( M+ k5 l+ f) q  C& g. @  {, L
4.关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为3 P/ e4 [: j) A' Q/ y( W
& p, V! D& s- P/ G/ q! {
<script type="text/javascript">+ U2 t& S$ D9 x. B9 F* f$ T
5 A6 [7 y; w" S& _& J
就可以了
发新话题