将功能正常的锚点 (<a>) 叠加在按钮顶部

Overlay a functioning anchor (<a>) on top of a button

提问人:MikeMayer67 提问时间:11/15/2023 更新时间:11/15/2023 访问量:39

问:

我意识到这个问题以前有人问过,但我找到的所有答案都归结为,“不要那样做。这是糟糕的设计“,并且没有为问题提供实际的解决方案。在我的特定场景中,我不认为这是一个糟糕的设计,并认为我会尝试再问一次。

我有一个表单,其中包含许多按钮,这些按钮是根据过去的用户操作填充的。我想要一种方法,让用户关闭不再需要的按钮。我的(失败的)解决方案是在按钮内放置一个,使用绝对定位将其放置在右上角。这是一个带有“x”的框。<div><a><img></a></div><img>

这里的问题是,单击图像会触发按钮,而不是点击将删除按钮的链接。

是否可以配置锚点,以便在单击锚点时跟随其链接而不是激活按钮?我正在寻找一种不需要javascript的解决方案。

非常感谢,

话筒

html(由 php 生成)将如下所示:

<form>
...
<button class='cached-action' name='resume' value='mmayer123'>
  <div class='username'>Mike Mayer</div>
  <div class='userid'>mmayer123</div>
  <div class='forget'>
    <a href='http://demo.org/mypage?forget=mmayer123'>
      <img src='img/delete.png'>
    </a>
  </div>
</button>
...
</form>

动作、演示和链接 url 都是虚构的,但希望能传达这个想法。

对应的 css 如下所示:

button.cached-action {
  width:100%;
  position:relative;
}
button.cached-action div.action {
  font-weight:bold;
  text-align:left;
  margin: 5px 8px 0 8px;
}
button.cached-action div.details {
  font-size:small;
  text-align:left;
  margin: -3px 8px 0 10px;
}
button.cached-action div.forget {
  position:absolute;
  top:5px;
  right:5px;
}
button.cached-action div.forget img {
  height:12px;
  width:12px;
}

enter image description here

HTML 按钮 锚点

评论

1赞 MikeMayer67 11/15/2023
有谁知道为什么这会立即投反对票(在提出问题后 5 分钟内)而对问题没有任何反馈?
1赞 DarkBee 11/15/2023
你为什么不直接设计你的锚点,让它看起来像一个按钮呢?
0赞 Marian Theisen 11/15/2023
您需要在 A 标签上停止 click 事件的事件气泡,这样点击就不会冒泡到按钮
1赞 Rob 11/15/2023
您显示的 HTML 完全无效。首先,a 和 元素不能是按钮元素的子元素。<div><a>
0赞 MikeMayer67 11/15/2023
@Rob .我之前看到过关于 <div> 和 <a> “无效”的评论,我知道 W3C 验证器会这样标记它。但与此同时,我在 Firefox、Chrome、Edge 和 Safari 中尝试过。在所有这些情况下,它都很好。这里的“无效”究竟是什么意思?

答:

0赞 MikeMayer67 11/15/2023 #1

我想感谢 Rob 将我推向“啊哈”时刻的方向,让我解决了我的问题。虽然他没有给出我应该做什么的建议,但他指出我使用的“无效”html给了我灵感,让我重新思考我的方法。

我没有在按钮本身中包含删除链接,而是为按钮和锚点创建了一个通用容器。然后,我能够使用位置样式来获取覆盖按钮的链接,并且仍然按预期运行。<div>