• 巧用CSS3伪类选择器自定义checkbox和radio的样式


    由于原生的checkbox和radio的样式太简陋了,在设计页面的时候,设计师往往会设计自己的checkbox和radio样式。一半情况下,为了适应各个浏览器的兼容性,我们都会用其他的元素替代原生的checkbox和radio,然后用js实现选中和未选中时候的样式,用来模拟checkbox和radio。

    例如这种:

    用其他元素模拟(以checkbox为例):

    <div class='checkbox'></div>
    $('.checkbox').click(function(){
        if($(this).hasClass("checked")){
                  $(this).removeClass("checked");
        }else{
                 $(this).addClass("checked");
        }
    });

    运用JS添加点击事件,切换选中和未选中的状态。

    那么,能仅仅只用样式,改变原生的checkbox的样式呢?

    使用CSS实现:


    在表单元素中,为了扩大checkbox的点击范围,我们经常用label和checkbox相连,现在也可以运用这个关系,把样式加在label上,隐藏checkbox(设置透明度,不能display:none,否则关联会失效)。

    html结构:

    <input type="checkbox" id="mycheck" />
    <lable for="mycheck">check me</label>

    css样式:

    input[type="checkbox"] + label::before {
    content: 'a0'; /* non-break space */
    display: inline-block;
    vertical-align: .2em;
    width: .8em;
    height: .8em;
    margin-right: .2em;
    border-radius: .2em;
    background: silver;
    text-indent: .15em;
    line-height: .65;
    }

    利用伪元素::before给label添加样式,利用CSS3的伪类选择器:checked,:hover,:focus,:disabled设置不用状态的样式

    input[type="checkbox"]:checked + label::before {
    content: '2713';
    background: yellowgreen;
    }
    input[type="checkbox"]:focus + label::before {
    box-shadow: 0 0 .1em .1em #58a;
    }
    input[type="checkbox"]:disabled + label::before {
    background: gray;
    box-shadow: none;
    color: #555;
    }

    这样,仅仅使用样式就能显示不同状态下的checkbox样式了。

  • 相关阅读:
    session概述
    Flask实现登录功能【附完整Demo】(转)
    Python __repr__()方法:显示属性(转)
    Python使用SQLAlchemy连接数据库CRUD
    网络基础知识集合
    面向切面编程AOP
    SQL基础 insert table_name_1 (field1,field2,...) select value1,value2,... from table_name_2 ...
    java中char类型的变量为什么可以赋值为整型数字?
    iOS应用生命周期
    视图生命周期与视图控制器生命周期
  • 原文地址:https://www.cnblogs.com/huangxi/p/6132346.html
Copyright © 2020-2023  润新知