.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的人都不得错过!
默认的属性值都是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元素,例如某一个活动层的关闭按钮等。
有时它们又可以通过改变列表元素的边距而重新出现。这看起来似乎是以下事实导致的结果: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序列... -_-
目前遵从标准的浏览器无疑就是 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{ }
如果您发现本免费资源已过期,请点击报告错误提交过期信息,谢谢!