· 信息发布
· 广告联系
· 联系站长
动态空间 | 静态空间 | 免费域名 | 免费邮箱 | 免费论坛 | 流量统计 | 免费QQ信息 | 免费硬盘 | 中奖赚钱赠品 | 免费博客 | 免费相册 | 免费翻译 | 免费广告
免费帐号 | 免费留言本 | 免费聊天室 | 免费电话短信 | 免费游戏相关 | 免费杀毒软件 | 更多免费 | 免费影音 | 网站运营 | 网络编程 | 联盟资讯 | 网站制作
推荐资源
24小时热门资源
特别推荐
一周热门资源
信息阅读

css解决兼容的问题


来源:网络 编辑:blmbolon 日期:2008-2-19 10:19:37 人气:
 
更多免费资源请关注久留免费网:http://www.96ew.com/

1;float的闭合

在float元素间增加一个标记 <div class=clear></div>

这个样式定义为:

.clear {  clear:both; } 2:最好的div居中方法 .someStyle {  width:xpx;  margin:xpx auto; }

3:strong标签重写的好处 对于特定的内容,如果要进行强调,又需要设置自己的样式,可以不必另行定义div,而用strong标签的重写。 例如如下的HTML代码: <div id=somePart> <strong>我是强调的内容</strong>,我是普通的内容 </div> 对应的CSS文件如下: #somePart strong { font-weight:normal; color:#f00; }

4:IE的display:inline; 当box为float时,IE下面会使得margin加倍。真是莫名其妙……IE6页没有解决这个问题。 解决方法是float后续标签闭合(见前),并且给float的box赋以“display:inline;”的属性,至于这该死的 display:inline是什么意思, 5:另外一个IE的sbbug 当Windows样式主题为XP样式时,所有的按钮不能定义background-image,只能定义background,也就是说 #regb { ... background:url(images/reg/login.gif) no-repeat; ... } 可以,然而 #regb { ... background-image:url(images/reg/login.gif) no-repeat; ... } 就不行了! 唉!不过加上background-color:transparent;之后就好了! 6:换行打破float的问题 假设布局 A|B div B标浮在A的右侧,这时候如果不设定B的宽度,则B很可能由于内容过多而撑破大的布局,跑到A的下面,形成 A B 的局面。 因此一定要注意设置B的宽度。 7:IE与FF对宽度的理解不同 在IE中,如果子元素宽度超标,会自动“撑破”母元素,而FF不会,所以常用FF调试的时候,一定要确保子元素width小于母元素。 不管是IE还是FF, border都是跟padding走的。而width则在IE和FF有不同的理解,准确地说,border会跟width+padding走! 8、关于高度的问题 如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事) 9、最狠的手段 - !important; 如果实在没有办法解决一些细节问题,可以用这个方法.FF对于!important会自动优先解析,然而IE则会忽略.如下 .tabd1 {  background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/  background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */ } 10、margin加倍的问题。 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。 解决方案是在这个div里面加上display:inline; 例如: <div id=IamFloat></div> 相应的css为 #IamFloat {  float:left;  margin:5px;/*IE下理解为10px*/  display:inline;/*IE下再理解为5px*/ } 11、float的div一定要闭合。 例如:(其中floatA、floatB的属性已经设置为float:left;) <wrapper> <div id=floatA></div> <div id=floatB></div> <div id=NOTfloatC></div> </wrapper> 这里的NOTfloatC并不希望继续平移,而是希望往下排。 这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。 在 <div id=floatB></div> <div id=NOTfloatC></div> 之间加上<div class=clear></div> aw提醒您:这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。 并且将clear这种样式定义为如下即可: .clear {  clear:both; } 此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden; 当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。 例如我的某一个wrapper如下定义: .colwrapper {  overflow:hidden;  zoom:1;  margin:5px auto; } onhavinglayout-绝对不得错过,每一个制作CSS以及用脚本操作DOM的人都不得错过!

 

12:position属性其实是指本体对上级的定位。

默认的属性值都是static,静态。就不用多说了。最关键的是 relative(相对)以及absolute(绝对)。 往往我们如果是COPY别人的代码,会把absolute属性与left、top配合起来制作相关的“悬浮层”效果。然而有时候我们需要针对某一个容器的悬浮效果,而不是针对窗口的。这时候通过高度、宽度的计算不但麻烦,而且几乎无法完美实现效果。我一开始也无能为力,后来发现只要把其上一级的样式属性position设置为relative就可以了。 也就是说,position的属性值的效果,直接受其容器样式中position属性值影响。 例如如下A-B的嵌套结构 <div id=A> <div id=B> </div> </div> 当A的position为relative时,B的position为absolute才有效。这时候left:0、top:0就不再针对窗口文档,而是针对id为A的这个div了。

这样在开发一些基于B/S应用程序的时候,就能很方便的添加一些UI元素,例如某一个活动层的关闭按钮等。

13:关于list-style失效的问题

