在没有标签标签的情况下设置复选框样式

新手上路,请多包涵

我制作了一个复选框样式,它使用了 label 标签。见下文

是否可以在没有 label 标签的情况下仍然保留整个复选框的 CSS?所以我只有输入标签,但仍然是 CSS。这是复选框的 CSS。

 .control {
font-size: 18px;
position: relative;
display: block;
margin-bottom: 15px;
padding-left: 30px;
cursor: pointer;
}

.control input {
position: absolute;
z-index: -1;
opacity: 0;
}

.control__indicator {
position: absolute;
top: 2px;
left: 0;
width: 20px;
height: 20px;
background: #e6e6e6;
}

.control--radio .control__indicator {
border-radius: 50%;
}

.control:hover input ~ .control__indicator,
.control input:focus ~ .control__indicator {
background: #ccc;
}

.control input:checked ~ .control__indicator {
background: orange;
}

.control:hover input:not([disabled]):checked ~ .control__indicator,
.control input:checked:focus ~ .control__indicator {
background: #ecb53a;
}

.control input:disabled ~ .control__indicator {
pointer-events: none;
opacity: .6;
background: #e6e6e6;
}

.control__indicator:after {
position: absolute;
display: none;
content: '';
}

.control input:checked ~ .control__indicator:after {
display: block;
}

.control--checkbox .control__indicator:after {
top: 4px;
left: 8px;
width: 3px;
height: 8px;
transform: rotate(45deg);
border: solid black;
border-width: 0 2px 2px 0;
}
 <label class="control control--checkbox">
    <input type="checkbox"/>
    <div class="control__indicator"></div>
</label>

我希望你们能帮助我。

原文由 user5838715 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 336
2 个回答

================================================ =================

Css 解决方案(适用于 Chrome,不适用于 FF、IE)

您可以使用 css 将自定义样式应用于复选框 :after , :checked

请参阅下面的代码或 jsfiddle

HTML

 <input type="checkbox"/>

CSS

     input[type='checkbox']:after{
    line-height: 1.5em;
    content: '';
    display: inline-block;
    width: 18px;
    height: 18px;
    margin-top: -4px;
    margin-left: -4px;
    border: 1px solid rgb(192,192,192);
    border-radius: 0.25em;
    background: rgb(224,224,224);
}

input[type='checkbox']:checked:after {
width: 15px;
    height: 15px;
    border: 3px solid #00ff00;
}

小提琴 https://jsfiddle.net/guruling/evfr3kk3/

希望这会帮助您应用您的复选框自定义样式。

================================================ =================

新更新 :: 使用 jQuery 的跨浏览器解决方案

HTML

 <input type="checkbox"/>
<input type="checkbox"/>
<input type="checkbox"/>
<input type="checkbox"/>

CSS

 .custom-checkbox{
  line-height: 1.5em;
    display: inline-block;
    width: 18px;
    height: 18px;
    margin-top:0px;
    margin-right: -18px;
    border: 1px solid rgb(192,192,192);
    border-radius: 0.25em;
    background: rgb(224,224,224);
    box-sizing:border-box;
}

.custom-checkbox.checked{
    width: 18px;
    height: 18px;
    border: 3px solid #00ff00;
    box-sizing:border-box;
}

input[type="checkbox"]{
  margin: 0px;
  height: 16px;
  width: 19px;
  opacity:0;
}

JS

 function setCheckbox(elem){
        if($(elem).is(':checked')){
         $(elem).prev('.custom-checkbox').addClass('checked');
    }else{
       $(elem).prev('.custom-checkbox').removeClass('checked');
    }
}

$(document).ready(function(){
        // apply custom checkbox on page ready
        $('input[type="checkbox"]').before('<span class="custom-checkbox">');
    $('input[type="checkbox"]').each(function(){
          setCheckbox($(this));
        });
});

// on input change, change custom checkbox
$('body').on('change', 'input[type="checkbox"]', function(){
          setCheckbox($(this));
    });

小提琴 https://jsfiddle.net/guruling/2rsa7ghn/48/

原文由 Guruling Kumbhar 发布,翻译遵循 CC BY-SA 4.0 许可协议

 input[type=checkbox]:checked:before {
  top: 2px;
    left: 1px;
    width: 12px;
    height: 22px;
    border-top: 2px solid transparent;
    border-left: 2px solid transparent;
    border-right: 2px solid #35ac19;
    border-bottom: 2px solid #35ac19;
    -webkit-transform: rotate(40deg);
    -moz-transform: rotate(40deg);
    -ms-transform: rotate(40deg);
    -o-transform: rotate(40deg);
    transform: rotate(40deg);
    -webkit-backface-visibility: hidden;
    -webkit-transform-origin: 100% 100%;
    -moz-transform-origin: 100% 100%;
    -ms-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
}
input[type=checkbox]:before {
   content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    z-index: 0;
    border: 2px solid #A9ABAE;
    border-radius: 1px;
    margin-top: 2px;
    -webkit-transition: .2s;
    -moz-transition: .2s;
    -o-transition: .2s;
    -ms-transition: .2s;
    transition: .2s;
       background:#fff;
}
 <input type="checkbox" >

jsFiddle: https ://jsfiddle.net/chandan20j/myr2fe13/3/

原文由 Chandan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题