DIV+CSS网页布局中容易出现的问题汇总

作者:网络 来源:佚名 更新时间:2009-06-27 点击:

应用div+css网页布局,制作符合web标准的网站,容易出现的一些问题。

现在总结一下,以便大家能够看到明白问题出在那里。

一、css校验的问题

我们设计的网页,都希望符合xhtml标准,css通过w3c的校验。有些未通过css2.0校验,主要校验错误都是:“line : 0 font-family: 建议你指定一个种类族科作为最后的选择”

w3c建议字体定义的时候,最后以一个类别的字体结束,而不要以单独某个字体结束。例如"sans-serif"就可以保证在不同操作系统下,网页字体都能被显示。

虽然多数人都在body标签上定义了"sans-serif",但在其它的id或class中再次定义字体时漏了sans-serif,被认为校验不通过。这个错误不是很严重,只要稍加注意就可以避免。

二、css的书写建议

给css文件加注释。注释会为你今后的维护带来方便,建议尽可能给css文件加注释,不要担心增加少量的字节。尽量简写css语法。比如颜色值"#ffffff"可以简写成"#fff";"padding-top:30px;padding-right:0;padding-bottom:10px;padding-left:2 0px"可以简写为"padding:30px 0 10px 20px;"。在定义技巧上有更多的节省技巧,随着对css应用的熟练,你会不断发现更好的办法。

三、xhtml校验的问题

往往大家对css的校验比较注意,但在xhtml符合标准方面有点忽视,出现很多低级错误。主要问题罗列如下:

◎target="_blank",这个语法在html4.0里是正确的,在xhtml1.0里是不允许使用的。解决的办法之一是写成target="new",另外一个办法是用js处理所有的target;

◎样式表最好不要内嵌,将样式表文件独立出来易于维护。如果内嵌<style>一定要写成<style type="text/css">,其中的type不能忽略,否则xhtml无法判断你的style作用在什么方面。

◎<br>必须写成<br />,xhtml要求所有的标签必须关闭,不成对的标签直接在后面加" /"。

◎重复使用同一id。一个id在xhtml中只能使用1次,如果需要多次引用样式,应该使用class。

flash的嵌入方法错误。<embed>最早是netscape的私有标签,即使后来为ie所支持,但始终没有被w3c承认,在html4.0没有<embed>这个标签。w3c主张的是采用<object>标签。为了解决不同浏览器的兼容,有一个变通的解决方法是2个标签都采用。

完整的示例代码如下(flash背景为透明):


以下为引用的内容:
<object
classid="clsid:27cdb6e-ae6d-11cf-96b8-444553540000" codebase=
"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
width="300" height="100">
<param name="quality" value="high">
<param name="wmode" value="transparent">
<param name="src" value="test.swf">
<embed src="test.swf" wmode="transparent" quality="high"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash"
type="application/x-shockwave-flash" width="300" height="100">
</embed>
</object>

但直接写在xhtml中依然不可以,我们现在只能通过把上面代码写在flash.js文件里,然后再调用来骗过校验。

<script type="text/javascript" src="flash.js"></script>

关于flash是否符合标准,是一个存在争议的问题。

◎类似id=header class=title代码都应该写成id="header" class="title"。给属性值加引号是最xhtml基本的语法规则。

四、兼容的问题

有些网站在ie6.0、mozilla firefox1.0、opera 7.12中浏览发生变形和错位。

在ie里居中,但mozilla里没有。在ie中设置body {text-align: center;}就已经可以居中了,但在mozilla中必须对需要居中的层再加入以下样式设置:margin-right: auto;margin-left: auto;

超出宽度。在mozilla里看正常的页面,在ie里因为超出宽度而变形,并排的层移到下面去了。这个情况是因为ie和mozilla对盒模型解释不同造成的,有很多解决办法,比如"!important"方法。

web标准和css布局已经被越来越多的设计师了解和掌握。css布局经过一段时间的消化理解和应用,会有更多技术美观兼顾的网页涌现。