列表 无论是列表本身(ol, ul) 还是单个的列表元素(li),拥有 layout 后都会影响列表的表现。不同版本 IE 的表现又有不同。最明显的效果就体现在列表符号上(如果你的列表自定义了列表符号则不会受这个问题影响)。这些符号很可能是通过某种内部机制附到列表元素上的(通常是附着在它们外面)。不幸的是,由于是通过“内部机制”添加的,我们无法访问它们也无法修正它们的错误表现。 最明显的效果有: 列表获得 layout 后,列表符号会消失或者被放置在不同的或者错误的位置。

有时它们又可以通过改变列表元素的边距而重新出现。这看起来似乎是以下事实导致的结果:layout 元素会试图裁掉超出其边界的内部内容。 列表元素获得 layout 之后,会有和上面一样的问题出现,更多参考 (extra vertical space between list items)http://www.brunildo.org/test/IEWlispace.php

进一步又有一个问题就是(在有序列表中)任何具有 layout 的列表元素似乎都有自己独立的计数器。比如我们有一个含五个列表元素的有序列表,只有第三个列表元素有 layout。我们会看到这样: 1… 2… 1… 4… 5… 此外,如果一个有 layout 的列表元素跨行显示时,列表符号会底部对齐(而不是按照预料的顶部对齐)。 以上某些问题还是无法解决的,所以如果需要列表符号的时候最好避免让列表和列表元素获得 layout。如果需要限定尺寸,最好给别的元素设定尺寸,比如给整个列表外面套一个元素并设定它的宽度,又或者比如给每个列表元素中的内容设定高度等等。 另一个IE中列表的常见问题出现在当某个 li 中的内容是一个 display: block 的锚点(anchor)时。在这种情况下,列表元素之间的空格将不会被忽略而且通常会显示成额外的一行夹在每个 li 之间。一种避免这种竖直方向多余空白的解决方法是赋予这些锚点 layout。这样还有一个好处就是可以让整个锚点的矩形区域都可以响应鼠标点击。 解决方案-用js动态写入li序列... -_-

14:我个人概括的图片存放规则

一、非语义图片(就是指那些表现样式的图片)存放于styles/images下 二、样式图片尽量在CSS中体现,可以用background+text-indent来配合完成,对于非块元素,用display:block使得text-indent属性生效 关于strong标签重写的好处 对于特定的内容,如果要进行强调,又需要设置自己的样式,可以不必另行定义div,而用strong标签的重写。 例如如下的HTML代码: <div id=somePart> <strong>我是强调的内容</strong>,我是普通的内容 </div> 对应的CSS文件如下: #somePart strong { font-weight:normal; color:#f0R>} 这种方法从语义上来说是非常利于SEO的。

 

FF和IE的css属性差别总结

2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width 5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式,值得注意的是,一定要将xxxx !important 这句放置在另一句之上 6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行 7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以 8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:div{maring:30px;margin:28px} 重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important; 10.IE5 和IE6的BOX解释不一致 IE5下div{width:300px;margin:0 10px 0 10px;} div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改div{width:300px!important;width /**/:340px;margin:0 10px 0 10px} 关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:) 11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ul{margin:0;padding:0;} 就能解决大部分问题

 

DIV布局常见问题

目前遵从标准的浏览器无疑就是 Mozilla, Safari 或 Opera。 确保您想要的效果真的存在 许多特定的浏览器专有的CSS扩展在正式标准中并不存在。 如果您对 filter(滤镜) 或滚动条指定样式,您用的就是私有代码,除了IE之外,在别的浏览器中毫无作用。如果验证器告诉您代码没有定义,极有可能您用了私有样式,别指望在不同的浏览器中得到一致的效果。

如果布局中一定要用浮动对象,别忘了适时使用清除(clear)属性。 浮动元素似易实难,而且难以驾驭。如果您发现浮动对象伸出了容器的边界,或者不像您所期望的那样显示,请检查您的期望是否正确。关于这个问题请看Eric Meyer 的教程。

边距的合并:可用padding 或 border 来避免。 您可能被多余的(或者想要却不出现的)空白搞得焦头烂额。如果您用了 margins,边距的合并可能就是问题的根源。 Andy Budd 对此的解释也许能为你解惑。

避免将 padding/border 和固定宽度同时应用到同一元素。 IE5 错误的区块模型是罪魁祸首,是它把事情弄得乱七八糟。虽然有补救方案,不过最好是绕过这个问题,当子元素的宽度固定时,为其父元素指定 padding。

避免IE下未指定样式内容的闪烁。 如果您用 @import 来输入外部样式表,早晚会发现IE有“闪烁”的毛病。在应用CSS样式之前,未格式化的HTML文本会短暂地出现。这是可以避免的。

别指望 min-width 在IE中有用。 IE不支持它,但是它将 width 当作 min-width,所以通过一些 IE 的过滤技巧(filtering),可以实现同样的最终效果。

走投无路时,试一试减少宽度 由于舍入误差,有时 50% 加上 50% 等于 100.1%,破坏某些浏览器中的布局。不妨试试将 50% 减到 49%,甚至 49.9%。

