menu

开发进行时...

crazy coder

Avatar

The A element

开始标签:必需,结束标签:必需

属性定义:

name = cdata [区分大小写]
该属性命名当前锚,这样就可以被其它链接传递。该属性值必须是唯一的锚名。该名称仅在当前文档中有效。注意,该属性和 id 属性共享命名空间。
href = uri [CT]
该属性指定 Web 资源的位置,因此在当前元素(源锚点)和通过该属性定义的目的锚点之间定义了一个链接。
hreflang = langcode [不区分大小写]
该属性指定了通过 href 指派的资源的基本语言,并且仅在 href 被指定的情况下使用(也就是说如果 A 中没有指定 href 属性,就不应该出现 hreflang 属性)。
type = content-type [不区分大小写]
该属性指定链接资源所采用的内容类型。例如网页通常为 text/html。
rel = link-types [不区分大小写]
该属性描述了从当前文档到通过 href 属性定义的锚点之间的关系。该属性值是通过空格分隔的 link 类型(值)的列表(在 Web 标准开发中,这个通常用来代替 target 属性,配合脚本,用来表示目的窗口)。
rev = link-types [不区分大小写]
该属性用来描述从通过 href 属性指定的锚点到当前文档的反向链接。该属性值是通过空格分隔的 link 类型(值)的列表。
charset = charset [不区分大小写]
该属性指定了通过链接指派的资源的字符编码。

其它属性:

* id, class (document-wide identifiers)
* lang (语言信息), dir (文本方向)
* title (元素标题)
* style (行间样式信息)
* shape 和 coords (图像地图)
* onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (内置/默认行为)
* target (目标框架信息)[注意,Web 标准开发中,已经不采用该属性]
* tabindex (选中的导航)
* accesskey (快捷键)


定义锚点:

在我们实际应用中,定义了 name 属性的,我们通常称之为锚点,定义了 href 属性的,我们称之为链接。锚点,可以看作是定义了一个被访问的点,而链接,则是通往某个点的出发点。当然,也可以同时定义 href 和 name 属性。

href 属性的使用我们一般都很熟悉,对于 name 属性的使用,例如:

<a name="anchor0"></a>
<a name="anchor1">anchor one</a>

定义锚点,默认情况下并不会在 anchor one 上产生“链接样式”,诸如下划线和颜色等。

如果要访问当前文档的某个部分,可以通过下面的链接:

<a href="#anchor1">anchor one</a>

这样就产生了一个链接,点击,会跳转到 <a name="anchor1">anchor one</a> 锚点定义的文档部分,并且该锚点位于窗口当前位置最顶端。

如果要访问其它文档中的锚点,有绝对链接和相对链接两种方式:

<a href="http://www.chinahtml.com/index.html#anchor0">anchor 0</a> 绝对链接
<a href="index.html#anchor0">anchor 0</a> 相对链接

使用方式和路径访问差不多,我们其实可以看作是先访问了对应的 index.html 页面,然后跳转到 anchor0 锚点所在的位置。

一定要注意的是访问锚点的格式,在锚点名称前面加上 #,但是定义锚点的时候,name 属性中并不需要使用 # 。

注意,name 属性是大小写敏感的,也就是说 xxx 和 XXX 是不同的锚点名称,这个在不同的浏览器下可能会有不同的处理效果,所以实际进行 Web 开发的时候,最好统一大小写。在 Web 标准开发中,所有的属性值都必须采用小写。

通过 a 定义的链接和锚点,是不允许嵌套的。

使用 id 属性定义锚点:

任何使用 id 属性的元素,都可以看作是一个锚点,可以通过链接访问。例如:

<h2 id="headling">Headling</h2>
...
<a href="#headling">Headling</a>

当然,这个也适合 A 元素,例如 <a id="headling"></a>。

但是必须注意的是,id 和 name 属性使用相同的命名空间,所以同一个页面中不能出现两个相同名称的锚点,例如在某个元素中使用 id 属性定义了一个锚点 abc ,在另一个元素 A 中又通过 name 属性定义了一个锚点 abc ,这样是不允许的。但是对于 A、APPLET、FORM、FRAME、IFRAME、IMG、和 MAP等元素,可以同时使用相同的 id 和 name 值来作为唯一标识,不过一旦是用了这两个属性,就应该保持一致。例如:

<p><a name="a1" id="a1" href="#a1">...</a></p>

关于样式:

我们一般通过 CSS 中的伪类来定义链接样式,大家应该熟记一个规则——“LoveHate”,所谓的“爱恨”规则,即定义四个伪类的顺序应该是:

a:link (L)
a:visited (V)
a:hover (H)
a:active (A)

当您抱怨定义的链接颜色不对的时候,检查一下这个顺序是否正确。

关于标准:

在 Web 标准开发中,注意 A 元素必需位于 P、h1、h2、h3、h4、h5、h6、DIV、PRE、ADDRESS、FIELDSET、INS、DEL等元素中。这个是常见的错误之一。

校验信息如下:

document type does not allow element "a" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag.

定义了 target 属性

there is no attribute "target".

解决方法请参考:http://bbs.chinahtml.com/t10337.html

下面是通过 XHTML 1.0 Strict 的代码片断:

<p>
<a name="abc" href="http://www.w3.org/" hreflang="en" type="text/html"
rel="foo" rev="foo" charset="iso-8859-1" id="abc" class="mylink" lang="en" dir="ltr"
title="my link" style="color: red;" onfocus="this.select();"
onblur="this.style.color='green';" onclick="alert('Click');"
ondblclick="alert('Double click');" onmousedown="alert('Mouse down');"
onmouseup="alert('Mouse down');" onmouseover="alert('Mouse over');"
onmousemove="alert('Mouse move');" onmouseout="alert('Mouse out');"
onkeypress="alert('Key press');" onkeydown="alert('Key down');"
onkeyup="alert('Key up');" tabindex="1" accesskey="k">my link</a>
</p>

评论已关闭