如何使用CSS使整个div可点击

8
有时候你想要将整个 div (或其他元素)变成可点击的链接,这是一个示例。
以下是一种使用纯 CSS 实现的跨浏览器方式:
HTML:

<div class="clickable">
    <a href="URL_OF_LINK_TARGET"> </a>
    Rest of div content goes here
</div>
CSS:

div.clickable { /* Containing div must have a position value */
    position:relative;
}
div.clickable a {
    position:absolute;
    width:100%;
    height:100%;
    top:0;
    left:0;
    text-decoration:none; /* Makes sure the link   doesn't get underlined */
    z-index:10; /* raises anchor tag above everything else in div */
    background-color:white; /*workaround to make clickable in IE */
    opacity: 0; /*workaround to make clickable in IE */
    filter: alpha(opacity=1); /*workaround to make clickable in IE */
}

首先,给包含div设置position属性。这样,当我们将“position:absolute;”应用于链接(见下一段)时,它会相对于包含的div定位。
接下来,使链接绝对定位,并且与包含div的大小和深度完全相同。链接的z-index确保它在该div中处于最上层,因此无论您点击哪里,都是点击链接。
自然地,IE有一些怪癖。在这种情况下,IE需要为此类链接设置背景颜色才能点击,因此我们设置了一个背景颜色(白色),将不透明度设置为0,然后使用IE的专有filter属性将其设置为1%的不透明度。
最后,在div中放置任何您想要的内容。如果您将使用z-index分层内容,请确保没有任何元素比链接具有更高的z-index值。

2
好的。有什么问题吗? - bbill
1
那么问题是什么?Stackoverflow不是论坛,而是用来提问的,而不是发布解决方案。 - MOTIVECODEX
4
如果您想发布既包含问题又包含答案的内容,可以这样做:将问题作为一个问题发布,将答案作为一个答案发布。然后您可以接受自己的答案作为正确答案。FAQ中指出:"提问和回答自己的编程问题也是可以的"(但需要按照问题和答案的格式进行)。 - RichieHindle
1个回答

28

你可以将一个

标签用< a >标签包裹起来,这是有效的HTML5。

<a href="#">
      <div></div>
</a>

3
FWIW: 在某些旧版(HTML5之前)浏览器中,将块级元素包装在A元素中可能会导致问题,因为它们过时的错误纠正算法将链接包装在块级元素中视为语法错误。我无法提供确切的版本(可能是IE7/8),但上次我尝试将块级元素(如DL)包装在A元素中(如<a href="#"> <dl> <dt> ... </dt> <dd> ... </dd> </dl> </a>)时,我无法在各个浏览器中一致地对其进行样式设置,所以我不得不用自然内联的多个SPAN元素替换DL / DT / DD - Marat Tanalin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接