以下在Chrome和Firefox中运行良好,并使容器可以点击。在Internet Explorer中,它也可以单击,但只更改光标以指示内部div
,但不是span
。
我可以使用cursor:pointer
解决此问题,但更重要的是,它不允许在新标签页中右键单击。
这个问题有解决方法吗?谢谢!
<html>
<head>
<style type="text/css">
span{display:inline-block;width:100px}
</style>
</head>
<body>
<a href="/">
<div>
<div>title</div>
<span>text</span><span>text</span>
</div>
</a>
</body>
</html>
答案 0 :(得分:1)
您的HTML无效,虽然浏览器按预期执行,但这绝不会验证。
对于可点击的div,您可以使用jQuery来执行您想要的操作:
$(function (){
$("#clickme").click(function(event) {
event.preventDefault();
window.open('http://www.whatever.com');
});
});
答案 1 :(得分:0)
IE(至少6个,我不确定新版本)不支持inline-block
最初内联的元素,例如span
。请尝试使用块元素。
顺便说一下,除非您正在创建HTML5,否则a
元素内不允许使用块元素。这可能会导致不支持它的浏览器出现问题。
答案 2 :(得分:0)
在内联级元素中包含块级元素是无效的。
但是,至少在IE8中,您可以通过为页面提供doctype来解决您的问题。我使用过html5 doctype,但也许它也适用于其他人:
<!doctype html>
<html>
<head>
<style type="text/css">
span{display:inline-block;width:100px}
</style>
</head>
<body>
<a href="/">
<div>
<div>title</div>
<span>text</span><span>text</span>
</div>
</a>
</body>
</html>
顺便说一句,在html5中,像你一样使用a
标签是有效的。
答案 3 :(得分:0)
以下是我为标题实现可点击横幅的方法。如果背景图像大于h1链接,则以下段落将显示覆盖横幅。我认为这是你想要完成的事情。
<!DOCTYPE html>
<html>
<head>
<title>Banner Example</title>
<style type="text/css">
#header {
background-image: url('header_banner.jpg');
}
h1 a {
display: block;
height: 120px;
width: 500px;
text-indent: -9999; /* to hide the text that would show */
/* over the banner */
}
</style>
</head>
<body>
<div id='header'>
<h1><a href="/">This is a header link.</a></h1>
<p>Here is some text.</p><p>Here is some more text.</p>
</div>
</body>
</html>
这将验证为html5并为您提供更多灵活性。你可以有一个标题横幅,它仍然链接并在标题区域中包含任意数量的其他元素 - 甚至是其他链接。