我有一个带有“for="the pointer to the checkbox input"
“的label
,并且据我所知,这个for
只能为label
添加。因此,我需要在label
中添加一个<button>
(我需要它),但是click事件不能正常工作-它没有选中for
所指向的复选框。
如果我必须将<button>
放入label
中,仅使用html+css编码,我可以在这里使用哪些可能性?
一些代码例如:
<input type="checkbox" id="thecheckbox" name="thecheckbox">
<div for="thecheckbox"><button type="button">Click Me</button></div>
6条答案
按热度按时间xsuvu9jc1#
事实证明,你可以让
<button>
操作一个输入,但前提是你把<label>
* 放在<button>
* 里面。尽管这违反了W3C规范:
交互式元素标签不能作为按钮元素的后代出现。https://www.w3.org/TR/html-markup/label.html
0dxa2lsx2#
您可以执行以下操作:
中央支助系统
display: block
on label只有在标签的边界框完全封装其子标签(本例中为按钮)时才是必需的。pgky5nke3#
您可以使用透明伪元素来覆盖复选框和按钮本身,以便捕获鼠标事件。
下面是一个例子:
网页:
CSS:
0yg35tkg4#
超文本:
联森:
Target是单击目标,currentTarget是本例中的标签。
如果没有if语句,则在事件阻止区域之外单击时会触发两次事件。
未进行跨浏览器测试。
sczxawaw5#
最好的解决办法就是把样式像纽扣一样。
如果你使用的是CSS框架,比如bootstrap,你可以给予标签类btn和btn-default,这会使它的样式像按钮一样,你可能需要手动调整css属性的line-height,如下所示:
然后,要将单击样式作为按钮,请添加以下样式:
这将接受被选中的输入,并给予dom中下一个标签元素,该元素具有类btn,引导btn-默认按钮单击样式。
cigdeys36#
我在这里找到了解决方案:https://codepen.io/nevena/pen/OEgaNW