应用DIV+CSS编码时容易犯的一些错误.docx
《应用DIV+CSS编码时容易犯的一些错误.docx》由会员分享,可在线阅读,更多相关《应用DIV+CSS编码时容易犯的一些错误.docx(12页珍藏版)》请在冰豆网上搜索。
应用DIV+CSS编码时容易犯的一些错误
应用DIV+CSS编码时容易犯的一些错误
CSS+DIV是网站标准(或称“WEB标准”)中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的方式实现各种定位。
应用应用DIV+CSS编码时很容易犯一些错误。
本文列举了一些常见的错误:
1.检查HTML元素是否有拼写错误、是否忘记结束标记
即使是老手也经常会弄错div的嵌套关系。
可以用dreamweaver的验证功能检查一下有无错误。
2.检查CSS是否正确
检查一下有无拼写错误、是否忘记结尾的}等。
可以利用CleanCSS来检查CSS的拼写错误。
CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。
3.确定错误发生的位置
如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。
4.利用border属性确定出错元素的布局特性
使用float属性布局一不小心就会出错。
这时为元素添加border属性确定元素边界,错误原因即水落石出。
5.float元素的父元素不能指定clear属性
MacIE下如果对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。
这是MacIE的著名的bug,倘若不知道就会走弯路。
6.float元素务必指定width属性
很多浏览器在显示未指定width的float元素时会有bug。
所以不管float元素的内容如何,一定要为其指定width属性。
另外指定元素时尽量使用em而不是px做单位。
7.float元素不能指定margin和padding等属性
IE在显示指定了margin和padding的float元素时有bug。
因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。
也可以使用hack方法为IE指定特别的值。
8.float元素的宽度之和要小于100%
如果float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。
因此请保证宽度之和小于99%。
9.是否重设了默认的样式?
某些属性如margin、padding等,不同浏览器会有不同的解释。
因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。
10.是否忘记了写DTD?
如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写下面这行DTD:
区别IE6与FF:
background:
orange;*background:
blue;
区别IE6与IE7:
background:
green !
important;background:
blue;
区别IE7与FF:
background:
orange; *background:
green;
区别FF,IE7,IE6:
background:
orange;*background:
green !
important;*background:
blue;
注:
IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别!
important,
IE7能识别*,也能识别!
important;
FF不能识别*,但能识别!
important;
IE6
IE7
FF
*
√
√
×
!
important
×
√
√
另外再补充一个,下划线”_“,
IE6支持下划线,IE7和firefox均不支持下划线。
(推荐)
于是大家还可以这样来区分IE6,IE7,FF
:
background:
orange;*background:
green;_background:
blue;
注:
不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。
一、CSSHACK
以下两种方法几乎能解决现今所有HACK.
1,!
important
随着IE7对!
important的支持,!
important方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)
#wrapper
{
width:
100px!
important;/*IE7+FF*/
width:
80px;/*IE6*/
}
2,IE6/IE77对FireFox
*+html与*html是IE特有的标签,firefox暂不支持.而*+html又为IE7特有标签.
#wrapper
{
#wrapper{width:
120px;}/*FireFox*/
*html#wrapper{width:
80px;}/*ie6fixed*/
*+html#wrapper{width:
60px;}/*ie7fixed,注意顺序*/
}
注意:
*+html对IE7的HACK必须保证HTML顶部有如下声明:
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http:
//www.w3.org/TR/html4/loose.dtd">
二、万能float闭合(非常重要!
)
关于clearfloat的原理可参见[HowToClearFloatsWithoutStructuralMarkup]
将以下代码加入GlobalCSS中,给需要闭合的div加上>
/*ClearFix*/
.clearfix:
after
{
content:
".";
display:
block;
height:
0;
clear:
both;
visibility:
hidden;
}
.clearfix
{
display:
inline-block;
}
/*HidefromIEMac*/
.clearfix{display:
block;}
/*EndhidefromIEMac*/
/*endofclearfix*/
关于闭合浮动元素(clearingfloat)的方法现在已经很多了,个人认为简单实用的方法就是使用:
after伪类动态的嵌入一个用于清除浮动的元素,可惜代码量太大了,看上去不够简洁。
现在看到有个方法超级简单。
介绍一下这个方法。
原文在:
http:
//annevankesteren.nl/2005/03/clearing-floats
这一方面的原理是,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见(见W3C的解释)。
现在只要将给外围元素添加一个“overflow:
auto”,就可以解决问题,结果是除了IE,真的可以解决。
下来就要解决ID的问题了,再加上“_height:
1%”,这个问题就完全解决了。
下面的例子作为比较
1、没有闭合浮动元素;2、非IE下闭合浮动元素;3、完全闭合元素。
相关代码如下:
XHTML代码:
ExampleSourceCode[ww
]
Floatleft