css模拟手机滑动开关

参考文章:
http://www.cnblogs.com/libin-1/p/6006034.html

示例代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>CSS3模拟IOS开关</title>
    <style type="text/css" media="screen">
       /* ========== 设置根元素字体大小 ================== */
        html {
            font-size: 100px;
        }
        /* ===================== 设置模拟元素的包裹层,装饰...毫无卵用 ======================= */
       /*.ios-checkbox{

            /*设置容器的大小*/
            height:4rem;
            width:4rem;

            position:absolute;
            left:50%;
            top:50%;
            -webkit-transform:translate(-50%, -50%);
                    transform:translate(-50%, -50%);
            border:.05rem dashed #3DB7A9;
            display:-webkit-box;
            display:-webkit-flex;
            display:-ms-flexbox;
            display:flex;
            -webkit-box-orient:horizontal;
            -webkit-box-direction:normal;
            -webkit-flex-direction:column;
                -ms-flex-direction:column;
                    flex-direction:column;
            -webkit-flex-wrap:nowrap;
                -ms-flex-wrap:nowrap;
                    flex-wrap:nowrap;
            -webkit-justify-content:space-around;
                -ms-flex-pack:distribute;
                    justify-content:space-around;
            -webkit-box-align:center;
            -webkit-align-items:center;
                -ms-flex-align:center;
                    align-items:center;
       }*/
        /* ==================== label标签模拟按钮     ============================================= */
        /*设置label样式*/
        .emulate-ios-button {
            display: block;

            /*设置绿色滑道的大小*/
            width: 1rem;
            height: .5rem;

            background: #ccc;
            border-radius: 5rem;
            cursor: pointer;
            position: relative;
            -webkit-transition: all .3s ease;
            transition: all .3s ease;
        }

        /* ============== 设置伪类,来实现模拟滑块滑动,过渡用了transition来实现 ,
        translateZ来强制启用硬件渲染 ======== */
        /*在label中添加白色圆按钮*/
        .emulate-ios-button:after {
            content: '';
            display: block;

            /* 设置白色圆按钮的大小 */
            width: .4rem;
            height: .4rem;

            border-radius: 100%;
            background: #fff;
            box-shadow: 0 1px 1px rgba(0, 0, 0, .1);
            position: absolute;

            /*设置白色圆按钮在绿色滑道里的位置*/
            left: .05rem;
            top: .05rem;

            -webkit-transform:translateZ(0);    
            transform:translateZ(0);
            -webkit-transition: all .3s ease;  
            transition: all .3s ease;
        }

        /*点击白色圆按钮时  圆按钮会有拉长的效果*/
        .emulate-ios-button:active:after {
            width: 1.1rem;
        }

        /* ============== 设置raw-checkbox,视觉直观比较 ============================ */
        .raw-checkbox{

            height:2rem;
            width:2rem;
        }

        .raw-checkbox:checked+label {
            background: #34bf49;
        }

        /* 这里是伪元素偏移,初始是0.9+0.05 ,所以这里1.05rem */
        .raw-checkbox:checked+label:after {
            /*设置开启时白色按钮的位置*/ 
            left: 0.55rem;
        }

        /*此句可以去掉*/
        .raw-checkbox:checked+label:active:after {
            /*设置关闭时白色按钮的位置*/
            left: .5rem;
        }

        /*设置checkbox为无效时 相应label的样式*/
        .raw-checkbox:disabled+label {
            background: #d5d5d5;
            pointer-events: none;
        }
        .raw-checkbox:disabled+label:after {
            background: #bcbdbc;
        }

    </style>
</head>

<body>
    <div class="ios-checkbox">
        <input type="checkbox" id="ios-checkbox" name="emulate-ios-button" class="raw-checkbox" style = "display:none"> 
        <label for="ios-checkbox" class="emulate-ios-button"></label>
    </div>
</body>

</html>

相关知识点理解:
(1):before 和 :after伪元素:
在元素前或后添加内容
凡是页面装修的元素都可以用伪元素来实现,不受文档约束,也不影响文档本身(比如,不影响 DOM),只影响最终的样式。
伪对象:after有一个很重要的用法–清除浮动。
这种清除浮动的方法几乎成了一个固定的模式。很多大型网站里面都有用到。
以下代码:

.elementCls:after{
    clear:both;
    content:".";
    height:0;
    visibility:hidden;
}

(2):active 伪类向激活(在鼠标点击与释放之间发生的事件)的元素添加特殊的样式。

(3)当点击<label for="cb_add_favorite">时,光标焦点会定位到id="cb_add_favorite"为的元素上。这样方便用户操作!

(4)>尖括号 选择子元素
+ 加号 选择相邻兄弟节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值