5.用 CSS 创作一个立体滑动 toggle 交互控件

原文地址:https://segmentfault.com/a/1190000014638655

 

HTML代码:

<html>
    <head>
        <link rel="stylesheet" href="index.css">
        <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    </head>
    <body>
        <div class="checkbox">
            <div class="inner">
                <div class="toggle"></div>
            </div>
        </div>
        <script src="index.pack.js"></script>
    </body>
</html>

CSS代码:

/* */
/* 居中显示: */
html,
body,
.checkbox,
.checkbox .inner,
.checkbox .inner .toggle {
    margin: 0;
    padding: 0;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* 画出外侧椭圆: */
.checkbox {
    width: 10em;
    height: 5em;
    background: linear-gradient(silver, whitesmoke);
    border-radius: 2.5em;
    font-size: 30px;
}
/* 画出内侧椭圆 */
.checkbox .inner {
    width: 8em;
    height: 3.5em;
    background: linear-gradient(dimgray, silver);
    border-radius: 2em;
    box-shadow: inset 0 0 1.5em rgba(0, 0, 0, 0.5);
}
/* 画出圆形按钮: */
.checkbox .inner .toggle {
    width: 3.5em;
    height: 3.5em;
    background: linear-gradient(to top, silver, whitesmoke);
    border-radius: 50%;
    box-shadow: 0 0.4em 0.6em rgba(0, 0, 0, 0.2);
    position: relative;
    left: -30%;
}
/* 为圆形按钮增加立体效果: */
.checkbox .inner .toggle::before {
    content: 'OFF';
    position: absolute;
    width: 80%;
    height: 80%;
    background: linear-gradient(silver, whitesmoke);
    border-radius: 50%;
    text-align: center;
    line-height: calc(3.5em * 0.8);
    font-family: sans-serif;
    color: gray;
}

/* 设置 active 时控件的样式: */
.checkbox .inner.active {
    background: linear-gradient(green, limegreen);
}
.checkbox .inner.active .toggle {
    left: 30%;
}
.checkbox .inner.active .toggle::before {
    content: 'ON';
    color: limegreen;
}

JS代码:

$(document).ready(function() {
    $('.toggle').click(function() {
        $('.inner').toggleClass('active');
    });
});

 

posted on 2018-12-11 18:07  人生与戏 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyingLiao/p/10103905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值