欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTML5中的A 標(biāo)簽詳解

  發(fā)布時間:2024-05-28 17:29:51   作者:DonV   我要評論
a 元素可通過其href屬性創(chuàng)建指向其他網(wǎng)頁、文件、同一頁面內(nèi)的位置或其他URL的超鏈接,這篇文章主要介紹了HTML5中的A 標(biāo)簽,需要的朋友可以參考下

概述

a 元素可通過其href屬性創(chuàng)建指向其他網(wǎng)頁、文件、同一頁面內(nèi)的位置或其他URL的超鏈接。

其基本屬性及含義如下。

  • href:鏈接目標(biāo)的URL
  • hreflang:指定目標(biāo)URL的語言
  • rel:指定當(dāng)前文檔和被鏈接文檔的關(guān)系
  • target:指定打開目標(biāo)URL的方式
  • media:指定目標(biāo)URL的媒體類型
  • type:指定目標(biāo)URLMIME 類型
  • download:指示瀏覽器下載URL

鏈接樣式

在瀏覽器中a標(biāo)簽的默認(rèn)樣式帶有下劃線,其狀態(tài)和顏色如下。

  • link:未訪問狀態(tài),字體顏色為藍(lán)色
  • visited:已訪問狀態(tài),字體顏色為紫色
  • hover:鼠標(biāo)懸停狀態(tài)
  • active:鼠標(biāo)點擊時狀態(tài),字體顏色為紅色
  • focus:聚焦時的狀態(tài),可通過Tab鍵聚焦元素,聚焦時會出現(xiàn)邊框(不同瀏覽器樣式不一致)
<a >百度</a>

可通過偽類自定義不同狀態(tài)的樣式,注意linkvisited必須在最前面,且沒有先后順序,而focushoveractive 必須在后面,并且一定是focus、hover、active的順序。

