應(yīng)用div+css網(wǎng)頁(yè)布局,制作符合web標(biāo)準(zhǔn)的網(wǎng)站,容易出現(xiàn)的一些問(wèn)題。
現(xiàn)在總結(jié)一下,以便大家能夠看到明白問(wèn)題出在那里。
一、css校驗(yàn)的問(wèn)題
我們?cè)O(shè)計(jì)的網(wǎng)頁(yè),都希望符合xhtml標(biāo)準(zhǔn),css通過(guò)w3c的校驗(yàn)。有些未通過(guò)css2.0校驗(yàn),主要校驗(yàn)錯(cuò)誤都是:“line : 0 font-family: 建議你指定一個(gè)種類族科作為最后的選擇”
w3c建議字體定義的時(shí)候,最后以一個(gè)類別的字體結(jié)束,而不要以單獨(dú)某個(gè)字體結(jié)束。例如"sans-serif"就可以保證在不同操作系統(tǒng)下,網(wǎng)頁(yè)字體都能被顯示。
雖然多數(shù)人都在body標(biāo)簽上定義了"sans-serif",但在其它的id或class中再次定義字體時(shí)漏了sans-serif,被認(rèn)為校驗(yàn)不通過(guò)。這個(gè)錯(cuò)誤不是很嚴(yán)重,只要稍加注意就可以避免。
二、css的書寫建議
給css文件加注釋。注釋會(huì)為你今后的維護(hù)帶來(lái)方便,建議盡可能給css文件加注釋,不要擔(dān)心增加少量的字節(jié)。盡量簡(jiǎn)寫css語(yǔ)法。比如顏色值"#ffffff"可以簡(jiǎn)寫成"#fff";"padding-top:30px;padding-right:0;padding-bottom:10px;padding-left:2 0px"可以簡(jiǎn)寫為"padding:30px 0 10px 20px;"。在定義技巧上有更多的節(jié)省技巧,隨著對(duì)css應(yīng)用的熟練,你會(huì)不斷發(fā)現(xiàn)更好的辦法。
三、xhtml校驗(yàn)的問(wèn)題
往往大家對(duì)css的校驗(yàn)比較注意,但在xhtml符合標(biāo)準(zhǔn)方面有點(diǎn)忽視,出現(xiàn)很多低級(jí)錯(cuò)誤。主要問(wèn)題羅列如下:
◎target="_blank",這個(gè)語(yǔ)法在html4.0里是正確的,在xhtml1.0里是不允許使用的。解決的辦法之一是寫成target="new",另外一個(gè)辦法是用js處理所有的target;
◎樣式表最好不要內(nèi)嵌,將樣式表文件獨(dú)立出來(lái)易于維護(hù)。如果內(nèi)嵌<style>一定要寫成<style type="text/css">,其中的type不能忽略,否則xhtml無(wú)法判斷你的style作用在什么方面。
◎<br>必須寫成<br />,xhtml要求所有的標(biāo)簽必須關(guān)閉,不成對(duì)的標(biāo)簽直接在后面加" /"。
◎重復(fù)使用同一id。一個(gè)id在xhtml中只能使用1次,如果需要多次引用樣式,應(yīng)該使用class。
◎flash的嵌入方法錯(cuò)誤。<embed>最早是netscape的私有標(biāo)簽,即使后來(lái)為ie所支持,但始終沒有被w3c承認(rèn),在html4.0沒有<embed>這個(gè)標(biāo)簽。w3c主張的是采用<object>標(biāo)簽。為了解決不同瀏覽器的兼容,有一個(gè)變通的解決方法是2個(gè)標(biāo)簽都采用。
完整的示例代碼如下(flash背景為透明):
以下為引用的內(nèi)容:
<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中依然不可以,我們現(xiàn)在只能通過(guò)把上面代碼寫在flash.js文件里,然后再調(diào)用來(lái)騙過(guò)校驗(yàn)。
<script type="text/javascript" src="flash.js"></script>
關(guān)于flash是否符合標(biāo)準(zhǔn),是一個(gè)存在爭(zhēng)議的問(wèn)題。
◎類似id=header class=title代碼都應(yīng)該寫成id="header" class="title"。給屬性值加引號(hào)是最xhtml基本的語(yǔ)法規(guī)則。
四、兼容的問(wèn)題
有些網(wǎng)站在ie6.0、mozilla firefox1.0、opera 7.12中瀏覽發(fā)生變形和錯(cuò)位。
在ie里居中,但mozilla里沒有。在ie中設(shè)置body {text-align: center;}就已經(jīng)可以居中了,但在mozilla中必須對(duì)需要居中的層再加入以下樣式設(shè)置:margin-right: auto;margin-left: auto;
超出寬度。在mozilla里看正常的頁(yè)面,在ie里因?yàn)槌鰧挾榷冃危⑴诺膶右频较旅嫒チ恕_@個(gè)情況是因?yàn)閕e和mozilla對(duì)盒模型解釋不同造成的,有很多解決辦法,比如"!important"方法。
web標(biāo)準(zhǔn)和css布局已經(jīng)被越來(lái)越多的設(shè)計(jì)師了解和掌握。css布局經(jīng)過(guò)一段時(shí)間的消化理解和應(yīng)用,會(huì)有更多技術(shù)美觀兼顧的網(wǎng)頁(yè)涌現(xiàn)。
新聞熱點(diǎn)
疑難解答
圖片精選