找回密码
 入住天佑斋
载入天数...载入时分秒...
搜索
查看: 717|回复: 9

css失效的问题…

[复制链接]
发表于 2012-4-16 19:10:03 来自手机 | 显示全部楼层 |阅读模式
最初没有申明<!doctype html.....>的时候层固定的样式在IE8中失效(其它浏览器没有测试过),后来为了实现层固定就加了那一段申明,固定是实现了,可是其它大部分的样式就失效了。这有鱼和熊掌兼得的可能吗?
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:11:34 来自手机 | 显示全部楼层
等待中…
回复

使用道具 举报

发表于 2012-4-16 19:26:29 | 显示全部楼层
                       
CSS兼容IE/Firefox要点

7 v8 p' [8 L$ |( k                                               
[日期:2007-12-09]
来源:网络                                 作者:
[字体:[url=]大[/url] [url=]中[/url] [url=]小[/url]]
                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同:
" \0 L3 q" P' p  其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度。它只包含容器中内容的宽度。而Internet Explorer ’width’则是指整个容器的宽度,包括内容,padding ,border。 6 a- |8 x" K2 }- Q, }1 C# L4 F: F6 j$ y
Firefox中:容器占的宽度=内容宽度+padding宽度+border宽度 - \; q5 k! ~4 e* M
IE中:内容宽度=您定义的容器宽度(Internet Explorer ’width’)-padding宽度-border宽度
, w3 R3 K8 c3 y. H9 f3 ?- `
5 U+ X8 ?8 P6 ^4 f  所以,如果IE中定义 width:120px;padding:5px 的话,所显示的宽度就是120px. + q* h1 e& q  _8 t' Y& P
  即padding:5px是在width里面。
# m2 p" F8 z2 i( }( T  而Firefox中,上面这个定义,显示宽度就是 130 px; 9 F# T7 K$ A/ x1 B% v7 p' \
  所以,我们就必须这样定义 5 i+ s" W7 T5 @
width:115px !important;width:120px;padding:5px;
- [5 P& ?/ u2 m. J
& V! k& o  X% o+ ~* G6 g3 M0 f8 v  ^  必须注意的是, !important; 一定要在前面。  
1 i$ _, D( R: w: a, W2 f( x
2 s" Q3 z4 F- u% Z
6 V7 g9 S2 o2 k5 x$ `CSS 兼容要点:  g) \# N+ ?' s& v3 k% c* }* [
  • DOCTYPE 影响 CSS 处理
  • FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行
  • FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中
  • FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width
  • FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式
  • div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
  • cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以
  • FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格
      u( v' S: a' r0 b; a+ \0 r
XHTML+CSS兼容性解决方案小集0 @9 C0 X, S6 `8 {+ i$ b
  使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^
( }3 |) C. X' n. J  R' Y
  • 在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:
    * p% [# u4 G, G1 ]& ~7 `; }div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:
    7 }3 j8 ~" m; i2 xdiv{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;
  • IE5 和IE6的BOX解释不一致IE5下div{width:300px;margin:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则 是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改1 Z" o: e1 u1 r% ?7 n# k+ D: H
    div{width:300px!important;width  /**/:340px;margin:0  10px  0  10px},关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)
  • ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义8 J6 [( d% X; I
    ul{margin:0;padding:0;}就能解决大部分问题
  • 关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为2 a" z0 S8 l; n7 @7 `" h# `! x
    <script  type="text/javascript">就可以了
  • margin加倍的问题; d+ x9 A; q: w9 Q9 f: K
      设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
    ' \, L& F' g# L1 s+ H/ u2 @  解决方案是在这个div里面加上display:inline;6 |0 a' f3 B3 Z7 }' Z0 B# k
    例如:
    ) }0 l% J1 [/ Z* Y% S& W7 J<#div id="imfloat"></#div>5 t- x( n! R6 X, a7 m0 F! @$ |
      相应的css为& E% B! l1 y% p5 F/ O4 W
    #IamFloat{7 j7 o" I" I/ E$ G9 |- H$ O2 l
    float:left;
    $ z+ D$ @1 g2 ^* Z+ a3 rmargin:5px;/*IE下理解为10px*/
    : K+ Q' u. b4 g- Zdisplay:inline;/*IE下再理解为5px*/}, H2 R2 z& Q8 y) x) G5 Y9 ]6 x
    % B3 F+ i9 f, w

    - d+ E' `- l+ o$ {0 p8 K
    0 W; O# j; G  G
% f3 @+ _( W: v; F7 Y
                                                                                       
/ r. S: _1 t0 j
/ U0 X* B, E8 F. h5 u
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:42:43 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26. s3 \/ w" B/ I& j& P: g: r9 n
CSS兼容IE/Firefox要点
, s& k9 J2 |  y: M" i                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同:
$ g, ^" s$ {0 u" }/ m+ O   ...

' M4 t8 F. d! x0 x+ Z' s. o; Z是挺多,该怎么解决呢?
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:59:19 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26. x1 o/ H' x& x# P1 B5 w
CSS兼容IE/Firefox要点
+ d! S" b3 Q! |( r' _                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同: # [6 T& A% y1 ~' x0 Q3 F0 M
   ...

6 Z; t* ]* c2 H5 V' g% n) }网上有这么一说:“在ie中要实现position:fixed要设置一个html#menu,然后再加overflow的属性。”不晓得效果哦
回复

使用道具 举报

发表于 2012-4-16 19:59:44 | 显示全部楼层
黄相银 发表于 2012-4-16 19:42
  S$ h/ o5 d6 Q" }, o: s$ a是挺多,该怎么解决呢?
+ C: E/ w; i# w: ]
样式不对的地方就修改,或者用其他样式代替
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:16:02 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:59( Q& L# {6 j! S% E0 w% r9 [. S
样式不对的地方就修改,或者用其他样式代替

: s7 [8 b  A4 g- I2 E3 I# e* _改了某些怕又不支持其它的浏览器。等会回去试试。
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:19:00 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:59! K7 u: x; N4 f) P" c6 ^+ N$ Y
样式不对的地方就修改,或者用其他样式代替

1 ]1 M( u! x. p- v$ k) |& D我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显
回复

使用道具 举报

发表于 2012-4-16 20:46:55 | 显示全部楼层
黄相银 发表于 2012-4-16 20:19 9 }/ Y/ c8 ~; R+ m) k5 r
我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显

& C3 O& a3 J( o4 g居中<center>就可以
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:58:35 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 20:46
; m/ O/ a7 _+ A, I- a) q居中就可以

$ K; o. f" e  F4 a7 L. y# \% A) |用<div align=center>或者css里面写text-align:center都不好使。
回复

使用道具 举报

天佑斋微信小程序

QQ|手机版|小黑屋|西南交通大学 - 天佑斋 ( 蜀ICP备20015072号 )

GMT+8, 2026-6-15 04:45 , Processed in 0.048075 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表