首先靜態(tài)時(元素未被聚焦、鼠標(biāo)點擊或懸?。?,a標(biāo)簽只能為未訪問和已訪問狀態(tài)中的一種,進(jìn)而只會命中linkvisited偽類中的一種,另一種不會生效,因此linkvisited沒有先后順序。

而在動態(tài)時(比如鼠標(biāo)懸浮),a標(biāo)簽此時的樣式應(yīng)該是呈現(xiàn)懸浮的樣式,由于偽類的權(quán)重都是一樣的,因此hover偽類的樣式必然要位于linkvisited后面,才能覆蓋其樣式。

可以通過Tab鍵聚焦a標(biāo)簽,聚焦后,若鼠標(biāo)懸浮在標(biāo)簽上,此時則需要呈現(xiàn)懸浮的樣式,因此hover位于focus后面。

而在a標(biāo)簽被懸浮時,若此時點擊鼠標(biāo)不松開,則此時需要呈現(xiàn)點擊的樣式,因此active位于hover后面。

所以偽類順序只能為link、visited、focushover、active或者visited、link、focus、hover、active兩種。

a:link {
  color: pink;
}
a:visited {
  color: orange;
}
a:focus {
  color: blue;
}
a:hover {
  color: red;
}
a:active {
  color: green;
}

指定鏈接打開方式

target用于指定鏈接的打開方式,包括如下四種。

  • _self:當(dāng)前頁面打開鏈接
  • _blank:新窗口打開鏈接
  • _parent:在當(dāng)前框架的父框架打開頁面
  • _top:在當(dāng)前框架的頂層框架打開頁面

如下為main.html、top.html、center.html、left.htmlright.html的頁面結(jié)構(gòu),其中main.html通過iframe方式引入top.htmlcenter.htmlcenter.html也通過iframe方式引入left.htmlright.html。

頁面部分代碼如下。

// main.html
<head>
  <style>
    body {
      width: 1500px;
      margin: 10px auto;
      display: flex;
      flex-direction: column;
    }
    iframe {
      width: 100%;
    }
  </style>
</head>
<body>
  <iframe src="top.html" frameborder="0" height="300px"></iframe>
  <iframe src="center.html" frameborder="0" height="600px"></iframe>
</body>
// top.html
<head>
  <style>
    body {
      width: 100%;
      height: 300px;
      margin: 0;
      background-color: #FF952C;
    }
  </style>
</head>
<body></body>
// center.html
<head>
  <style>
    body {
      height: 600px;
      background-color: #FFCC00;
      display: flex;
      margin: 0;
    }
    iframe {
      height: 500px;
    }
  </style>
</head>
<body>
  <iframe src="left.html" frameborder="0" style="width: 200px;"></iframe>
  <iframe src="right.html" frameborder="0" style="width: 1300px"></iframe>
</body>
// left.html
<head>
  <style>
    body {
      margin: 0;
      width: 100%;
      height: 500px;
      background-color: #02BF0F;
    }
  </style>
</head>
<body></body>
// right.html
<head>
  <style>
    body {
      margin: 0;
      width: 100%;
      height: 500px;
      background-color: #2196F3;
    }
  </style>
</head>
<body>
  <a  target="_self" style="color: #fff;text-decoration: none;">百度</a>
</body>

_self

修改right.htmla標(biāo)簽的target_self,單擊a標(biāo)簽。

可以看到在right.html框架中打開了百度,即在自身頁面中單擊target_self屬性的鏈接,將在本頁面框架中打開目標(biāo)頁面。

_parant

修改right.htmla標(biāo)簽的target_parent,單擊a標(biāo)簽。

可以看到在center.html框架中打開了百度,即在自身頁面中單擊target_parent屬性的鏈接,將在本頁面的父框架中打開目標(biāo)頁面。

_top

修改right.htmla標(biāo)簽的target_top,單擊a標(biāo)簽。

可以看到在main.html框架中打開了百度,即在自身頁面中單擊target_top屬性的鏈接,將在本頁面的頂層框架中打開目標(biāo)頁面。

_blank

_blank則是打開一個新標(biāo)簽頁顯示目標(biāo)頁面。

錨點

頁面內(nèi)跳轉(zhuǎn),如下將跳轉(zhuǎn)至本頁面的h1錨點位置。

<a href="#h1">a</a>
<h1 id="h1">h1<h1>

跳轉(zhuǎn)至其他頁面的指定位置,如下將跳轉(zhuǎn)至other.html頁面中的p錨點位置。

<a href="other.html#p">a</a>

電話

撥打10086

<a href="tel:10086">10086</a>

撥打客服電話400。

<a href="tel:400-888-8888">400-888-8888</a>

短信

發(fā)送短信至單個號碼。

<a href="sms:10086">10086</a>

發(fā)送短信至多個號碼。

<a href="sms:10086,10000">10086,10000</a>

發(fā)送短信DX10086,注意安卓系統(tǒng)使用?連接發(fā)送內(nèi)容,IOS系統(tǒng)使用&連接發(fā)送內(nèi)容。

由于不同手機廠商或瀏覽器廠商對此標(biāo)準(zhǔn)支持度不同,最好還是不帶body

<a href="sms:10086?body=DX">DX</a>

郵箱

發(fā)送單個郵箱。

<a href="mailto:xxx@email.com">email</a>

發(fā)送多個郵箱。???????

<a href="mailto:xxx@email.com; xx@email.com">email</a>

mailto相關(guān)參數(shù)如下。

  • mailto:收件人郵箱地址,若有多個收件人郵件地址,用分號;隔開
  • cc:抄送人員郵箱地址,多人使用分號;隔開
  • bcc:密送人員郵箱地址,多人使用分號;隔開
  • subject:郵件主題
  • body:郵件內(nèi)容
??<a href="mailto:xxx@email.com?cc=cc@email.com&bcc=bcc@email.com&subject=subject&body=body">email</a>

下載文件

下載圖片,其中href為圖片路徑。

<a href="./image.png" download>image</a>

下載圖片并指定下載名。

<a href="./image.png" download="name.png">image</a>

download屬性注意事項如下。

  • 瀏覽器不能直接打開的文件(如txt、zip等),不指定download屬性也會直接下載
  • 瀏覽器可以直接打開的文件(如png、css、js、html等),需指定download屬性才能下載
  • download屬性值可以不指定后綴名,下載時瀏覽器會自動補充
  • download屬性值指定了錯誤的后綴名,文件下載后將無法打開預(yù)覽

同源策略

由于瀏覽器的 同源策略 限制,若下載的文件與頁面不同源,瀏覽器不會執(zhí)行下載而是直接打開,更多 詳細(xì)參考。

如下若頁面地址為http://127.0.0.1:3000,點擊a標(biāo)簽將不會下載而是在瀏覽器打開。

<a  download>baidu</a>

data:URLs

如下使用data:URLs的方式下載圖片,首先通過canvas繪制圖片,然后再使用canvas.toDataURL獲取圖片base64編碼,最后再通過a標(biāo)簽完成下載。

<a href="javascript:void(0);" onclick="downloadFile(event)" src='https://www.baidu.com/logo.png'>download</a>
<script>
  function downloadFile(e) {
    const url = e.target.getAttribute('src')
    const image = new Image()
    image.setAttribute('crossOrigin', 'anonymous')
    image.src = url
    image.onload = () => {
      const canvas = document.createElement('canvas')
      const ctx = canvas.getContext('2d')
      canvas.width = image.width
      canvas.height = image.height
      ctx.drawImage(image, 0, 0, image.width, image.height)
      const ext = image.src.substring(image.src.lastIndexOf('.') + 1).toLowerCase()
      const name = image.src.substring(image.src.lastIndexOf('/') + 1)
      const dataURL = canvas.toDataURL('image/' + ext)
      const a = document.createElement('a')
      a.href = dataURL
      a.download = name
      a.click()
    }
  }
</script>

注意不設(shè)置crossOrigin,瀏覽器將會拋出如下錯誤。

其原因也是瀏覽器的同源策略導(dǎo)致,canvas繪制跨域請求的圖片,就會造成畫布污染,此時也就不能再調(diào)用toBlob()、toDataURL()getImageData()了。img、form等支持跨域的標(biāo)簽,請求獲取資源時會自動帶上cookie,如果不做數(shù)據(jù)讀取限制,則cookie數(shù)據(jù)將被上傳到圖片網(wǎng)站后臺進(jìn)而導(dǎo)致數(shù)據(jù)泄露。

因此可以在圖片請求發(fā)起時增加crossOrigin="anonymous",不攜帶任何用戶信息來獲取圖片。

blob:URLs

如下使用blob:URLs的方式下載圖片,通過使用canvas.toBlob獲取到blob對象,然后再通過URL.createObjectURL獲取到blob對象的一個內(nèi)存URL,并且一直存儲在內(nèi)存中,直到document觸發(fā)了unload事件或者執(zhí)行revokeObjectURL來釋放。

<a href="javascript:void(0);" onclick="downloadFile(event)" src='https://www.baidu.com/logo.png'>download</a>
<script>
  function downloadFile(e) {
    const url = e.target.getAttribute('src')
    const image = new Image()
    image.setAttribute('crossOrigin', 'anonymous')
    image.src = url
    image.onload = () => {
      const canvas = document.createElement('canvas')
      const ctx = canvas.getContext('2d')
      const name = image.src.substring(image.src.lastIndexOf('/') + 1)
      canvas.width = image.width
      canvas.height = image.height
      ctx.drawImage(image, 0, 0, image.width, image.height)
      canvas.toBlob(blob => {
        const url = window.URL.createObjectURL(blob)
        const a = document.createElement('a')
        a.href = url
        a.download = name
        a.click()
        a.remove()
        window.URL.revokeObjectURL(url)
      })
    }
  }
</script>

ajax

上述兩種方式只對圖片適用,對于pdf或者txt等則不行。

可以通過ajax方式請求到文件的blob數(shù)據(jù),再通過blob:URLs的方式下載。

注意ajax請求方式會存在跨域問題,需要服務(wù)器支持。

<a href="javascript:void(0);" onclick="downloadFile(event)" src='http://www.baidu.com/txt.txt'>download</a>
<script>
  function downloadFile(e) {
    const url = e.target.getAttribute('src')
    const name = url.substring(url.lastIndexOf('/') + 1)
    axios.get(url, { responseType: 'blob' }).then(res => {
      const blob = res.data
      const url = URL.createObjectURL(blob)
      const a = document.createElement('a')
      a.href = url
      a.download = name
      a.click()
      a.remove()
      window.URL.revokeObjectURL(url)
    })
  }
</script>

到此這篇關(guān)于HTML5中的A 標(biāo)簽的文章就介紹到這了,更多相關(guān)HTML5 A 標(biāo)簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • HTML5中的Microdata與歷史記錄管理詳解

    Microdata作為HTML5新增的一個特性,它允許開發(fā)者在HTML文檔中添加更多的語義信息,以便于搜索引擎和瀏覽器更好地理解頁面內(nèi)容,本文將探討HTML5中Microdata的使用方法以及
    2025-04-21
  • HTML5表格語法格式詳解

    在HTML語法中,表格主要通過< table >、< tr >和< td >3個標(biāo)簽構(gòu)成,本文通過實例代碼講解HTML5表格語法格式,感興趣的朋友一起看看吧
    2025-04-21
  • html5的響應(yīng)式布局的方法示例詳解

    這篇文章主要介紹了HTML5中使用媒體查詢和Flexbox進(jìn)行響應(yīng)式布局的方法,簡要介紹了CSS Grid布局的基礎(chǔ)知識和如何實現(xiàn)自動換行的網(wǎng)格布局,感興趣的朋友一起看看吧
    2025-04-21
  • 基于Canvas的Html5多時區(qū)動態(tài)時鐘實戰(zhàn)代碼

    本文介紹了如何使用Canvas在HTML5上實現(xiàn)一個多時區(qū)動態(tài)時鐘的web展示,通過Canvas的API,可以繪制出6個不同城市的時鐘,并且這些時鐘可以動態(tài)轉(zhuǎn)動,每個時鐘上都會標(biāo)注出對應(yīng)的
    2025-03-11
  • HTML5 data-*自定義數(shù)據(jù)屬性的示例代碼

    HTML5的自定義數(shù)據(jù)屬性(data-*)提供了一種標(biāo)準(zhǔn)化的方法在HTML元素上存儲額外信息,可以通過JavaScript訪問、修改和在CSS中使用,文章還介紹了高級用法,如存儲JSON數(shù)據(jù)、事
    2025-03-11
  • HTML5中下拉框<select>標(biāo)簽的屬性和樣式詳解

    在HTML5中,下拉框(<select>標(biāo)簽)作為表單的重要組成部分,為用戶提供了一個從預(yù)定義選項中選擇值的方式,本文將深入探討<select>標(biāo)簽的屬性、樣式,并重點介
    2025-02-27
  • HTML5 Input 日期選擇器詳解

    本文介紹了HTML5InputDatePicker對象表示HTML``元素,是HTML5中的新對象,介紹了日期、周、月份、時間、日期+時間、本地日期時間等不同類型的日期選擇器,感興趣的朋友一起看
    2025-02-17
  • HTML5超鏈接和圖片基礎(chǔ)用法詳解

    本文介紹了HTML5中的超鏈接、相對路徑和圖片的使用方法,超鏈接可以創(chuàng)建指向另一個文檔或頁面內(nèi)部書簽的鏈接,相對路徑用于在同一服務(wù)器內(nèi)部跳轉(zhuǎn)頁面,圖片標(biāo)簽用于引入外部圖
    2025-02-17
  • HTML5超鏈接的創(chuàng)建方法

    本文介紹了HTML5超鏈接的創(chuàng)建方法,包括基本語法、創(chuàng)建圖像超鏈接的邊框去除方法以及錨點鏈接的使用,還討論了超鏈接的四種不同狀態(tài)(link、visited、hover、active)的CSS樣
    2025-02-17
  • HTML5使用details標(biāo)簽:展開/收縮信息

    最近看一些技術(shù)網(wǎng)站發(fā)現(xiàn)了details 標(biāo)簽的妙用,這個不用js即可實現(xiàn)展開/收縮信息,很方便用來讓用戶先才答案,然后下面點擊再給出答案的效果,這里就為大家簡單介紹一下,
    2024-11-03

最新評論