【第22期】观点:IT 行业加班,到底有没有价值?

label模拟radio、checkbox,自定义radio和checkbox

原创 2016年08月30日 20:04:02
最近做的项目选项框比较多,为了让界面看起来更加美观,决定自定义radio和checkbox,功能不变的情况下提高用户体验。

这里比较关键的一点是用到label的for属性。

w3c的label介绍:

<label> 标签为 input 元素定义标注(标记)。
label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。

<label> 标签的 for 属性应当与相关元素的 id 属性相同。

所以当我们为label用for属性绑定了指定元素id时候,只要我们点击label,就会触发绑定的元素。可以在w3c查看例子。http://www.w3school.com.cn/tiy/t.asp?f=html_label


好了原理讲明白后,就可以开始自定义我们的radio和checkbox。大致思路就是用label绑定radio,然后设置radio为不显示,在自定义label的样式就行了。


html代码:

<div class="testOptions">
        <ul>
            <li><input type="radio" id="radio01" name="check"><label for="radio01"></label>选项</li>
            <li><input type="radio" id="radio02" name="check"><label for="radio02"></label>选项</li>
            <li><input type="radio" id="radio03" name="check"><label for="radio03"></label>选项</li>
            <li><input type="radio" id="radio04" name="check"><label for="radio04"></label>选项</li>
        </ul>

        <ul>
            <li><input type="checkbox" id="checkbox01" name="check"><label for="checkbox01"></label>选项</li>
            <li><input type="checkbox" id="checkbox02" name="check"><label for="checkbox02"></label>选项</li>
            <li><input type="checkbox" id="checkbox03" name="check"><label for="checkbox03"></label>选项</li>
            <li><input type="checkbox" id="checkbox04" name="check"><label for="checkbox04"></label>选项</li>
        </ul>
    </div>

     <div class="_testOptions">
        <ul>
            <li><input type="checkbox" id="checkbox001" name="check"><label for="checkbox001"></label>选项</li>
            <li><input type="checkbox" id="checkbox002" name="check"><label for="checkbox002"></label>选项</li>
            <li><input type="checkbox" id="checkbox003" name="check"><label for="checkbox003"></label>选项</li>
            <li><input type="checkbox" id="checkbox004" name="check"><label for="checkbox004"></label>选项</li>
        </ul>
    </div>
css代码:
.testOptions li,._testOptions li{margin: 5px 0px;}
/*隐藏选项框*/
.testOptions input[type='checkbox'],.testOptions input[type='radio'],
._testOptions input[type='checkbox']{
    visibility: hidden;
    cursor: pointer;
}

/*设置label样式*/
.testOptions input[type='radio']+label,.testOptions input[type='checkbox']+label,
._testOptions input[type='checkbox']+label{
    display: inline-block;
    vertical-align: top;
    width: 1.3em;
    height: 1.3em;
    margin-right:5px;
    position: relative;
    background-color: #d8d4d4;
    transition: background 0.5s linear;
    box-sizing:border-box;
    -webkit-transition: background 0.3s linear;
    -webkit-box-sizing:border-box;
}
/*相邻选择器来模拟选项被选择的效果*/
.testOptions input[type='radio']+label{border-radius: 50%;}
.testOptions input[type='radio']:checked+label {border:0.35em #d8d4d4 solid;background-color: #0ab5f1;}
.testOptions input[type='checkbox']:checked+label {background-image: url("image/check_32px.png");background-size: 100% 100%;}

._testOptions input[type='checkbox']:checked+label:after{content: "√";font-size: 20px;font-weight:bold;color: #0ab5f1;}
</style>
效果图:(一个利用伪元素打钩,一个图片)

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

隐藏表单 radio的圈圈,用label代替按钮(加上bootstrap或其它修改样式达到美观)

先隐藏radio的按钮:display:none;" name="kind" type="radio" value="2"> 修改样式: Bootstrap的按钮样式也可以插入...

单击 label 触发 checkbox,checkbox 触发 click

转载于: http://www.cftea.com/c/2011/02/2UCSDQNDA6U9EV3V.asp http://www.cftea.com/c/2010/12/L5RJ4NFAQ8...
  • zgmzyr
  • zgmzyr
  • 2012-08-27 21:16
  • 21880

html 如何绑定radio 控件和label控件

只要指定label的"for"属性到radio的id就行,或者用label标签包围住radio。 请参见下面例子: 写法一: input type="radio" id="radioA" n...

CheckBox点击lable文字选中

这是一个例子: 复选框 与之间--> for="check1">姓名 id="check1" value="123" name="name"> 密码 注意事项:文字必须是labe...

IE下单选按钮隐藏后点击对应label无法选中的bug解决

项目中,有时候填写表单我们的选项会隐藏掉radio或者checkbox,而只显示给用户对应的文字选择,如果用户点击label选择时,在FF/Chrome等标准浏览器中隐藏掉的radio/checkbo...

HTML中Div、span、label标签的区别

div与span 大家在初学div+css布局时,有很多困惑,在div与span的使用过程没觉得有一定的”章法”,觉得两个区别不大,在w3c的关于div和span的定义:div作为分割文档结构自...

利用原生js和jQuery实现单选框的勾选和取消操作

根据一下的Demo,大概就可以看的明白 Demo: window.onload = function(){ var dom_a = document.getElemen...

clearcase 常用命令参考

Configure user aliases: File: $HOME/.bashrc alias ct=/usr/atria/bin/cleartool alias ...

解决checkbox属性checked为true但是未被选中的问题

原来是jQuery版本问题。 Attributes vs. Properties attributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.a...

TTTAttributedLabel 使用方法

TTTAttributedLabel 库地址 https://github.com/TTTAttributedLabel/TTTAttributedLabel #import "View...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)