【问题标题】:How to add an image to the back of a custom checkbox如何将图像添加到自定义复选框的背面
【发布时间】:2023-04-03 20:05:02
【问题描述】:

我在 codepen 上发现了一个看起来非常干净的自定义复选框,并且刚刚更新了一个项目来使用它。现在我为表单的不同部分设置了不同的背景颜色,但我只想将背景设置为图标而不是纯色

注释掉的东西不起作用

.label-switch {
  display: inline-block;
  position: relative;
}

.label-switch::before,
.label-switch::after {
  content: "";
  display: inline-block;
  cursor: pointer;
  transition: all 0.5s;
}

.label-switch::before {
  width: 3em;
  height: 1em;
  border: 1px solid #757575;
  border-radius: 4em;
  background: #888888;
}

.label-switch::after {
  position: absolute;
  left: 0;
  top: -20%;
  width: 1.5em;
  height: 1.5em;
  border: 1px solid #757575;
  border-radius: 4em;
  background: #ffffff;
}

.input-switch:checked~.label-switch::before {
  background: #00a900;
  border-color: #008e00;
}

.input-switch:checked~.label-switch::after {
  left: unset;
  right: 0;
  background: #00ce00;
  /*background-image:(url(http://pngimg.com/uploads/pokeball/pokeball_PNG8.png);*/
  /*background: url(http://pngimg.com/uploads/pokeball/pokeball_PNG8.png);*/
  border-color: #009a00;
}
<input class='input-switch' type="checkbox" id="demo" />
<label class="label-switch" for="demo"></label>
<span class="info-text"></span>

【问题讨论】:

  • 不确定我的理解是否正确,但这是您要找的吗? (黄色是小占位符图片) -- codepen.io/JimmyJames88/pen/WVJzgq
  • 基本上是的。另一个回答的家伙有我正在谈论的图像。谢谢回复

标签: css checkbox slider label


【解决方案1】:

您所做的一切都是正确的,只是需要设置 background-positionbackground-size 的背景图像,如果您切换我的 sn-p 中的复选框,您应该会看到您希望它工作的背景图案。

.label-switch{
    display: inline-block;
    position: relative;
 }

.label-switch::before, .label-switch::after{
     content: "";
     display: inline-block;
     cursor: pointer;
     transition: all 0.5s;
}

.label-switch::before {
     width: 3em;
height: 1em;
border: 1px solid #757575;
border-radius: 4em;
background: #888888;
}

.label-switch::after {
     position: absolute;
    left: 0;
    top: -20%;
    width: 1.5em;
    height: 1.5em;
    border: 1px solid #757575;
    border-radius: 4em;
    background: #ffffff;
}

.input-switch:checked ~ .label-switch::before {
    background: #00a900;
    border-color: #008e00;
}

.input-switch:checked ~ .label-switch::after {
    left: unset;
    right: 0;
    background: #00ce00;
    background-image:url(http://pngimg.com/uploads/pokeball/pokeball_PNG8.png);
    background-size:contain;
    background-position:center;
    border-color: #009a00;
}
<input class='input-switch' type="checkbox" id="demo"/>
<label class="label-switch" for="demo"></label>
<span class="info-text"></span>

【讨论】:

  • 您如何建议实现附加到不同复选框组的不同图像,而无需为我想要的每个新图像/颜色复制和粘贴整个内容?
  • 有许多不同的方法可以实现这一点,我创建了一个快速代码笔,其中有一个示例可供您使用:- codepen.io/aaronmcg/pen/RXyBqB 您可以更深入并使用 css 变量等更新的技术来更改颜色苍蝇,但这完全取决于您尝试支持的浏览器,所以我在 Pen 中的方法通常只是为了更广泛的浏览器支持。
  • 这太棒了,我绝对可以用这个自学我想要的东西
  • 快速问题:你为什么要在代码笔的顶部添加“视觉隐藏”位?按原样使用您的代码会出现这样的情况imgur.com/a/pTJqoBL 为什么这些复选框会这样显示在底部?
  • 因此,视觉隐藏类是一种隐藏复选框而不向屏幕阅读器隐藏复选框的可访问方式,如果您将视觉隐藏类添加到底部复选框,它们也会消失。如果您只添加display:none;,则意味着屏幕阅读器会忽略复选框,从而使您的切换无法访问。你可以在这里阅读更多关于这类东西的信息:- a11yproject.com
猜你喜欢
  • 2019-07-04
  • 2021-11-13
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多