原文

  简书原文:https://www.jianshu.com/p/d6a2499db73b

大纲

  1、什么是<a>标签
  2、<a>标签的几个重要属性
  3、a标签的运行机制
  4、a标签常用的协议
  5、超链接标签的样式问题——a标签的伪类选择器的书写顺序

1、什么是<a>标签

  <a> 标签定义超链接,用于从一张页面链接到另一张页面。
  <a> 元素最重要的属性是 href 属性,它指示链接的目标。

2、<a>标签的几个重要属性

2.1、href

  规定链接指向的页面的 URL。

<a href="http://www.w3school.com.cn">W3School</a>

2.2、target

  规定在何处打开链接文档。
  a:自定义打开锚点

<frameset cols="100,*">
<frame src="toc.html">
<frame src="pref.html" name="view_frame">
</frameset> <h3>Table of Contents</h3>
<ul>
<li><a href="pref.html" target="view_frame">Preface</a></li>
<li><a href="chap1.html" target="view_frame">Chapter 1</a></li>
<li><a href="chap2.html" target="view_frame">Chapter 2</a></li>
<li><a href="chap3.html" target="view_frame">Chapter 3</a></li>
</ul>

  target的特殊值:有 4 个保留的目标名称用作特殊的文档重定向操作:

    _self:这个目标的值对所有没有指定目标的 <a> 标签是默认目标,它使得目标文档载入
并显示在相同的框架或者窗口中作为源文档。这个目标是多余且不必要的,除非和文档标题
<base> 标签中的 target 属性一起使用。 _parent:这个目标使得文档载入父窗口或者包含来超链接引用的框架的框架集。如果这个
引用是在窗口或者在顶级框架中,那么它与目标 _self 等效。 _top:这个目标使得文档载入包含这个超链接的窗口,用 _top 目标将会清除所有被包含
的框架并将文档载入整个浏览器窗口。 _blank:浏览器总在一个新打开、未命名的窗口中载入目标文档。 提示:这些 target 的所有 4 个值都以下划线开始。任何其他用一个下划线作为开头的
窗口或者目标都会被浏览器忽略,因此,不要将下划线作为文档中定义的任何框架 name 或
id 的第一个字符。

2.3、name

  规定锚的名称。(Html5不支持)

<html>
<body>
<h1>HTML 教程目录</h1>
<ul>
<li><a href="#C1">第一章</a></li>
</ul> <h2><a name="C1">第一章</a></h2>
<p>本章讲解的内容是 ... ...</p>
</body>
</html>

2.4、downloadHTML5新增

  HTML5新增,只有 Firefox 和 Chrome 支持 download 属性。
  download 属性规定被下载的超链接目标。
  在 <a> 标签中必须设置 href 属性。
  该属性也可以设置一个值来规定下载文件的名称。所允许的值没有限制,浏览器将自动检测正确的文件扩展名并添加到文件 (.img, .pdf, .txt, .html, 等等)。

<a href="/images/myw3schoolimage.jpg" download="w3logo">

2.5、media

  media 属性规定目标 URL 是为什么类型的媒介/设备进行优化的。
  该属性用于规定目标 URL 是为特殊设备(比如 iPhone)、语音或打印媒介设计的。
  该属性可接受多个值。
  只能在 href 属性存在时使用。

<a href="att_a_media.asp?output=print" media="print and (resolution:300dpi)">
打开用于打印的 media 属性页面
</a>

3、a标签的运行机制

    1、a标签的href属性值如果是以http开头的,那么浏览器会马上启动http解释器去解释
该网址,首先会在本地机器去找一个hosts文件, 如果在hosts文件上该域名没有对应的主机
,那么浏览器就去到对应的dns服务器去寻找该域名对应的主机号。如果找到了对应的主机,
那么该请求就会发给对应的主机。
2. 如果a标签的href属性值没有以任何协议开头,那么浏览就会启动file协议解释器去解
释该资源路径。
3. 如果a标签的href属性值并不是以http开始,而且其他 的一些协议,那么这时候浏览
器就回去到我们本地的注册表中去查找是否有处理这种协议 的应用程序,如果有,那么马上启
动该应用程序处理该协议。

4、a标签常用的协议

1、file:
file协议(文件协议)这种协议主要是用于搜索本地机器的资源文件的。
格式:file:\\\f:\美女\1.jpg 2、邮件的协议: mailTo 3、迅雷的协议: thunder

5、超链接标签的样式问题——a标签的伪类选择器的书写顺序

5.1、a标签的多重状态

  对于<a>元素,我们可以用“多重人格”来形容它。对于该标签,它一共有五种状态::link, :visited, :hover, :focus, :active.
  “:link”可以用于声明未访问状态链接的样式;
  “:visited”可以用于声明已经访问链接的样式;
  “:hover”可以用于声明鼠标悬停在链接上的样式;
  “:focus”可以用于声明浏览器焦点悬停在链接上的样式(通过键盘选择链接);
  “:active”可以用于声明浏览器点击链接的样式。
  注意:冒号前后不要出现空格
  一般a:hover和a:visited链接的状态(颜色、下划线等)应该是相同的。
  link、visited、active分别对应body元素的link、vlink、alink这三个属性。
  四个“状态”的先后过程是:a:link ->a:hover ->a:active ->a:visited。另外,a:active不能设置有无下划线(总是有的)。

