首页 > 开发 > CSS > 正文

CSS3模拟IOS滑动开关效果

2024-07-11 08:32:27
字体:
来源:转载
供稿:网友

前言

H5站点需要IOS滑动按钮的效果,想了想似乎CSS3能搞起,就折腾出来了...挺简单的..请看注释

效果

代码

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html>   <html lang="en">  
  2.    <head>  
  3.     <meta charset="UTF-8">       <title>CSS3模拟IOS开关</title>  
  4.     <style type="text/css" media="screen">          /* ==========================================================================   
  5.                         设置根元素字体大小           ========================================================================== */   
  6.         html {                font-size: 100px;   
  7.         }            /* ==========================================================================   
  8.                         设置模拟元素的包裹层,装饰...毫无卵用           ========================================================================== */   
  9.        .ios-checkbox{                height:4rem;   
  10.             width:4rem;                position:absolute;   
  11.             left:50%;                top:50%;   
  12.             -webkit-transform:translate(-50%, -50%);                        transform:translate(-50%, -50%);   
  13.             border:.05rem dashed #3DB7A9;                display:-webkit-box;   
  14.             display:-webkit-flex;                display:-ms-flexbox;   
  15.             display:flex;                -webkit-box-orient:horizontal;   
  16.             -webkit-box-direction:normal;                -webkit-flex-direction:column;   
  17.                 -ms-flex-direction:column;                        flex-direction:column;   
  18.             -webkit-flex-wrap:nowrap;                    -ms-flex-wrap:nowrap;   
  19.                     flex-wrap:nowrap;                -webkit-justify-content:space-around;   
  20.                 -ms-flex-pack:distribute;                        justify-content:space-around;   
  21.             -webkit-box-align:center;                -webkit-align-items:center;   
  22.                 -ms-flex-align:center;                        align-items:center;   
  23.        }            /* ==========================================================================   
  24.                     label标签模拟按钮                    ========================================================================== */   
  25.         .emulate-ios-button {                display: block;   
  26.             width: 2rem;                height: 1rem;   
  27.             background: #ccc;                border-radius: 5rem;   
  28.             cursor: pointer;                position: relative;   
  29.             -webkit-transition: all .3s ease;                transition: all .3s ease;   
  30.         }      
  31.         /* ==========================================================================                        设置伪类,来实现模拟滑块滑动,过渡用了transition来实现 ,   
  32.                     translateZ来强制启用硬件渲染              ========================================================================== */   
  33.            .emulate-ios-button:after {   
  34.             content: '';                display: block;   
  35.             width: .9rem;                height: .9rem;   
  36.             border-radius: 100%;                background: #fff;   
  37.             box-shadow: 0 1px 1px rgba(0, 0, 0, .1);                position: absolute;   
  38.             left: .05rem;                top: .05rem;   
  39.             -webkit-transform:translateZ(0);                    transform:translateZ(0);   
  40.             -webkit-transition: all .3s ease;                  transition: all .3s ease;   
  41.         }      
  42.         .emulate-ios-button:active:after {                width: 1.1rem;   
  43.         }      
  44.       /* ==========================================================================                        设置raw-checkbox,视觉直观比较    
  45.        ========================================================================== */            .raw-checkbox{   
  46.             height:2rem;                width:2rem;   
  47.         }      
  48.         .raw-checkbox:checked+label {                background: #34bf49;   
  49.         }      
  50.         /* 这里是伪元素偏移,初始是0.9+0.05 ,所以这里1.05rem */            .raw-checkbox:checked+label:after {   
  51.             left: 1.05rem;            }   
  52.            .raw-checkbox:checked+label:active:after {   
  53.             left: .5rem;            }   
  54.      
  55.         .raw-checkbox:disabled+label {                background: #d5d5d5;   
  56.             pointer-events: none;            }   
  57.            .raw-checkbox:disabled+label:after {   
  58.             background: #bcbdbc;            }   
  59.        </style>  
  60. </head>     
  61. <body>       <div class="ios-checkbox">  
  62.         <input type="checkbox" id="ios-checkbox" name="emulate-ios-button" class="raw-checkbox">           <label for="ios-checkbox" class="emulate-ios-button"></label>  
  63.     </div>   </body>  
  64.    </html>  
  65.   
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表