• IOS开关效果


    有IOS的开关模拟,当然也有MIUI的开关模拟

    看到设置选项里面的开关样式,突发奇想地来试试

      

    最终效果如图:

    <!DOCTYPE html>
    <html>
    
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<style>
    			.switch-wrap {
    				position: relative;
    				margin: 50px auto;
    				 120px;
    				height: 40px;
    				font: 14px/1.5 Arial, Sans-Serif;
    			}
    			
    			.switch,
    			.switch input,
    			.switch input:before {
    				 30px;
    				height: 14px;
    			}
    			
    			.switch input {
    				position: absolute;
    				right: 0;
    			}
    			
    			.switch input:before {
    				content: '';
    				display: inline-block;
    				position: relative;
    				border-radius: 20px;
    				border: 1px solid #ccccc6;
    				box-shadow: 0 0 1px 1px #ececf3;
    				background-color: #fff;
    				cursor: pointer;
    			}
    			
    			.switch input:after {
    				content: '';
    				position: absolute;
    				 12px;
    				height: 12px;
    				top: 2px;
    				left: 3px;
    				border-radius: 50%;
    				background-color: #ccccc6;
    				transition: .2s left, .2s background-color;
    			}
    			
    			.switch input:checked:after {
    				left: 15px;
    				background-color: #36a6fa;
    				transition: .2s left, .2s background-color;
    			}
    		</style>
    
    		<script src="jquery.js"></script>
    		<script type="text/javascript">
    			$('#switch').change(function() {
    				$('.switch-action').text(this.checked ? '关闭' : '开启');
    			});
    		</script>
    	</head>
    
    	<body>
    
    		<div class="switch-wrap">
    			<span><span class="switch-action">开启</span>WLAN</span>
    			<label class="switch">
                <input type="checkbox" name="switch" id="switch">
            </label>
    		</div>
    	</body>
    
    </html>
    

      

    实现过程

    1. 选项框checkbox 

    模拟开关当然需要一个选项框,这里用到了复选框checkbox

    2. 理解开关的过程

    点击开关按钮,则开启或关闭。原生的checkbox无法做到图示的效果,所以就需要额外的元素来表示图中的开关

    而我们又要使用到checkbox的点击效果以及点击后是否选中(checked)的效果,所以checkbox不能隐藏,但可以用覆盖的方式

    为了减少多余标签的使用,可以使用伪元素:before、:after ,标签结构为

      <div class="switch-wrap">
            <span><span class="switch-action">开启</span>WLAN</span>
            <label class="switch">
                <input type="checkbox" name="switch" id="switch">
            </label>
        </div>

    3. 开关的实现

    用:before伪元素作为开关背景层,用:after伪元素作为开关项(即那个小圆圈)

    复制代码
            .switch input:before {
                content: '';
                display: inline-block;
                position: relative;
                border-radius: 20px;
                border: 1px solid #ccccc6;
                box-shadow: 0 0 1px 1px #ececf3;
                background-color: #fff;
                cursor: pointer;
            }
    复制代码
    复制代码
            .switch input:after {
                content: '';
                position: absolute;
                 12px;
                height: 12px;
                top: 2px;
                left: 3px;
                border-radius: 50%;
                background-color: #ccccc6;
                transition: .2s left, .2s background-color;
            }
    复制代码

    初始小圆圈在左侧,当开关状态为开启时,右移,并更新开启状态的背景色

            .switch input:checked:after {
                left: 15px;
                background-color: #36a6fa;
                transition: .2s left, .2s background-color;
            }

    以上就是关键的代码了,以下为完整的样式

    复制代码
     1 <style>
     2     .switch-wrap {
     3             position: relative;
     4             margin: 50px auto;
     5              120px;
     6             height: 40px;
     7             font: 14px/1.5 Arial, Sans-Serif;
     8         }
     9 
    10         .switch,
    11         .switch input,
    12         .switch input:before {
    13              30px;
    14             height: 14px;
    15         }
    16 
    17         .switch input {
    18             position: absolute;
    19             right: 0;
    20         }
    21 
    22         .switch input:before {
    23             content: '';
    24             display: inline-block;
    25             position: relative;
    26             border-radius: 20px;
    27             border: 1px solid #ccccc6;
    28             box-shadow: 0 0 1px 1px #ececf3;
    29             background-color: #fff;
    30             cursor: pointer;
    31         }
    32 
    33         .switch input:after {
    34             content: '';
    35             position: absolute;
    36              12px;
    37             height: 12px;
    38             top: 2px;
    39             left: 3px;
    40             border-radius: 50%;
    41             background-color: #ccccc6;
    42             transition: .2s left, .2s background-color;
    43         }
    44 
    45         .switch input:checked:after {
    46             left: 15px;
    47             background-color: #36a6fa;
    48             transition: .2s left, .2s background-color;
    49         }
    50 
    51 
    52     </style>
    复制代码

    4. 开关的测试

    最后,可结合JS检测一下开关的状态变化

        <script src="jquery.js"></script>
        <script type="text/javascript">
            $('#switch').change(function() {
                $('.switch-action').text(this.checked ? '关闭' : '开启');
            });
        </script>
    [-_-]眼睛累了吧,注意劳逸结合呀[-_-]
  • 相关阅读:
    mvc:三
    mvc:二
    Linq分组,linq方法分组
    Linq 中按照多个值进行分组(GroupBy)
    Photoshop 字体
    报表Reporting S而vice是 错误的解决
    1*书籍装帧
    photoshop 魔术橡皮擦
    Photoshop 钢笔 双窗口显示
    数字格式化
  • 原文地址:https://www.cnblogs.com/libin-1/p/5888486.html
Copyright © 2020-2023  润新知