IE 中显示不正常? 可能是 Peekaboo 臭虫在作怪,尤其是当鼠标经过超链接时能显示正常。修补方法见Position is Everything。

如果使用了锚点,在应用超链接样式时要特别小心。 如果您在代码中使用了传统的锚点(<a name="anchor">,您会注意到 :hover 和 :active 伪类也会作用于它。要避免这种情形,你可以使用 id,或者使用鲜为人知的语法: :link:hover, :link:active

记住“LoVe/HAte”(爱/恨)链接规则 要以下面的顺序指定超链接伪类:Link, Visited, Hover, Acitve。任何其他顺序都不妥当。假如用了 :focus,次序应为 LVHFA(“Lord Vader's Handle Formerly Anakin”,Matt Haughey 这样建议)。

请记住“TRouBLED”(麻烦的)边框。 边框(border)、边距(margin)和补白(padding)的简写次序为:顺时针方向从上开始,即 Top, Right, Bottom, Left。比如 margin: 0 1px 3px 5px;表示上边距为零,右边距为1px,依此类推。

非零值要指明单位。 在用CSS指定字体、边距或大小时,必须指明所用的单位(唯一的例外是 line-height,很奇怪,它不需要单位)。某些浏览器对未指明单位的处理方法不足为凭。零就是零,不管是 px 还是 em。其他的非零值都要明确指定单位。例如: padding: 0 2px 0 1em;

测试不同的字体大小。 像 Mozilla 和 Opera 这样的高级浏览器都允许你改变字体大小,不管你用什么字体单位。某些用户的默认字体大小肯定和你的不同,尽最大努力去满足他们。

测试时用嵌入式样式,发布时再改为外部输入。 将样式表嵌入在你的 HTML 源代码中,在测试时可以消除许多缓存引起的错误,尤其是某些 Mac 下的浏览器。但在发布前,一定要记住将样式表移到外部文件,用 @import 或 引入。

加上明显的边框有助于布局调试。 像 div {border: solid 1px #f00;} 之类的全局规则可以暂时为你查出布局问题。为特定的元素加上边框可帮您找到难以发觉的重叠或空白问题。

图片路径不要用单引号。 当设置背景图片时,要坚持用双引号。尽管看起来好像多此一举,但是如果不这么做,IE5/Mac 会噎住。

不要为将来的样式表(比如手持式设备或打印用样式表)“占位子”。 Mac IE5 对空的样式表比较感冒,会增加页面的装入时间。建议样式表中至少应该有一条规则(哪怕是注释也好),免得Mac IE噎住。

还有一些建议虽然不针对某些功能,但是在开发过程中值得注意:

好好组织您的CSS文件 恰当地成块注释CSS,将相似的CSS选择符编为一组,养成一致的命名习惯和空白格式(为跨平台考虑,建议用空白字符而不是 tab。)以及适当的次序。

以功能(而不是外观)为类和ID命名 假如您创建了一个 .smallblue 类,后来打算将文字改大,颜色变为红色,这个类名就不再有任何意义了。相反,您可以用更有描述性的名字如 .copyright 和 .pullquote。

组合选择符 保持CSS短小对减少下载时间非常重要。请尽量为选择符分组、 利用继承(inheritance)以及使用简写(shorthand)来减少冗余。

使用图片替换技术时要考虑亲和力 已经发现传统的FIR在屏幕阅读器,以及关闭图片显示[的浏览器]中会出问题。对此有其他解决办法,要根据具体情况,慎重使用。

1,盒解释器的不同解释. #box{   width:600px;        //for   ie6.0-   w\idth:500px;       //for  ff+ie6.0}#box{    width:600px!important            //for ff    width:600px;        //for  ff+ie6.0    width /**/:500px;       //for   ie6.0-} 2,在ie中隐藏css,使用子选择器 html>body #box{     } 3,只有ie识别 *html #box{     } 4,在ie/win有效而ie/max隐藏,使用反斜杠 /* \ */ #box{ }

5,给ie单独定义样式 这里更加详细的说明

6,浮动ie产生的双倍距离

#box{   float:left;   width:100px;   margin:0 0 0 100px;  //这种情况之下IE会产生200px的距离   display:inline;   //使浮动忽略} 这里细说一下block,inline两个元素,Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,...不可控制(内嵌元素); #box{   display:block; //可以为内嵌元素模拟为块元素   display:inline; //实现同一行排列的的效果   diplay:table;   //for ff,模拟table的效果} 7,for oprea only @media all and (min-width:0px){/* opera */#box{  }}

8,IE与宽度和高度的问题

IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度, 正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。 比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样: #box{    width: 80px;    height: 35px;}html>body #box{    width: auto;    height: auto;    min-width: 80px;    min-height: 35px;} 9,页面的最小宽度 min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到 <body> 标签下,然后为div指定一个类: 然后CSS这样设计: #c

[1] [2] [3] [4] 下一页

 如果您发现本免费资源已过期,请点击报告错误提交过期信息,谢谢!

  • 上一篇文章:

  • 下一篇文章:

  •   关键字:css,兼容
    久留免费网