超鏈接真的很重要 - 它們使Web成為一個Web。本文介紹了創(chuàng)建鏈接所需的語法,并討論了鏈接最佳做法。
前提: | 熟悉基本HTML,詳情參閱 HTML入門。了解HTML 文本格式,詳情參閱 HTML文本基礎。 |
---|---|
目標: | 學習如何實現(xiàn)一個有效的把多個文件鏈接在一起的超文本鏈接。 |
注意:URL可以指向HTML文件,文本文件,圖像,文本文檔,視頻和音頻文件以及可以在網(wǎng)絡上存在的任何其他內(nèi)容。如果Web瀏覽器不知道如何顯示或處理文件,它會詢問你是否要打開文件(在這種情況下,打開或處理文件的義務傳遞到設備上的合適的本機應用程序)或 下載文件(在這種情況下,你可以嘗試以后處理它)。
例如,BBC主頁包含大量的鏈接,不僅指向多個新聞故事,而且指向網(wǎng)站的不同區(qū)域(導航功能),登錄/注冊頁面(用戶工具)等等。
通過將文本(或其他內(nèi)容,見塊級鏈接)轉(zhuǎn)換為<a>
元素內(nèi)的鏈接來創(chuàng)建基本鏈接, 給它一個href
屬性(也稱為目標),它將包含你希望鏈接指向的網(wǎng)址。
<p>I'm creating a link to <a href="https://www.mozilla.org/en-US/">the Mozilla homepage</a>. </p>
以上代碼結(jié)果如下:
I'm creating a link to the Mozilla homepage.
你可能想要給你的鏈接添加的另一個屬性是<title>(標題);這旨在包含關于鏈接的補充的有用信息,例如頁面包含什么樣的信息或需要注意的事情。例如:
<p>I'm creating a link to <a href="https://www.mozilla.org/en-US/" title="The best place to find more information about Mozilla's mission and how to contribute">the Mozilla homepage</a>. </p>
以上代碼結(jié)果如下(當懸停在鏈接上時,標題將作為提示文本出現(xiàn)):
I'm creating a link to the Mozilla homepage.
主動學習時間:我們希望你使用本地代碼編輯器創(chuàng)建一個HTML文檔(我們的 getting started template就做的很好)。
如上所述,你可以將一些內(nèi)容轉(zhuǎn)換為鏈接,甚至是 塊級元素。如果你想要將一個圖像轉(zhuǎn)換為鏈接 ,你只需把圖像放到<a></a>
標簽中間。
<a href="https://www.mozilla.org/en-US/"> <img src="mozilla-image.png" alt="mozilla logo that links to the mozilla homepage"> </a>
注意:你將在以后的文章中了解到更多有關在網(wǎng)絡上使用圖片的內(nèi)容。
要快速地了解鏈接目標,你需要了解URLs和文件路徑。在這一部分為你提供了你所需的信息。
一個URL,或統(tǒng)一資源定位器只是定義在網(wǎng)絡上的位置的一個文本字符串。例如Mozilla的英文主頁定位在https://www.mozilla.org/en-US/
。
URLs使用路徑查找文件。路徑指定文件系統(tǒng)中你感興趣的文件所在的位置。看一下一個簡單的目錄結(jié)構(gòu)的例子(參見 creating-hyperlinks 目錄)。
此目錄結(jié)構(gòu)的根目錄稱為creation-hyperlinks。當在網(wǎng)站上工作時,你會有一個包含整個網(wǎng)站的目錄。在根目錄,我們有一個index.html
和一個contacts.html
文件。在真實的網(wǎng)站上,index.html
將會成為我們的主頁或登錄頁面。
我們的根目錄還有兩個目錄:pdfs
和projects
。它們分別包含單個文件 — 一個 PDF (project-brief.pdf
) 和一個index.html
文件。請注意你可以有兩個index.html文件在一個項目下的不同的系統(tǒng)文件位置。許多網(wǎng)站就是如此。第二個index.html或許是項目相關信息的主登錄界面。
相同目錄:如果index.html
(頂層的index.html)想要包含一個超鏈接(hyperlink)指向contacts.html
,你只需要指定到想要鏈接的文件名,因為它與當前文件是在同一個目錄的。所以你應該使用的URL是contacts.html
:
<p>Want to contact a specific staff member? Find details on our <a href="contacts.html">contacts page</a>.</p>
向下移動到子目錄:如果你想在index.html
(頂層index.html
)中包含一個指向projects/index.html
的超鏈接,你需要進入project目錄,然后指明要鏈接到的文件。通過指定目錄的名稱,然后是正斜杠,然后是文件的名稱來完成。因此你要使用的URL是projects/index.html
:
<p>Visit my <a href="projects/index.html">project homepage</a>.</p>
回到上級目錄:如果你想在projects/index.html
中包含一個指向pdfs/project-brief.pdf
的超鏈接,你必須返回上一個目錄級,然后再回到pdf目錄。“返回上一個目錄級”使用兩個點表示:..
,所以你應該使用的URL是../pdfs/project-brief.pdf
:
<p>A link to my <a href="../pdfs/project-brief.pdf">project brief</a>.</p>
注意:你可以根據(jù)需要將這些功能的多個實例合并為復雜的url,例如:../../../complex/path/to/my/file.html
。
可以鏈接到HTML文檔的特定部分(稱為文檔碎片),而不僅僅是文檔頂部。為此,你首先必須為要鏈接的元素分配一個 id
屬性。通常鏈接到特定標題是有意義的,因此它看起來像下面這樣:
<h2 id="Mailing_address">Mailing address</h2>
然后鏈接到該特定的 id
,你可以將它包含在URL的末尾,前面加上哈希/井號符號,例如:
<p>Want to write us a letter? Use our <a href="contacts.html#Mailing_address">mailing address</a>.</p>
你甚至可以使用文檔碎片引用鏈接到同一文檔的另一部分:
<p>The <a href="#Mailing_address">company mailing address</a> can be found at the bottom of this page.</p>
你在網(wǎng)絡上遇到的兩個術(shù)語是絕對URT和相對URL:
絕對URL:指向由其在Web上的絕對位置定義的位置,包括協(xié)議和域名。像下面的例子,如果將index.html
頁面上傳到projects
這一個目錄,project
位于web服務器的根目錄,web站點的域名為http://www.example.com
,那么這個頁面可以通過http://www.example.com/projects/index.html
訪問(或者僅僅通過http://www.example.com/projects/
來訪問,因為大多數(shù)web服務器是通過查找像index.html
這樣的頁面來加載,如果沒有特定的URL的話)。
絕對URL總是指向相同的位置,不管它在哪里使用。
相對URL:指向與你鏈接的文件相關的位置,更像我們在前面一節(jié)中所看到的位置。例如,如果我們想從示例文件鏈接http://www.example.com/projects/index.html
轉(zhuǎn)到相同目錄下的一個PDF文件,那么URL就是文件名。例如:project-brief.pdf
——不需要額外的信息。如果PDF文件能夠在projects
的子目錄pdfs
中訪問到,相對路徑就是pdfs/project-brief.pdf
(對應的絕對URL就是 http://www.example.com/projects/pdfs/project-brief.pdf
)。
一個相對URL將指向不同的位置,具體取決于內(nèi)部使用的文件所在的位置——例如,如果我們把index.html
文件從projects
目錄移出來并進入Web站點的根目錄(最高層級,而不是任何目錄中),pdfs/project-brief.pdf
的相對URL將會指向http://www.example.com/pdfs/project-brief.pdf
,而不是http://www.example.com/projects/pdfs/project-brief.pdf
。
在編寫鏈接時,有一些最佳做法。讓我們來看看這些。
在你的網(wǎng)頁上放置鏈接很容易。但這還不夠,我們需要讓所有讀者都可以訪問我們的鏈接,無論他們當前所處的上下文以及他們喜歡用哪種工具。例如:
讓我們來看一個具體的例子:
好鏈接文字: 下載Firefox
<p><a href="https://firefox.com/"> Download Firefox </a></p>
不好鏈接文字: 點擊此處下載Firefox
<p><a href="https://firefox.com/"> Click here </a> to download Firefox</p>
其他提示:
從上面的描述,你可能會認為始終使用絕對鏈接是一個好主意;畢竟,當頁面像相對鏈接一樣移動時,它們不會中斷。但是,在鏈接到同一網(wǎng)站中的其他位置時,你應該盡可能使用相對鏈接(當鏈接到另一個網(wǎng)站時,你將需要使用絕對鏈接):
當鏈接到一個要下載的資源(如PDF或Word文檔)或流式傳輸(如視頻或音頻)或有另一種潛在的意外效果(打開一個彈出窗口或加載Flash電影)的資源時,你應該添加清晰的措辭,減少任何混亂。下面就是一些很惱人的例子:
讓我們來看一些例子,看看這里可以使用什么樣的文本:
<p><a href="http://www.example.com/large-report.pdf"> Download the sales report (PDF, 10MB) </a></p> <p><a href="http://www.example.com/video-stream/"> Watch the video (stream opens in separate tab, HD quality) </a></p> <p><a href="http://www.example.com/car-game"> Play the car game (requires Flash) </a></p>
當鏈接到要下載的資源而不是在瀏覽器中打開時,可以使用 download
屬性來提供一個默認的保存文件名。下面是一個下載鏈接到Firefox 39 Windows版本的示例:
<a href="https://download.mozilla.org/?product=firefox-39.0-SSL&os=win&lang=en-US" download="firefox-39-installer.exe"> Download Firefox 39 for Windows </a>
對于此練習,我們希望你把一些頁面和導航菜單鏈接起來,創(chuàng)建一個多頁面的網(wǎng)站。這是創(chuàng)建網(wǎng)站的一種常見方式——在每個頁面上使用相同的網(wǎng)頁結(jié)構(gòu),包括相同的導航菜單,因此當點擊鏈接時,它給人的印象是你停留在同一個地方,而不同的內(nèi)容正在被提出來。
你需要在同一目錄中創(chuàng)建以下四個頁面的本地副本(請參閱navigation-menu-start目錄獲取完整的文件列表):
你應該:
最終的例子應該是這樣的:
注意:如果你卡住了,或者不確定自己是否正確,可以查看navigation-menu-marked-up目錄,查看正確答案。
當點擊一個鏈接或按鈕時,打開一個新的電子郵件發(fā)送信息而不是連接到一個資源或頁面,這種情況是可以做到的。這樣做是使用<a>
元素和mailto:URL
的方案。
在其最基本和最常用的形式中, mailto:link
僅表示預期收件人的電子郵件地址。 例如:
<a href="mailto:nowhere@mozilla.org">Send email to nowhere</a>
這會創(chuàng)建一個鏈接,看起來像這樣:Send email to nowhere。
實際上,電子郵件地址甚至是可選的。如果你把它遺漏了(也就是說,你的 href
只是簡單的“mailto:”),一個新的發(fā)送電子郵件的窗口也會被用戶的郵件客戶端打開,只是沒有收件人的地址信息。這通常用作“共享”鏈接,用戶可以單擊該鏈接將電子郵件發(fā)送到他們選擇的地址。
除了電子郵件地址,你還可以提供其他信息。事實上,任何標準郵件標題字段都可以添加到你提供的mailto URL。其中最常用的是“subject”(主題),“cc”和“body”(正文)(這不是真正的標題字段,但允許你為新電子郵件指定一個短內(nèi)容消息)。每個字段及其值都被指定為查詢項。
下面是一個包含cc,bcc,主題和正文的示例:
<a href="mailto:nowhere@mozilla.org?cc=name2@rapidtables.com&bcc=name3@rapidtables.com&subject=The%20subject%20of%20the%20email &body=The%20body%20of%20the%20email"> Send mail with cc, bcc, subject and body </a>
注意:每個字段的值必須是URL編碼的,也就是使用非打印字符(不可見字符,如標簽、回車符合分頁符)和空格百分號編碼。還要注意使用問號(?)將主URL與字段值分開,并用&符號來分隔mailto:URL中的每個字段。這是標準的URL查詢符號。閱讀The GET method了解什么URL查詢符號是更常用的。
以下是其他一些mailto:url
示例:
就目前來說,以上是關于鏈接的介紹!當你在后面的課程中開始學習設置樣式時,你將會需要回顧鏈接這一章節(jié)。接下來的HTML,我們將返回到文本語義,并看看一些你會覺得有用的更高級/不尋常的功能——你的下一站是“高級文本格式”。
更多建議: