原文

  简书原文: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. Android程序使用SOAP调用远程WebService服务

    在现在的应用程序中.不可能不使用到网络,而且后台一定是有server作为支撑的. 现在最常见的调用方式有HTTP的GET .POST方式,返回JSON或者XML数据. 可是也有一种常见的形式就是调用W ...

  2. JAVASE学习笔记:第十章 SWing经常使用控件类(二)

    7.JComboBox 下拉列表         /*   * 初始化下拉列表   */  public void addcomb(){   String[] area = {"山西省&qu ...

  3. git 工具的使用总结(5)-查看历史记录

    1.查看历史记录git log 1)不加参数,显示的就是节点号,作者,日期,注释 commit b7b310d220628530d1feb9e8046ccb59039d59f2 Author: zha ...

  4. worktools-git 工具的使用总结(2)

    1.创建分支 git branch son parent //创建分支,是在master 分支的基础上创建 :~/myGit$ git st # On branch master nothing to ...

  5. 洛谷P1043 数字游戏

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  6. scroolspy滚动监听插件

    <nav id="nav" class="navbar navbar-default"> <a href="#" clas ...

  7. ORA-16055: FAL request rejected

    主库频繁报错如下: ORA-16055: FAL request rejected   解决办法: ALTER SYSTEM SET log_archive_dest_state_2='DEFER' ...

  8. web.xml的配置及加载顺序

    一web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> ...

  9. 洛谷 P1130 红牌

    P1130 红牌 题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程 ...

  10. 记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等

    http://blog.laobubu.net/archives/move-to-openshift/ 记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等 Nov 24, 2014 十一月 ...