找回密码
 入住天佑斋
载入天数...载入时分秒...
搜索
查看: 655|回复: 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要点
5 i7 j+ E9 k; \6 Y2 k* v
                                               
[日期:2007-12-09]
来源:网络                                 作者:
[字体:[url=]大[/url] [url=]中[/url] [url=]小[/url]]
                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同:
# ^( B+ E! l" M( g  其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度。它只包含容器中内容的宽度。而Internet Explorer ’width’则是指整个容器的宽度,包括内容,padding ,border。   H! Z. M5 x7 Y" U8 `
Firefox中:容器占的宽度=内容宽度+padding宽度+border宽度 0 B$ q1 r* u9 `  [1 @
IE中:内容宽度=您定义的容器宽度(Internet Explorer ’width’)-padding宽度-border宽度 & w1 Y4 ]3 e8 ?/ `. K
, @8 i% C5 B- n% A4 a; |: t' t
  所以,如果IE中定义 width:120px;padding:5px 的话,所显示的宽度就是120px.
  p+ {6 y* Y# F9 _) H  即padding:5px是在width里面。
# g4 F3 u# ^1 Q' D6 }7 ]  而Firefox中,上面这个定义,显示宽度就是 130 px; # r1 }1 o1 N( M" _0 U5 d& q
  所以,我们就必须这样定义
( P. Q; D' }* Pwidth:115px !important;width:120px;padding:5px;
: R3 j# [  x  }( I3 S$ P
% @! ^; j& M2 k8 B) y  必须注意的是, !important; 一定要在前面。  
8 ^& K+ B6 z5 C9 Z2 i, s% {, P  ]: y# q, q- C$ [  Q
5 z& D/ S2 Z: U7 G4 Z7 z5 \
CSS 兼容要点:
( p7 T0 F- A, N% p6 Y# E* d
  • 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 中插入一个空格
    " V# K, R1 s9 v3 J* X& k3 O& O
XHTML+CSS兼容性解决方案小集, S" i* f7 \7 E& w+ Y# d( V
  使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^' e7 R4 M. I, N6 \3 O
  • 在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:6 P4 T; h* B; m* R9 v
    div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:
    % w  Z& J# w8 p5 @* Ldiv{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来计算的。这时我们可以做如下修改& o+ a0 U4 _! I" O7 Q
    div{width:300px!important;width  /**/:340px;margin:0  10px  0  10px},关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)
  • ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义0 U. ^3 N1 {/ ]/ L+ Z% ^/ R
    ul{margin:0;padding:0;}就能解决大部分问题
  • 关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为+ [8 k# }: L. y
    <script  type="text/javascript">就可以了
  • margin加倍的问题- ]3 p7 v( m5 I6 q
      设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
    + S8 R' ]# v. c' L1 B$ W" ?  解决方案是在这个div里面加上display:inline;( b  C" t$ i9 T  g2 k, O  F
    例如:. \8 h( B" `4 d
    <#div id="imfloat"></#div>& k' _7 t/ O+ a! ^5 f* y
      相应的css为
    # t( [' R; T' ]" t#IamFloat{. d8 {* S0 K# f% Y" M  k
    float:left;
    7 G$ y$ y6 l' Y, mmargin:5px;/*IE下理解为10px*/
    ! C' d+ [2 z$ `8 W6 @/ l' g# [: _display:inline;/*IE下再理解为5px*/}
    2 P! E0 T2 h) H- h. i: O% g% z# c8 ^9 H- o0 {% r

    1 F2 W5 \4 N( R1 G+ i& D& ?$ ]$ C  B" X- L
9 Z, C: [, V$ t4 h9 ~- k# ^, s
                                                                                       
; I8 |( e' Q9 e% r8 c+ ^
) p, L! ^* k: Q9 X9 C
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:42:43 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26. x" ]9 H3 T$ z* l/ G0 i! n
CSS兼容IE/Firefox要点; p6 A) l( c2 s
                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同: $ J. h7 V+ d6 a: n% m
   ...

& r) l  m  n7 V; a: {- H是挺多,该怎么解决呢?
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:59:19 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:26
# k; r: A' L* D3 [; f& CCSS兼容IE/Firefox要点  o  Z# a3 s& z
                                                                                                                    首先我们说说firefox和IE对CSS的宽度显示有什么不同:   b' K5 Z9 q( ^4 H/ A% u& \
   ...
5 m6 B, u2 ~3 G. R* _8 y/ V
网上有这么一说:“在ie中要实现position:fixed要设置一个html#menu,然后再加overflow的属性。”不晓得效果哦
回复

使用道具 举报

发表于 2012-4-16 19:59:44 | 显示全部楼层
黄相银 发表于 2012-4-16 19:42 : E" O0 c4 B4 N9 Z$ r" R
是挺多,该怎么解决呢?
/ C+ ?( }  {9 ~8 j- N
样式不对的地方就修改,或者用其他样式代替
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:16:02 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:592 Y2 R# N. g: |7 p! n2 p
样式不对的地方就修改,或者用其他样式代替

6 N- {2 }. o' [" y. z改了某些怕又不支持其它的浏览器。等会回去试试。
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:19:00 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 19:59
! M% X( |% Y4 x* S" c& L: B3 L样式不对的地方就修改,或者用其他样式代替

# A: h- g3 |) H2 f$ q9 r+ l- a我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显
回复

使用道具 举报

发表于 2012-4-16 20:46:55 | 显示全部楼层
黄相银 发表于 2012-4-16 20:19 ; N3 q* B; @: H2 T
我用js试过,由于技术不精总是不能剧中,特别要改变浏览窗口的大小时犹为明显
4 h" n4 d* M# P# w- @% ~* x
居中<center>就可以
回复

使用道具 举报

 楼主| 发表于 2012-4-16 20:58:35 来自手机 | 显示全部楼层
Shaman 发表于 2012-4-16 20:466 r  ~1 ~' [  s. s" k
居中就可以

+ O% x. H' Y0 K) f. Q' |$ s- B用<div align=center>或者css里面写text-align:center都不好使。
回复

使用道具 举报

天佑斋微信小程序

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

GMT+8, 2025-5-21 14:49 , Processed in 0.047605 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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