Nettuts +運(yùn)營最困難的方面是為很多技能水平不同的用戶提供服務(wù)。如果我們發(fā)布太多高級教程,我的新手用戶將無法從中受益。相反也是如此。我們盡我們最大的努力,但如果你覺得你被忽略了請聯(lián)系我們。這個網(wǎng)站是為你服務(wù)的,所以說出來!如此說來,今天的教程是專為那些剛剛進(jìn)入web開發(fā)領(lǐng)域的人準(zhǔn)備的。如果你的經(jīng)驗(yàn)是一年或更少,希望在這里列出的一些技巧將幫助你成為更好、更高效的開發(fā)者!
閑話少說,讓我們回顧三十個創(chuàng)建標(biāo)記的最佳實(shí)踐。
以前,經(jīng)常見到類似下面的代碼(譯注:這是多久以前啊……):
<li>Some text here.
<li>Some new text here.
<li>You get the idea.
注意外面包裹的UL/OL標(biāo)簽被遺漏了(誰知是故意還是無意的),而且還忘記了關(guān)閉LI標(biāo)簽。按今天的標(biāo)準(zhǔn)來看,這是很明顯的糟糕做法,應(yīng)該100%避免??傊3珠]合標(biāo)簽。否則,你驗(yàn)證html標(biāo)簽的時候可能遇到問題。
更好的方式
<ul>
<li>Some text here. </li>
<li>Some new text here. </li>
<li>You get the idea. </li>
</ul>
筆者早先曾加入過許多CSS論壇,每當(dāng)用戶遇到問題,我們會建議他首先做兩件事:
驗(yàn)證CSS文件,保證沒有錯誤。
確認(rèn)添加了正確的doctype
DOCTYPE 出現(xiàn)在HTML標(biāo)簽之前,它告訴瀏覽器這個頁面包含的是HTML,XHTML,還是兩者混合,這樣瀏覽器才能正確解析。
通常有四種文檔類型可供選擇:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
關(guān)于該使用什么樣的文檔類型聲明,一直有不同的說法。通常認(rèn)為使用最嚴(yán)格的聲明是最佳選擇,但研究表明,大部分瀏覽器會使用普通的方式解析這種聲明,所以很多人選擇使用HTML4.01標(biāo)準(zhǔn)。選擇聲明的底線是,它是不是真的適合你,所以你要綜合考慮來選擇適合你得項(xiàng)目的聲明。
當(dāng)你在埋頭寫代碼時,可能會經(jīng)常順手或偷懶的加上一點(diǎn)行內(nèi)css代碼,就像這樣:
<p style="color: red;">I'm going to make this text red so that it really stands out and makes people take notice! </p>
這樣看起來即方便又沒有問題。然而,這在你的編碼實(shí)踐中是個錯誤。
在你寫代碼時,在內(nèi)容結(jié)構(gòu)完成之前最好不要加入樣式代碼。
這樣的編碼方式就像打游擊,是一種很山寨的做法?!狢hris Coyier
更好的做法是,完成標(biāo)簽部分后,再把這個P的樣式定義在外部樣式表文件里。
建議
#someElement > p {
color: red;
}
理論上講,你可以在任何位置引入CSS樣式表,但HTML規(guī)范建議在網(wǎng)頁的head標(biāo)記中引入,這樣可以加快頁面的渲染速度。
雅虎的開發(fā)過程中,我們發(fā)現(xiàn),在head標(biāo)簽中引入樣式表,會加快網(wǎng)頁加載速度,因?yàn)檫@樣可以使頁面逐步渲染。 —— ySlow團(tuán)隊(duì)
<head>
<title>My Favorites Kinds of Corn</title>
<link rel="stylesheet" type="text/css" media="screen" href="path/to/file.css" />
<link rel="stylesheet" type="text/css" media="screen" href="path/to/anotherFile.css" />
</head>
要記住一個原則,就是讓頁面以最快的速度呈現(xiàn)在用戶面前。當(dāng)加載一個腳本時,頁面會暫停加載,直到腳本完全載入并執(zhí)行完成。因此會浪費(fèi)用戶更多的時間。
如果你的JS文件只是要實(shí)現(xiàn)某些功能,(比如點(diǎn)擊按鈕事件),那就放心的在body底部引入它,這絕對是最佳的方法。
建議
<p>And now you know my favorite kinds of corn. </p>
<script type="text/javascript" src="path/to/file.js"></script>
<script type="text/javascript" src="path/to/anotherFile.js"></script>
</body>
</html>
許多年以前,還存在一種這樣的方式,就是直接將JS代碼加入到HTML標(biāo)簽中。尤其是在簡單的圖片相冊中非常常見。本質(zhì)上講,一個“onclick”事件是附加在 標(biāo)簽上的,其效果等同于一些JS代碼。不需要討論太多,非常不應(yīng)該使用這樣的方式,應(yīng)該把代碼轉(zhuǎn)移到一個外部JS文件中,然后使用“ addEventListener / attachEvent ”加入事件監(jiān)聽器?;蛘呤褂?a rel="external nofollow" target="_blank" target="_blank">jquery等框架,只需要使用“click”方法。
$('a#moreCornInfoLink').click(function() {
alert('Want to learn more about corn?');
});
很多人并不真正理解標(biāo)準(zhǔn)驗(yàn)證的意義和價值,筆者在一篇博客中詳細(xì)分析了這個問題。一句話,驗(yàn)證是為你服務(wù)的,不是給你找麻煩的。
如果你剛開始從事網(wǎng)頁制作,那強(qiáng)烈建議你下載Web Developer Toolbar(chrome用戶請自行在應(yīng)用商店搜索,ie用戶可能就杯具了) ,并在編碼過程中隨時使用”HTML標(biāo)準(zhǔn)驗(yàn)證”和“CSS標(biāo)準(zhǔn)驗(yàn)證”。如果你認(rèn)為CSS是一種非常好學(xué)的語言,那么它會把你整的死去活來。你不嚴(yán)謹(jǐn)?shù)拇a會讓你的頁面漏洞百出,問題不斷,一個好的方法就是—— 驗(yàn)證,驗(yàn)證,再驗(yàn)證。
Firebug是當(dāng)之無愧的網(wǎng)頁開發(fā)最佳插件,它不但可以調(diào)試JavaScript,還可以直觀的讓你了解頁面標(biāo)記的屬性和位置。不用多說, 下載!
據(jù)筆者觀察,大部分的使用者僅僅使用了Firebug 20%的功能,那真是太浪費(fèi)了,你不妨花幾個小時的時間來系統(tǒng)學(xué)習(xí)這個工具,相信會讓你事半功倍。
資源
理論上講,html不區(qū)分大小寫,你可以隨意書寫,例如:
<DIV>
<P>Here's an interesting fact about corn. </P>
</DIV>
但最好不要這樣寫,費(fèi)力氣輸入大些字母沒有任何用處,并且會讓代碼很難看.
建議
<div>
<p>Here's an interesting fact about corn. </p>
</div>
筆者建議你在網(wǎng)頁中使用其中全部六種標(biāo)記,雖然大部分人只會用到前四個,但使用最多的H會有很多好處,比如設(shè)備友好、搜索引擎友好等,不妨把你的P標(biāo)簽都替換成H6。
<h1>This is a really important corn fact! </h1>
<h6>Small, but still significant corn fact goes here. </h6>
今天筆者在Twitter上發(fā)起一次討論:是該把H1定義到LOGO上還是定義到文章標(biāo)題上,有80%的人選擇了后者。
當(dāng)然具體如何使用要看你的需求,但我建議你在建立博客的時候,將文章題目定為H1,這對搜索引擎優(yōu)化(seo)是非常有好處的。
在過去幾年里,雅虎的團(tuán)隊(duì)在前端開發(fā)領(lǐng)域做了許多偉大的工作。前不久,它們發(fā)布了一個叫ySlow的Firebug擴(kuò)展,它會分析你的網(wǎng)頁,并返回 一個“成績單”,上面細(xì)致分析了這個網(wǎng)頁的方方面面,提出需要改進(jìn)的地方,雖然它有點(diǎn)苛刻,但它絕對會對你有所幫助,強(qiáng)烈推薦—— ySlow!
通常網(wǎng)站都會有導(dǎo)航菜單,你可以用這樣的方式定義:
<div id="nav">
<a href="#">Home </a>
<a href="#">About </a>
<a href="#">Contact </a>
</div>
如果你想書寫優(yōu)美的代碼,那最好不要用這種方式。
為什么要用UL布局導(dǎo)航菜單? ——因?yàn)閁L生來就是為定義列表準(zhǔn)備的
最好這樣定義:
<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
IE一直以來都是前端開發(fā)人員的噩夢!
如果你的CSS樣式表基本定型了,那么可以為IE單獨(dú)建立一個樣式表,然后這樣僅對IE生效:
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="screen" href="path/to/ie.css" />
<![endif]-->
這些代碼的意思是:如果用戶瀏覽器是IE6及以下,那這段代碼才會生效。如果你想把IE7也包含進(jìn)來,那么就把“[if lt IE 7]”改為“[if lte IE 7]”。
不論你是Windows還是Mac用戶,這里都有很多優(yōu)秀的編輯器供你選擇:
Mac 用戶
DreamWeaver CS4 PC 用戶
通過壓縮您的CSS和Javascript文件,您可以減少總大小的25%左右,但在開發(fā)過程中不必壓縮,然而,一旦網(wǎng)站完成后,利用一些網(wǎng)絡(luò)壓縮程序或多或少節(jié)省一些帶寬。下面列出一些工具。
Javascript 壓縮服務(wù)
CSS Compression Services
回望我們大多數(shù)人寫的第一個頁面,一定會發(fā)現(xiàn)嚴(yán)重的 “DIV癖”( divitis ),通常初學(xué)者的本能就是把一個段落用DIV包起來,然后為了控制定位而套上更多的DIV?!?其實(shí)這是一種低效而有害的做法。
網(wǎng)頁寫完后,一定要多次回頭檢查,盡量的減少元素的數(shù)量。 能用UL布局的列表就不要用一個個的DIV去布局。
正如寫文章的關(guān)鍵是“縮減,縮減,縮減”一樣,寫頁面也要遵循這個標(biāo)準(zhǔn)。
為圖片加上alt屬性的好處是不言而喻的 —— 這樣可以讓禁用圖片或者使用特殊設(shè)備的用戶無障礙得了解你的王爺信息,并且對圖像搜索引擎友好。
糟糕的做法
<IMG SRC="cornImage.jpg" />
更好的做法
<img src="cornImage.jpg" alt="A corn field I visited." />
我經(jīng)常不知不覺的學(xué)習(xí)工作到凌晨,我認(rèn)為這是個很好的狀況。
我的“啊~哈!”時間( “AH-HA” moments,指柳暗花明或豁然開朗的時刻)通常都發(fā)生在深夜,比如我徹底理解JavaScript的“閉包”概念,就是在這樣一種情況下。如果你還沒有感受過這種奇妙的時刻,那就馬上試試吧!
沒有什么比模仿你的偶像能讓你更快的學(xué)習(xí)HTML。起初,我們都要甘做復(fù)印機(jī),然后慢慢得發(fā)展自己的風(fēng)格。研究你喜歡的網(wǎng)站頁面代碼,看看他們是怎么實(shí)現(xiàn)的。這是高手的必經(jīng)之路,你一定要試一下。注意:只是學(xué)習(xí)和模仿他們的編碼風(fēng)格,而不是抄襲和照搬!
留意網(wǎng)絡(luò)上各種炫酷的JavaScript效果,如果看上去是使用了插件,那根據(jù)它源碼中head標(biāo)簽內(nèi)的文件名,就可以找到這個插件名稱,然后就可以學(xué)習(xí)它據(jù)為己用。
這一條在你制作其他公司企業(yè)網(wǎng)站時尤為必要。你自己不使用blockquote標(biāo)記?那用戶可能會用,你自己不使用OL?用戶也可能會?;〞r間做一個頁面,顯示出ul, ol, p, h1-h6, blockquotes, 等等元素的樣式,檢查一下是否有遺漏。
現(xiàn)在互聯(lián)網(wǎng)上流行著許多可以免費(fèi)加在網(wǎng)頁中的API,這些工具非常強(qiáng)大。它可以幫你實(shí)現(xiàn)許多巧妙的功能,更重要的是可以幫你宣傳網(wǎng)站。
24.掌握Photoshop
Photoshop是前端工程師的一個重要工具,如果你已經(jīng)熟練掌握HTML和CSS,那不妨多學(xué)習(xí)一下Photshop。
雖然有些HTML標(biāo)簽很少用到,但你依然應(yīng)該了解他們。比如“abbr”、“cite”等,你必須學(xué)習(xí)它們以備不時之需。
順便說下,如果你不熟悉上面兩個標(biāo)簽,可以看下下面的解釋:
<abbr>
標(biāo)簽包裹,因?yàn)樗恰癰oulevard”的縮寫。(喜大普奔也可以嘍)。<cite>
包裹,注意它不應(yīng)該被用來包裹引用的作者,這是常見的誤區(qū)。網(wǎng)絡(luò)上有許許多多優(yōu)秀的資源,而社區(qū)中也隱藏著許多高手,這里你既可以自學(xué),也能請教經(jīng)驗(yàn)豐富的開發(fā)者。
Css Reset也就Reset Css ,就是重置一些HTML標(biāo)簽樣式,或者說默認(rèn)的樣式。
關(guān)于是否應(yīng)該使用CSS Reset,網(wǎng)上也有激烈的爭論,筆者是建議使用的。你可以先選用一些成熟的CSS Reset,然后慢慢演變成適合自己的。
html, body, div, span,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
img, ins, kbd, q, s, samp,
small, strike, strong,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baselinebaseline;
background: transparent;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
簡單來說,你應(yīng)該盡可能的對齊你的網(wǎng)頁元素??梢杂^察一下你喜歡的網(wǎng)站,它們的LOGO、標(biāo)題、圖表、段落肯定是對得非常整齊的。否則就會顯得混亂和不專業(yè)。
現(xiàn)在你已經(jīng)掌握了HTML、CSS、Photoshop知識,那么你還需要學(xué)習(xí)如何把PSD轉(zhuǎn)換為網(wǎng)頁上的圖片和背景,下面有兩個不錯的教程:
Javascript和CSS都有許多優(yōu)秀的框架,但如果你是初學(xué)者,不要急于使用它們。如果你還沒能熟練的駕馭CSS,使用框架會混淆你的知識體系。盡管你可能能會說javascript和jQuery是可以同事學(xué)習(xí)的,但這對css并不適合。我個人提倡960 CSS 網(wǎng)格框架,并且我經(jīng)常使用它。還是那句話,如果你是css的初學(xué)者,學(xué)習(xí)框架只會讓你更加困惑。
CSS框架是為熟練開發(fā)者設(shè)計(jì)的,這樣會節(jié)省它們大量的時間。
這篇文章發(fā)表于2009年,彈指一揮間,4年時間已悄然溜走,文中有些知識已顯得陳舊過時,但很多規(guī)則同樣適用,下面是譯者補(bǔ)充的關(guān)于已經(jīng)過時的建議,如果你覺得哪里需要改進(jìn)可以參與討論。
#1
html5標(biāo)準(zhǔn)放寬了要求,允許標(biāo)簽不閉合,而且瀏覽器也能很好的修正這個問題,但這并不是你不閉合標(biāo)簽的理由,有時不閉合標(biāo)簽可能帶來無法預(yù)知的錯誤。放寬標(biāo)準(zhǔn)其實(shí)是降低了開發(fā)的門檻,這本是web的真諦,人人可參與,其實(shí)xhtml規(guī)范要求頁面有錯誤就停止渲染,這本身并不現(xiàn)實(shí),而且瀏覽器也從來沒有這么做過,畢竟用戶寧愿看到有些錯誤的頁面,也不愿看到白板一張。
#8
跨瀏覽器的firebug正在開發(fā)當(dāng)中,然而發(fā)布之日卻遙遙無期,chrome,safari,ie和opera都有自己的開發(fā)者工具,而且功能也不錯,這里推薦chrome的開發(fā)者工具,大有后來者居上之風(fēng),其發(fā)展可謂一日千里,相信超越firebug指日可待。
#9
#16
#20
我以前也曾這樣,確實(shí)學(xué)到不少知識,但自從看了曲黎敏副教授講解的《黃帝內(nèi)經(jīng)》后,就不這樣了,我也不建議你這樣,11點(diǎn)是睡覺的最晚時間了
#23
英文原文標(biāo)題為“使用twitter ”,這個在中國應(yīng)該是微博么!?。?/p>
#25
address標(biāo)簽也容易被誤用,你不見得知道哦!
#27
上面給出的代碼可能已經(jīng)更新,下面有地址,建議用normalize.css而非rerset.css
#30
現(xiàn)在bootstrap或來著居上,本人提倡這個框架,發(fā)展很猛,當(dāng)然還有好多框架都很不錯哦。
#31
本文為翻譯文章原文 “30 html best practices for beginner“,本文為本人整理,原譯文在此 譯文,在原譯文基礎(chǔ)上有所改動。
本系列文章有三篇,令兩篇如下:
更多建議: