当前位置:  开发笔记 > 编程语言 > 正文

嵌套的超链接区域,HTML源中没有嵌套的链接元素

如何解决《嵌套的超链接区域,HTML源中没有嵌套的链接元素》经验,为你挑选了1个好方法。

我希望在较大的矩形(整页宽)内有一些看起来和表现为超链接的东西,这也是超链接.下面是ASCII-art表示它应该是什么样子:

|-------------------------------------------|
| Some text  [_link_]                            |
|-------------------------------------------|

整个外部矩形(块元素)是超链接.在这个矩形内部应该有一些文本,在这个文本的末尾应该有另一个链接.

不幸的是,嵌套链接(A元素)在(X)HTML中是非法的:

12.2.2嵌套链接是非法的

由A元素定义的链接和锚点不得嵌套; A元素不得包含任何其他A元素.

(来自http://www.w3.org/TR/html401/struct/links.html#h-12.2.2),所以最自然的方式实现上面


  Some text
  link

是无效的HTML.更糟糕的是,某些Web浏览器在某些情况下通过将外部链接元素移动到外部链接元素的闭合元素之外来强制执行此要求.这当然彻底打破了布局.

所以我想问的是如何使用HTML和CSS(但没有JavaScript)来实现上面给出的布局,但是没有 HTML源中的嵌套链接元素.如果行为尽可能接近具有嵌套链接元素的行为(对于在实现HTML标准时不过分严格的浏览器),那将是很好的.


编辑(16-01-2009)

澄清:使用两个以上链接元素的解决方案是完全可以接受的

Some text
Link
& nbsp;
...

Gumbo.. 5

你可以尝试这样的事情:

div.a {
  position: relative;
  background-color: #F88;
  z-index: 0;
}
a.b {
  position: relative;
  z-index: 2;
}
a.b:hover {
  background-color: #8F8;
}
a.c {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
a.c:hover {
  background-color: #88F;
}
a.c span {
  display: none;
}
foo bar baz



1> Gumbo..:

你可以尝试这样的事情:

div.a {
  position: relative;
  background-color: #F88;
  z-index: 0;
}
a.b {
  position: relative;
  z-index: 2;
}
a.b:hover {
  background-color: #8F8;
}
a.c {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
a.c:hover {
  background-color: #88F;
}
a.c span {
  display: none;
}
foo bar baz
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有