在本文,我們將帶領(lǐng)你從HTML最基礎(chǔ)的部分開始學(xué)習(xí) - 我們定義元素,屬性以及你可能聽到的其他重要術(shù)語,以及它們適合語言的位置。我們還顯示了HTML元素的結(jié)構(gòu),典型的HTML頁面的結(jié)構(gòu),以及解釋其他重要的基本語言特性。一路上,我們會玩一些HTML,讓你感興趣!
前提: | 基本的計算機(jī)素養(yǎng),基礎(chǔ)軟件安裝,和使用文件的基本知識。 |
---|---|
目的: | 要獲得對HTML語言的基本熟悉,并通過一些練習(xí)寫幾個HTML元素。 |
HTML (HyperText Markup Language) 不是一種編程語言;它是一種標(biāo)記語言,用于告訴你的瀏覽器如何構(gòu)造你訪問的網(wǎng)頁。它可以像Web開發(fā)人員希望的那樣復(fù)雜或簡單。HTML由一系列的 elements,你可以使用它來封裝,包裝或標(biāo)記內(nèi)容的不同部分,使其以某種方式顯示,或以某種方式執(zhí)行。封閉tags 可以使一點(diǎn)內(nèi)容成為超鏈接以鏈接到Web上的另一頁面,斜體字等等。例如,采取以下行內(nèi)容
My cat is very grumpy
如果我們想要自己的行,我們可以指定它是一個段落通過將它包含在段落標(biāo)簽(<p>) 元素:
<p>My cat is very grumpy</p>
讓我們進(jìn)一步探討我們的段落元素:
我們的元素的主要部分是:
通過使用標(biāo)簽<em>和</ em>(在其旁邊放置<em>打開元素,在輸入?yún)^(qū)域中編輯下面的行, 和</ em>之后,關(guān)閉元素) - 這應(yīng)該給線斜體強(qiáng)調(diào)!你可以在"輸出"區(qū)域中實時查看更改更新。
如果你犯了錯誤,你可以使用重置按鈕總是重置。如果你真的卡住了,按顯示解決方案按鈕看到答案。
This is my text.
你也可以把元素放到其它元素之中——這被稱作嵌套。如果我們想要表明我們的小貓脾氣很暴躁,可以將very嵌套在<strong>中,意味著這個單詞被著重強(qiáng)調(diào):
<p>My cat is <strong>very</strong> grumpy.</p>
你需要確保元素被正確的嵌套:在上面的例子中我們先打開<p>元素,然后才打開<strong>元素,因此必須先將<strong>元素關(guān)閉,然后再去關(guān)閉<p>元素。下面的例子是錯誤的:
<p>My cat is <strong>very grumpy.</p></strong>
所以的元素都需要正確的打開和關(guān)閉,這樣才能按你所想的方式展現(xiàn)。如果像上述的例子一樣進(jìn)行了錯誤的嵌套,那么瀏覽器會去猜測你想要表達(dá)的意思,但很有可能會得出錯誤的結(jié)果。所以永遠(yuǎn)不要這么做!
在HTML中有兩種你需要知道的重要元素類別,塊級元素和內(nèi)聯(lián)元素。
看一看下面的例子:
<em>first</em><em>second</em><em>third</em><p>fourth</p><p>fifth</p><p>sixth</p>
<em>是一個內(nèi)聯(lián)元素,所以就像你在下方可以看到的,第一行代碼中的三個元素都沒有間隙的展示在了同一行。而<p>是一個塊級元素,所以第二行代碼中的每個元素分別都另起了新的一行展現(xiàn),并且每個段落間都有一些間隔(這是因為默認(rèn)的瀏覽器有著默認(rèn)的展示 <p>元素的 CSS styling )。
以上結(jié)果如下:
firstsecondthird
fourth
fifth
sixth
提示:HTML5重新定義了HTML5中的元素類別:請參閱 元素內(nèi)容分類。盡管這些新的定義更精確,但卻比上述的"塊級元素"和"內(nèi)聯(lián)元素"更難理解,因此在之后的討論中仍使用舊的定義。
不是所有元素都擁有開始標(biāo)簽,內(nèi)容和結(jié)束標(biāo)簽。一些元素只有一個標(biāo)簽,通常用來在此元素所在位置插入/嵌入一些東西 。例如:元素<img>是用來在元素<img>所在位置插入一張指定的圖片。例子如下:
<img src="https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/images/firefox-icon.png">
顯示如下:
提示:空元素有時也稱為 void元素。
元素也可以擁有屬性,如下:
屬性包含元素的額外信息,這些信息不會出現(xiàn)在實際的內(nèi)容中。在上述例子中,這個class屬性給元素賦了一個識別的名字(id),這個名字此后可以被用來識別此元素的樣式信息和其他信息。
一個屬性必須包含如下內(nèi)容:
另一個例子是關(guān)于元素<a>的——元素<a>是錨,它使被標(biāo)簽包裹的內(nèi)容成為一個超鏈接。此元素也可以添加大量的屬性,其中兩個如下:
在下面的文本框中內(nèi)容,使之變成指向任一個你喜歡的web地址的鏈接。首先,添加<a>元素,然后為它添加href屬性和title屬性。你可以適時地在輸出區(qū)域看到你改變的內(nèi)容。你應(yīng)該可以看到一個鏈接,當(dāng)鼠標(biāo)移上此鏈接時會顯示title屬性值,當(dāng)點(diǎn)擊此鏈接時會跳轉(zhuǎn)到href指定的web地址。記?。涸谠孛蛯傩悦g以及兩個屬性之間要有一個空格space。
當(dāng)你出錯時,你可以用Reset 按鈕修改它。當(dāng)你真正完成這個任務(wù)時,點(diǎn)擊Show solution 按鈕觀看答案。
A link to my favourite website.
有時你會看到?jīng)]有值的屬性,它是合規(guī)的。這些屬性被稱為布爾屬性,他們只能有跟它的屬性名一樣的屬性值。例如disabled這個屬性,他們可以標(biāo)記form input(文本框)使之變?yōu)椴豢捎茫ㄗ兓疑藭r用戶不能向他們輸入任何數(shù)據(jù)。
<input type="text" disabled="disabled">
采用如下簡寫更佳(下面一句為可用可輸入數(shù)據(jù)的文本框,以作為對比):
<input type="text" disabled><input type="text">
上面兩個文本框顯示如下:
當(dāng)你瀏覽那些粗糙的web網(wǎng)站,你將會看見各種各樣奇怪的標(biāo)記風(fēng)格,其中就有不給屬性值添加引號。在某些情況下它是被允許的,但是其他情況下會破會你的標(biāo)記。例如,我們可以寫一個只擁有一個href屬性的鏈接,如下:
<a href=https://www.mozilla.org/>favourite website</a>
然而,當(dāng)我們再添加一個title屬性時就會出錯,如下:
<a href=https://www.mozilla.org/ title=The Mozilla homepage>favourite website</a>
此時瀏覽器會誤解你的標(biāo)記,它會把title屬性理解為三個屬性——title的屬性值為"The",另外還有兩個布爾屬性"Mozilla"和"homepage"??聪旅娴睦?,它明顯不是我們所期望的,并且在這個編碼里面它會報錯或者出現(xiàn)異常行為。試一試把鼠標(biāo)移動到連接上,看會顯示什么title屬性值!
我們建議始終添加引號——這樣可以避免很多問題,并且使代碼更易讀。
在目前為止,本章內(nèi)容所有的屬性都是由雙引號來包裹。也許在一些HTML中,你以前也見過單引號。這只是風(fēng)格的問題,你可以從中選擇一個你喜歡的。以下兩種情況都可以:
<a href="http://www.example.com">A link to my example.</a><a >A link to my example.</a>
但你應(yīng)該注意單引號和雙引號不能在一個屬性值里面混用。下面的語法是錯誤的:
<a href="http://www.example.com'>A link to my example.</a>
在一個HTML中已使用一種引號,你可以在此引號中嵌套另外一種引號:
<a href="http://www.example.com" title="Isn't this fun?">A link to my example.</a>
如果你想嵌套一樣的引號,你就必須使用實體引用:包括HTML中的特殊字符。
學(xué)習(xí)了一些HMTL元素的基礎(chǔ)知識,這些元素單獨(dú)一個是沒有意義的。現(xiàn)在我們來學(xué)習(xí)這些特定元素是怎么被結(jié)合起來,從而形成一個完整的HTML頁面的:
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>My test page</title> </head> <body> <p>This is my page</p> </body></html>
分析如下:
如果你想在你的本地練習(xí)寫一些HTML頁面,你可以這樣做:
提示:你也可以在MDN Learning Area Github repo上找到這些基礎(chǔ)的HTML示例。
你可以打開瀏覽器看看這段代碼的效果是什么樣的,然后改變代碼刷新瀏覽器看看新的結(jié)果。 最開始的代碼是這樣的效果:
所以在這段練習(xí)中,你可以用你的電腦在本地編寫運(yùn)行代碼,如上所述,你也可以在下面的簡單可編輯窗口編輯它(此時這個簡單的可編輯窗口僅顯示<body>標(biāo)簽內(nèi)的內(nèi)容)。我們希望你能夠?qū)嵺`以下步驟:
當(dāng)你出錯時,你可以用Reset按鈕重置。如果你遇到問題,請按Show solution按鈕查看答案。
This is my page
在上面的例子中,你可能已經(jīng)注意到了大量的空格被包括在代碼清單中 - 這不是必須的;以下兩個代碼段是等效的:
<p>Dogs are silly.</p><p>Dogs are silly.</p>
無論你使用多少空格(包括空格字符,但不包括換行符),當(dāng)渲染這些代碼的時候,HTML解釋器會將連續(xù)出現(xiàn)的空白字符減少為一個單獨(dú)的空格符。那么為什么我們會使用那么多的空格呢? 答案就是為了可讀性 —— 如果你的代碼被很好地進(jìn)行格式化,那么就很容易理解你的代碼是怎么回事,反之就只有聚做一團(tuán)的混亂。在我們的HTML代碼中,我們讓每一個嵌套的元素以兩個空格縮進(jìn)。你使用什么風(fēng)格來格式化你的代碼取決于你(比如所對于每層縮進(jìn)使用多少個空格),但是你應(yīng)該堅持使用某種風(fēng)格。
在HTML中,字符 <,>,",' 和 & 是特殊字符,它們是HTML語法自身的一部分,那么你如何將這些字符包含進(jìn)你的文本中呢,比如說如果你真的想要在文本中使用符號&或者小于號,而不想讓它們被瀏覽器視為代碼并被解釋?
我們必須使用字符引用 - 表示字符的特殊編碼,它們可以在哪些情況下使用。每個字符引用以&符號開頭,并以分號(;)結(jié)束。
文字字符 | 字符引用等價 |
---|---|
< | < |
> | > |
" | " |
' | ' |
& | & |
在下面的示例中,您可以看到兩個段落,它們在談?wù)揥eb技術(shù):
<p>In HTML, you define a paragraph using the <p> element.</p><p>In HTML, you define a paragraph using the <p> element.</p>
在下面的實時輸出中,你會看到第一段是錯誤的,因為瀏覽器會認(rèn)為第二個<p>是開始一個新的段落!第二段是正確的,因為我們用字符引用來代替了角括號('<'和'>'符號)。
提示:維基百科上有一個包含所有可用HTML字符實體引用的列表:XML和HTML字符實體引用列表。
如同大部分的編程語言一樣,在HTML中有一種可用的機(jī)制來在代碼中書寫注釋 —— 注釋是被瀏覽器忽略的,而且是對用戶不可見的,它們的目的是允許你描述你的代碼是如何工作的和不同部分的代碼做了什么等等。如果你在半年后重新返回你的代碼庫,而且不能記起你所做的事情 —— 或者當(dāng)你處理別人的代碼的時候,那么注釋是很有用的。
為了將一段HTML中的內(nèi)容置為注釋,你需要將其用特殊的記號<!--和-->包括起來, 比如:
<p>I'm not inside a comment</p><!-- <p>I am!</p> -->
如下圖所示,第一段出現(xiàn)在實時輸出中,但第二段沒有出現(xiàn)。
你已經(jīng)來到了這篇文章的結(jié)尾 —— 希望你享受你的基礎(chǔ)HTML學(xué)習(xí)的旅程。在這里你應(yīng)該可以理解HTML語言的全貌,它在基礎(chǔ)的級別是如何工作,而且可以使用一些元素和屬性。在這個模塊的后續(xù)文章中,我們會深入一些你已經(jīng)見過的東西的細(xì)節(jié),并且介紹一些新的HTML的特性。未完待續(xù)!
提示:現(xiàn)在,你將開始學(xué)習(xí)更多關(guān)于HTML的知識,你可能也想了解一些層疊樣式列表(CSS)的基礎(chǔ)知識。CSS是一種用來設(shè)計網(wǎng)頁樣式的語言(比如,用它改變字體、顏色或頁面布局等)。你很快就會發(fā)現(xiàn),HTML和CSS能很好地協(xié)調(diào)配合。
更多建議: