找回密码
 入住天佑斋
载入天数...载入时分秒...
搜索
查看: 643|回复: 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要点

) _! D' E4 ?. ?                                               
[日期:2007-12-09]
来源:网络                                 作者:
[字体:[url=]大[/url] [url=]中[/url] [url=]小[/url]]
                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同: 7 h5 F0 d/ R; Y& b+ [- B" I
  其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度。它只包含容器中内容的宽度。而Internet Explorer ’width’则是指整个容器的宽度,包括内容,padding ,border。
% L6 r2 s1 b+ @. N5 R( BFirefox中:容器占的宽度=内容宽度+padding宽度+border宽度 " i; O% D$ c% Q6 W. Y
IE中:内容宽度=您定义的容器宽度(Internet Explorer ’width’)-padding宽度-border宽度
2 A* C- H2 f  I; m/ D) e) _9 s( n# l3 h. @
  所以,如果IE中定义 width:120px;padding:5px 的话,所显示的宽度就是120px.
7 }3 X0 @- R& Y1 m7 u3 B1 W  即padding:5px是在width里面。
3 w6 F- b8 p- V  而Firefox中,上面这个定义,显示宽度就是 130 px;
7 i2 v7 \  f- w# r' O4 I  所以,我们就必须这样定义 8 I7 H" A: L+ e0 B: T6 S
width:115px !important;width:120px;padding:5px;
8 m& G/ ^7 I9 K+ ]" N9 a$ m; s1 c ; K9 A# ?. D" y* T8 M+ G4 G3 z; `0 V
  必须注意的是, !important; 一定要在前面。  
4 K8 v. Y5 |/ t
, F+ V- x% W4 u! S9 ?  N& b8 Z7 H% K9 v) e8 i
CSS 兼容要点:
* d+ m. V% Q6 k$ m! h
  • 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 中插入一个空格! l. v- z* Y9 }8 l
XHTML+CSS兼容性解决方案小集" z+ T& b( }1 H; r' V3 l4 |% p
  使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^
1 Y: T& p1 y$ G* _. e
  • 在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:, i; {/ y5 c% w1 K* Z: J5 c# E
    div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:& k3 u/ L* p! p' ^; u7 Z2 |, H
    div{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来计算的。这时我们可以做如下修改, L. [/ P) m, x/ `
    div{width:300px!important;width  /**/:340px;margin:0  10px  0  10px},关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)
  • ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义/ d" F1 c/ O  G% b5 J& J8 {3 Y9 E# n
    ul{margin:0;padding:0;}就能解决大部分问题
  • 关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为
    9 S1 e! b% v) e1 T9 N<script  type="text/javascript">就可以了
  • margin加倍的问题
    - R$ l9 n0 N" R& l& K/ O  设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
    / m8 {3 ~" d5 K% \  解决方案是在这个div里面加上display:inline;* p  x: b) l2 u3 F2 \5 R7 N
    例如:
    ! ^" J( d2 F1 ^$ ]. |<#div id="imfloat"></#div>
    7 L/ u0 M9 Y. @9 [$ H# c1 ^( A  相应的css为
    , h$ R5 ^+ |5 s' T! R, K#IamFloat{
    7 `& j0 b0 r. E+ Ofloat:left;' r  Z9 j5 x% a6 |) X
    margin:5px;/*IE下理解为10px*/
    9 f4 T% ]$ I* j# S; \3 F/ k; }display:inline;/*IE下再理解为5px*/}- v7 ^+ Y% W, `
    - B  f  Q4 C( T4 r# P  q5 v6 O; U

    ' ^: W$ j. f" P. b2 V
    9 ^) r) c" r9 F
8 z! Y0 O: x) F! u3 i5 z) k- O
                                                                                       
, B+ O8 F) Y# ?+ e8 ^; D. \
$ n( g/ Y9 |7 H- m, Z
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:42:43 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26
1 a7 p7 A4 O. O0 X" \CSS兼容IE/Firefox要点9 m; z  O& r- B
                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同:
* r6 I+ Z6 C- _" @' Z* a   ...
$ F/ E$ S+ o; f' J$ E, X: A' ?
是挺多,该怎么解决呢?
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:59:19 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26; `% I8 f. e1 u2 S" y2 Y4 C$ A2 a$ V
CSS兼容IE/Firefox要点
: W1 Z# p. k9 A0 [& R9 g$ m                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同: % _. Q+ O+ ~* F% o: L# n+ n/ p
   ...
: R! K/ y5 S$ Y% h
网上有这么一说:“在ie中要实现position:fixed要设置一个html#menu,然后再加overflow的属性。”不晓得效果哦
回复

使用道具 举报

发表于 2012-4-16 19:59:44 | 显示全部楼层
黄相银 发表于 2012-4-16 19:42
' H; ~& A9 ^1 n8 C' Z是挺多,该怎么解决呢?
1 F% R' z  z3 m1 K3 P  b
样式不对的地方就修改,或者用其他样式代替
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:16:02 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:59
& U, O1 @0 l  G6 g样式不对的地方就修改,或者用其他样式代替

+ V8 w, ]+ ~1 \1 R4 s改了某些怕又不支持其它的浏览器。等会回去试试。
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:19:00 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:59% C4 J& g( o9 j8 q5 E$ D, V
样式不对的地方就修改,或者用其他样式代替

! Q2 o& Q) ]: Z我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显
回复

使用道具 举报

发表于 2012-4-16 20:46:55 | 显示全部楼层
黄相银 发表于 2012-4-16 20:19   q; O: @" [' y; c
我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显
9 \8 f$ Q( l$ v8 Q# Y
居中<center>就可以
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:58:35 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 20:465 a" a* w! ~/ v+ ^+ \
居中就可以

& C$ Z+ M: x: C3 |用<div align=center>或者css里面写text-align:center都不好使。
回复

使用道具 举报

天佑斋微信小程序

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

GMT+8, 2025-1-25 05:12 , Processed in 0.047103 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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