求checkbox css样式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求checkbox css样式相关的知识,希望对你有一定的参考价值。
这个css怎么实现???
checkbox的样式写成透明的,放在最上面,你的这个图片作为底图,每次点击复选框用JS判断下,如果是选择底图就是带钩的,没有选中底图换不带钩的。 参考技术A 先让美工做一个没有选中的图片和选中的图片,设置一个块,然后把这两个图片当背景,在用js来回切换,就可以使这种效果自定义checkbox样式
在项目中经常会使用到checkbox复选框,但是浏览器自带的checkbox样式往往不那么好看,而且不同浏览器效果不一样,为了美化和统一视觉需求。我们需要自定义checkbox样式。
1.纯css实现
原理:纯css实现的主要手段是利用label
标签的模拟功能。label
的for
属性可以关联一个具体的input
元素,即使这个input
本身不可被用户可见,有个与它对应的label
后,用户可以直接通过和label
标签交互来替代原生的input。也就是隐藏原生input,样式定义的过程留给
label。
html代码:
<input type="checkbox" id="checkbox_a1" class="chk_1" value="爬山"/> <label for="checkbox_a1" ></label> 爬山 <input type="checkbox" id="checkbox_a2" class="chk_1" value="逛街"/> <label for="checkbox_a2" ></label> 逛街 <input type="checkbox" id="checkbox_a3" class="chk_1" value="唱K"/> <label for="checkbox_a3" ></label> 唱K
css代码:
.chk_1 {
display: none;
}
.chk_1 + label {
background-color: #FFF;
border: 1px solid #C1CACA;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05);
padding: 9px;
border-radius: 5px;
display: inline-block;
position: relative;
vertical-align:middle;
}
.chk_1 + label:active {
box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px 1px 3px rgba(0,0,0,0.1);
}
.chk_1:checked + label {
background-color: #ECF2F7;
border: 1px solid #92A1AC;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0px -15px 10px -12px rgba(0, 0, 0, 0.05), inset 15px 10px -12px rgba(255, 255, 255, 0.1);
color: #243441;
}
.chk_1:checked + label:after {
content: \'\\2714\';
position: absolute;
top: -6px;
left: 0px;
color: #758794;
width: 100%;
text-align: center;
font-size: 1.2em;
padding: 1px 0 0 0;
vertical-align: text-top;
}
js代码:
<script> function getCheckbox(){ obj=document.getElementsByClassName("chk_1"); var check_val=[]; for(var i=0;i<obj.length;i++){ if(obj[i].checked){ check_val.push(obj[i].value); } } return check_val; } $(\'.chk_1\').click(function(){ alert(getCheckbox()); }); </script>
效果图:
2.css+js实现
原理:使用图片切换代替checkbox的两种状态
html代码:
<span class="sp1"> <input type="checkbox" value="爬山" class="chk-1"/> <img src="images/no-check.png" class="img_1"/> </span><label>爬山</label> <span class="sp1"> <input type="checkbox" value="逛街" class="chk-1"/> <img src="images/no-check.png" class="img_1"/> </span><label>逛街</label> <span class="sp1"> <input type="checkbox" value="唱K" class="chk-1"/> <img src="images/no-check.png" class="img_1"/> </span><label>唱K</label>
css代码:
.sp1{
position:relative;
margin-right:30px;
}
label{
vertical-align:middle;
}
.sp1 img{
position:absolute;
top: 0;
left: 0;
cursor: pointer;
}
.sp1>input{
position:absolute;
top: 0;
left: 0;
width: 25px;
height: 25px;
opacity: 0;
}
js代码:
<script> $(\'.img_1\').click(function(){ if(!($(this).prev(\'input\').is(":checked"))){ $(this).attr(\'src\',\'images/is_check.png\'); $(this).prev().prop(\'checked\',true); }else{ $(this).attr(\'src\',\'images/no-check.png\'); $(this).prev().prop(\'checked\',false); } console.log(getCheckbox()); }); function getCheckbox(){ obj=document.getElementsByClassName("chk-1"); var check_val=[]; for(var i=0;i<obj.length;i++){ if(obj[i].checked){ check_val.push(obj[i].value); } } return check_val; } </script>
效果图:
以上是关于求checkbox css样式的主要内容,如果未能解决你的问题,请参考以下文章