【问题标题】:How to make checkboxes with images如何用图像制作复选框
【发布时间】:2021-10-01 01:05:35
【问题描述】:

我的网站上有默认复选框,每个复选框上只有文本(例如example)。

是否可以将复选框设计为带有图像?如果选中,也许在复选框上加上“v”标记?


我希望它看起来像:

【问题讨论】:

  • 可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题。
  • 我试图找到一种方法来设计带有图像的复选框,但我没有找到任何资源来帮助我。请问有大佬知道有什么方法吗?即使您可以将我引向任何开源,或者举个简单的例子?

标签: html css checkbox


【解决方案1】:

这是使用标签模拟基于图像的复选框的方法

input {
  display: none
}

/*  switch image  */
label[for="chk1"] {
  display: inline-block;
  text-align: center;
  width: 100px;
  height: 100px;
  border: 2px solid black;
  background: url(http://placehold.it/100/f00);
}
#chk1:checked ~ label[for="chk1"] {
  background: url(http://placehold.it/100/ff0);
}

/*  add content  */
label[for="chk2"] {
  display: inline-block;
  text-align: center;
  width: 100px;
  height: 100px;
  border: 2px solid black;
  position: relative;
}
#chk2:checked ~ label[for="chk2"]::after {
  content: 'V';
  position: absolute;
  left: 0;
  right: 0;
  font-size: 90px;
  font-weight: bold;
  font-family: arial;
}
<input id="chk1" type="checkbox">
<input id="chk2" type="checkbox">

<label for="chk1"></label>
<label for="chk2"></label>

<div>Click a box to toggle it</div>

【讨论】:

  • 看起来不太好。 :P
  • @K.Daniek 这不是让它看起来不错的尝试,它展示了如何获取基于图像的复选框
  • 是的,我知道。但我认为 jquery 会比纯 css 更快更好地处理这个问题。
  • @K.Daniek 为什么要为 CSS 的东西使用脚本? ...我真的不明白这个 jQuery 疯狂,将它用于一切
  • 我是一个 jQuery 心理迷,也许这就是原因。 :P
【解决方案2】:

我认为大多数人不会将图像放在他们的复选框中。他们要么使图像像@LGSon 那样的复选框,要么将图像和复选框一起包装在 div 中。像这样的:

function toggleCheck(sibling) {
  var checkBox = sibling.parentNode.getElementsByTagName("input")[0];
  checkBox.checked = !checkBox.checked;
}
.image-box {
  width: 150px;
  text-align: center;
  background: #E9E8E7;
  padding: 10px;
  -webkit-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);
  -moz-box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);
  box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.75);
  border-radius: 5px 5px 5px 5px;
  -moz-border-radius: 5px 5px 5px 5px;
  -webkit-border-radius: 5px 5px 5px 5px;
}
.image-box img {
  max-width: 100%;
  display: block;
  margin-bottom: 7px;
}
<div class="image-box">
  <img src="https://3.bp.blogspot.com/-W__wiaHUjwI/Vt3Grd8df0I/AAAAAAAAA78/7xqUNj8ujtY/s1600/image02.png" onClick="toggleCheck(this);" />
  <input id="dogs" type="checkbox" name="dogs" value="Dog">
  <label for="dogs">I like dogs</label>
</div>

【讨论】:

  • 你到底为什么要使用span 和脚本 使用label 而没有脚本可以做什么??
  • LGSon,感谢您的反馈,但作为旁注,您自命不凡的语气在专为新手寻求帮助而设计的问答网站上有点令人反感。我使用了跨度和脚本,因为我已经在使用脚本来允许单击图像,所以对我来说重用它是有意义的。但 label 可能是一个更好的选择,所以我更新了我的答案以纳入您的建议。
  • 不打算让任何人失望,如果我这样做了,很抱歉,只是想指出不要使用脚本而是一个标签,它是专门为这些东西制作的,......顺便说一句, SO 不是针对新手的 QA 网站
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2023-03-12
  • 2014-07-17
  • 2014-03-04
  • 2023-03-17
  • 2014-03-11
  • 1970-01-01
相关资源
最近更新 更多