【问题标题】:<a> hyperlink with div inside is to large / wide<a> 内部带有 div 的超链接是大/宽
【发布时间】:2016-11-16 15:22:49
【问题描述】:

用'a'标签包围一个div会产生奇怪的结果,感觉有必要让'a'标签尽可能宽而不是里面的孩子大小,我把它读作与HTML5有关。

Edge 或多或少地给出了我正在寻找的结果,但在 Chrome 中,出于某种原因,“a”标签是页面的整个宽度。

我还想在 'a' 标记中包含 div 'margin'。所以我不能使用'onclick'方法。这可以在没有javascript的情况下实现吗? JSFiddle.

<a href="http://example.com" style="background-color: #CCC;">
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:block;"><h2>text</h2></div>
</a>

<a href="http://example.com" style="background-color: #CCC;">
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div>
</a>

<a href="http://example.com" style="background-color: #CCC;">
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px; display:inline-block;"><h2>text</h2></div>
</a>

<a href="http://example.com" style="background-color: #CCC; display: block;">
<div style="width: 100px; height: 100px; background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div>
</a>

【问题讨论】:

  • 标签不关心宽度,子元素即 div 将默认显示 display: block。这就是为什么一些 div 是全宽的(你是一个元素随着它们一起移动)。你可以给 a 元素一个 display: inline-block; 我不完全明白,你想用 a 标签上的边距实现什么。
  • 感谢@ThijsBouwes 您的评论,这只是为了让 div 之间没有空白。因此,如果您错过单击 div,它仍会将您带到链接。这没什么大不了的,但我发现它很奇怪,如果我需要对每个“a”标签进行 javascript 处理以找到里面的子尺寸,它会减慢页面速度。

标签: html hyperlink tags margin


【解决方案1】:

我立即发现的最简单的解决方法是用另一个“div”标签包围“a”标签,如下所示:

<div style="width: 100px">
    <a href="http://example.com" style="background-color: #CCC;">
        <div style="background-color: #C00; margin: 0px 8px 8px 0px;"><h2>text</h2></div>
    </a>
</div>

但是,您是否有特定的原因希望将“a”标签放置在 div 之外? div 元素用于启用正确的间距,“a”标签本质上只是一个超链接。所以从逻辑上讲,你会在一个 div 中放置“a”标签,导致这样的结果:

<div style="background-color: #C00; margin: 0px 8px 8px 0px; width: 100px; height: 100px;">
  <a href="http://example.com" style="background-color: #CCC; display: inline-block; width: 100%; height: 100%;">
    <h2>text</h2>
  </a>
</div>

PS:我在这里使用内联 CSS 作为一个简单的例子,但你永远不应该使用它。改用 CSS 类。以后你会感谢我的。

【讨论】:

  • 感谢@Jenever 的评论,它在 div 之外的原因是我想将“边距”包含在一个可点击的链接中(中间没有空白)。我不敢相信没有一个简单的解决方案,它是一堆 div(不要对你无礼)。我尝试为“a”标签赋予与 div 相同的大小类,但这也不起作用。
  • 抱歉耽搁了。看看这个:jsfiddle.net/kbte5bhv/1 通过将宽度和高度设置为 > 100% 来使“a”标签比其父标签更宽是一个小技巧。 div 具有红色背景色,“a”具有不透明的灰色背景,以查看其后发生的情况。
  • 如果你让它透明,这实际上是一个很好的解决方法!我想我可以摆弄所有的反馈来为我的代码找到合适的解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 2017-02-23
  • 1970-01-01
  • 2016-05-03
  • 2020-05-16
  • 2011-12-24
  • 2016-08-01
  • 1970-01-01
相关资源
最近更新 更多