1. 程式人生 > >HTML中base標籤

HTML中base標籤

當每個位元組都很重要時,您可以使用HTML < base>標記為頁面上的所有相對URL 指定預設值href和target屬性。像虛擬快捷方式。

對於具有平面目錄結構的較小站點,這不會有太大幫助; 但對於具有深度巢狀目錄的站點,< base>標記可能會從您的網頁中減少很多額外的重量,並且還有助於保持URL更清潔和更短。

因此,如果您對效能進行微優化,< base>標籤可以幫助您。

基本標籤的好處

以下是使用< base>標記的一些好處:

  • 減少頁面重量
  • 節省頻寬
  • 更短的網址
  • 清潔標記
  • 在離線檢視頁面時提供幫助
  • 使遷移更容易(更改一個連結而不是多個連結)
  • 可以更輕鬆地重定向所有相對URL
即使有這些巨大的好處,也不是很多頁面都利用了基本標籤。這可能是因為標籤被誤解和/或不為人所知,或者可能是因為潛在的缺點。

基本標籤的潛在缺點

在下一個專案中使用基本標記之前,請考慮以下可能的缺點:

  • 透明 URL 重寫可能會導致問題
  • 可能會導致一些非常舊的瀏覽器出現問題

以下是基本標記和瀏覽器支援的測試和結果。因此,除非您需要支援最古老的瀏覽器,否則真正的瀏覽器支援不是問題。

這隻留下一個你需要注意的真正問題; 如果您的網站使用任何型別的透明重寫(提示:這與URL重定向不同),那麼base除非您知道自己在做什麼,否則最好避免使用標記。

示例:指定預設URL

這項技術實際上非常簡單。讓我們看一個使用< base>標記指定預設URL 的示例,該URL將應用於頁面上的所有相對URL,包括所有src和href屬性。這意味著基本標記適用於影象,超連結,iframe,表單,指令碼,樣式以及使用src或href引用URL的任何其他標記。

例如,假設您將所有影象巢狀在某處,例如:

http://example.com/here/is/my/deeply/nested/set/of/images/example.jpg

..我們知道可以寫成相對路徑:

/here/is/my/deeply/nested/set/of/images/example.jpg

這在尺寸方面要好一些,但它仍然會新增一些位元組,特別是如果頁面上包含多個影象。例如,對於整個影象庫,使用每個影象的整個路徑實際上將包含額外的重量。幸運的是,通過< base>標記指定預設URL,我們可以做得更好。為此,我們將以下程式碼新增到我們網頁的head部分:

<head>
    <base href="http://example.com/here/is/my/deeply/nested/set/of/images/">
</head>

有了這個,我們可以排除所有影象檔案的整個路徑。所以不要為圖片庫這樣做:

<img src="/here/is/my/deeply/nested/set/of/images/example-01.jpg" alt="">
<img src="/here/is/my/deeply/nested/set/of/images/example-01.jpg" alt="">
<img src="/here/is/my/deeply/nested/set/of/images/example-03.jpg" alt="">
.
.
.

..我們可以這樣做:

<img src="example-01.jpg" alt="">
<img src="example-01.jpg" alt="">
<img src="example-03.jpg" alt="">
.
.
.

根據影象的數量(或您正在使用的任何檔案),< base>標籤可以真正幫助減少頁面重量並保持標記清潔和易於管理。

示例:指定預設目標

該< base>標籤也可用於指定預設target為任何支援的元件(例如,連結,表格,內建頁框,等)屬性。例如:

<head>
    <base target="_blank" href="http://example.com/your/default/path/">
</head>

有了這個,我們可以target在連結上排除屬性。因此,不要為頁面上的每個連結寫這個:

<a target="_blank" href="somewhere.html">Example Link</a>

..我們可以這樣做:

<a href="somewhere.html">Example Link</a>

這進一步降低了整體頁面重量。當然,它不會帶來巨大的節省,但在優化效能時每一點都有幫助。

從預設基值中排除URL

如果您想要包含位於與< base>標籤指定的位置不同的位置的連結或影象,該怎麼辦?簡單。Base僅適用於與基本URL相關的URL。例如,假設我們在頁面上引用了以下URL:

http://example.com/something/somewhere/
/something/somewhere/
something/somewhere/

如果沒有< base>標記,這些URL將按面值處理。現在讓我們通過< base>以下方式新增預設URL :

<base href="http://example.com/default/directory/">

有了這個,我們之前的示例URL更改為:

http://example.com/something/somewhere/
/something/somewhere/
http://example.com/default/directory/something/somewhere/

請注意基值是如何不應用於第一個和第二個URL的?它僅適用於第三個URL。因此,要從基本標記中排除任何URL,我們可以簡單地使用絕對URL,或使用以正斜槓開頭的URL /。這些URL都不會受基本標記的影響。一旦你瞭解它的工作原理,它就是一個非常優雅的解決方案。

瀏覽器支援

< base>所有主流瀏覽器都支援該標記,包括:

  • Chrome
  • 火狐 Firefox
  • 歐朋 Opera
  • 蘋果瀏覽器 Safari
  • IE瀏覽器 Internet Explorer

其他

以下是有關< base>標記的一些有用說明:

  • 您必須使用片段識別符號的絕對URL,例如 #foobar
  • 您必須對查詢字串URL使用絕對URL,例如 ?foo=bar
  • 始終在基本URL上包含尾部斜槓(所以它是一個目錄,而不是一個檔案)
  • 基本標記必須包含在該< head>部分中
  • 每個網頁只能有一個基本標記
  • 基本標記必須指定href屬性,target屬性或兩者
  • 將基本標記放在head部分中的任何其他標記之前,以便將其用於指令碼URL,樣式URL等