5.2、链接(a标签状态)定义的顺序

  没有规矩不成方圆,虽然链接定义写好了,但它也是有规则的,如果这四项的书写顺序稍有差错,链接的效果可能就没有了,所以每次定义链接样式时务必确认定义的顺序,link--visited--hover-active,也就是我们常说到的LoVe HAte原则(大写字母就是它们的首字母)。
  老外总结了一个便于记忆的“爱恨原则”(LoVe/HAte),即四种伪类的首字母:LVHA。定义A链接样式的正确的顺序:a:link、a:visited、a:hover、a:active。若没有按照这样的顺序的话,有的状态的样式会被放置在后面的样式覆盖而导致像没有触发一样没有效果,如:如果hover放在visited之后,则就算我放上去变色了,但是同时这个标签也具有visited状态以及其的效果,会覆盖了hover的效果。
  为了符合浏览器解释CSS遵循的"就近原则"。我们在定义CSS中,宜将最一般的条件放在最上面,并依次向下,最下面放最特殊的。
  在W3C规范中,也规定了链接的声明顺序:
  在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
  在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。

a:link、a:visited、a:hover、a:active

参考网址

http://blog.csdn.net/linwh8/article/details/52491645
http://www.jb51.net/css/182670.html
http://www.nowamagic.net/csszone/css_IntroduceToTagA.php

详解HTML的a标签(超链接标签)的更多相关文章

  1. Git应用详解第八讲:Git标签、别名与Git gc

    前言 前情提要:Git应用详解第七讲:Git refspec与远程分支的重要操作 这一节主要介绍Git标签.别名与Git的垃圾回收机制. 一.Git标签(tag) 1.标签的实质 标签与分支十分相似, ...

  2. git 使用详解(8)-- tag打标签

    打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列出所有可用的标签,如何新建标签,以 ...

  3. html body的属性 格式控制标签 内容容器标签 超链接标签 图片标签 表格

    一.body的属性 <body  bgcolor  页面背景色 background 背景壁纸.图片 text文字颜色 topmargin上边距 leftmargin左边距 rightmargi ...

  4. 前端 HTML body标签相关内容 常用标签 超链接标签 a标签

    超链接标签 <a> 超级链接<a>标记代表一个链接点,是英文anchor(锚点)的简写.它的作用是把当前位置的文本或图片连接到其他的页面.文本或图像,也可以是相同网页上的不同位 ...

  5. [19/05/15-星期三] HTML_body标签(超链接标签和锚点)

    一.超链接标签 <html> <head> <meta charset="UTF-8"> <title>04 body超链接标签学习 ...

  6. Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航

    一.添加标签 Tabs   在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected.onTabUnselected ...

  7. Struts标签库详解,非常好的Struts标签详解

    Struts提供了五个标签库,即:HTML.Bean.Logic.Template和Nested. HTML 标签:         用来创建能够和Struts 框架和其他相应的HTML 标签交互的H ...

  8. html标签详解

    html标签详解   <!DOCTYPE> 标签 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE ...

  9. 【jsp】JSTL标签大全详解

    一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  10. day01 html介绍 文档声明头 head标签 body标签

    day01 html   初识html <!--文档的声明--> <!doctype html>   <html lang="en">    # ...

随机推荐

  1. Oracle数据库安装时 environment variable path 大于 1023

    提示的内容如下: 打开系统的环境变量设置, 编辑Path,全选将其中的路径全部复制出来放到文本文档中.新建一个系统变量取名Path_Old_1,剪切Path中的所有变量复制进path1然后保存,将Pa ...

  2. code blocks主题颜色配置

    添加配置文件 注意:在添加这些自定义配置文件之前一定要先将之前的文件配置备份! 在添加时一定要确保Code::Blocks**没有**在运行!下载下面的文件,并将其添加到C:\Users\<你的 ...

  3. Android 通过局域网udp广播自动建立socket连接

    Android开发中经常会用到socket通讯.由于项目需要,最近研究了一下这方面的知识. 需求是想通过wifi实现android移动设备和android平台的电视之间的文件传输与控制. 毫无疑问这中 ...

  4. NVM安装nodejs的方法

    安装nodejs方式有很多种. 第一种:官网下载  通过nodejs官网下载安装 ,但有个缺陷,不同版本的nodejs无法顺利的切换. 第二种: NVM安装  NVM可以帮助我们快速切换 node版本 ...

  5. 解决vmware 和hyper-v不能共存的问题

    只需在 Windows 中以管理员身份运行命令提示符 cmd 1.运行 bcdedit /copy {current} /d "Windows 8 (关闭 Hyper-V)"命令, ...

  6. 7.Linux 输入子系统分析

    为什么要引入输入子系统? 在前面我们写了一些简单的字符设备的驱动程序,我们是怎么样打开一个设备并操作的呢? 一般都是在执行应用程序时,open一个特定的设备文件,如:/dev/buttons .... ...

  7. 【习题 7-9 UVA-1604】Cubic Eight-Puzzle

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] IDA* 保证这次移动的方格不和前一次重复. 然后加一个8数码的剪枝就行了. ->看看当前状态和目标状态有多少个地方是不一样的 ...

  8. Http请求连接池 - HttpClient 的 PoolingHttpClientConnectionManager

    两个主机建立连接的过程是非常复杂的一个过程,涉及到多个数据包的交换,而且也非常耗时间.Http连接须要的三次握手开销非常大,这一开销对于比較小的http消息来说更大.但是假设我们直接使用已经建立好的h ...

  9. arukas 的 Endpoint

    arukas 的 Endpoint 什么是端点 What is Endpoint arukas.io 的实例几乎每周都自动重新启动,当实例重新启动时,其端口会更改.IP地址和端口的平均寿命是一周,有时 ...

  10. 设置Maven默认的JDK为1.7,解决Update Maven Project默认为1.5和Maven打包报错2个问题

    1.之前,一直遇到这个问题. Update Maven Project的时候,JDK变成了1.5的.    如果项目中有使用"@overdide",程序就会报错,需要手动修改JRE ...