1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

A 元素[HTML 4.01]

本帖由 不学无术2006-01-04 发布。版面名称:前端开发

  1. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    --------------
    Web 标准开发,指的是 XHTML 1.0 中的定义
    --------------

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

    属性定义:

    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 and 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等元素中。这个是常见的错误之一。

    校验信息如下:
    定义了 target 属性

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

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

    HTML:
    <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>
    =========================================
    作者:不学无术(http://www.purewhite.cn)
    创建时间:2006-01-04 10:40
     
  2. cvvi

    cvvi New Member

    注册:
    2005-09-07
    帖子:
    25
    赞:
    0
    好文章,藏了~`
     
  3. 老林

    老林 New Member

    注册:
    2005-09-06
    帖子:
    10,580
    赞:
    36
  4. fyfei

    fyfei New Member

    注册:
    2005-10-07
    帖子:
    9,067
    赞:
    46