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

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

  

最终效果如图:

实现过程

1. 选项框checkbox

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

2. 理解开关的过程

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

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

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

  1.   <div class="switch-wrap">
  2. <span><span class="switch-action">开启</span>WLAN</span>
  3. <label class="switch">
  4. <input type="checkbox" name="switch" id="switch">
  5. </label>
  6. </div>

3. 开关的实现

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

  1. .switch input:before {
  2. content: '';
  3. display: inline-block;
  4. position: relative;
  5. border-radius: 20px;
  6. border: 1px solid #ccccc6;
  7. box-shadow: 0 0 1px 1px #ececf3;
  8. background-color: #fff;
  9. cursor: pointer;
  10. }
  1. .switch input:after {
  2. content: '';
  3. position: absolute;
  4. width: 12px;
  5. height: 12px;
  6. top: 2px;
  7. left: 3px;
  8. border-radius: 50%;
  9. background-color: #ccccc6;
  10. transition: .2s left, .2s background-color;
  11. }

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

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

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

  1. <style>
  2. .switch-wrap {
  3. position: relative;
  4. margin: 50px auto;
  5. width: 120px;
  6. height: 40px;
  7. font: 14px/1.5 Arial, Sans-Serif;
  8. }
  9.  
  10. .switch,
  11. .switch input,
  12. .switch input:before {
  13. width: 30px;
  14. height: 14px;
  15. }
  16.  
  17. .switch input {
  18. position: absolute;
  19. right:;
  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. width: 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. </style>

完整CSS代码

4. 开关的测试

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

  1. <script src="jquery.js"></script>
  2. <script type="text/javascript">
  3. $('#switch').change(function() {
  4. $('.switch-action').text(this.checked ? '关闭' : '开启');
  5. });
  6. </script>

MIUI选项框开关样式模拟的更多相关文章

  1. [js开源组件开发]模拟下拉选项框select

    模拟下拉选项框select 在css3流行的情况下,下拉框还是无法满足PD的需求,所以有了autosearch,有了模拟下拉框.效果如下图: select DEMO请案例点击这里查看.http://w ...

  2. Android弹出选项框及指示箭头动画选择

     Android弹出选项框及指示箭头动画选择 Android原生的Spinner提供了下拉列表选项框,但在一些流行的APP中,原生的Spinner似乎不太受待见,而通常会有下图所示的下拉列表选项框 ...

  3. 前端插件之Bootstrap Switch 选择框开关控制

    简介 Bootstrap Switch是一款轻量级插件,可以给选择框设置类似于开关的样式 它是依赖于Bootstrap的一款插件 下载 下载地址 在线引用 导入 因为它是依赖于Bootstrap的一款 ...

  4. 微信小程序之自定义select下拉选项框组件

    知识点:组件,animation,获取当前点击元素的索引与内容 微信小程序中没有select下拉选项框,所以只有自定义.自定义的话,可以选择模板的方式,也可以选择组件的方式来创建. 这次我选择了组件, ...

  5. 前端基础(十):Bootstrap Switch 选择框开关控制

    简介 Bootstrap Switch是一款轻量级插件,可以给选择框设置类似于开关的样式 它是依赖于Bootstrap的一款插件 下载 下载地址 在线引用 导入 因为它是依赖于Bootstrap的一款 ...

  6. WeChat-SmallProgram:自定义select下拉选项框组件

    1):创建组件所需的文件 2):自定义组件 CSS 及 JS 组件的wxml: <view class='com-selectBox'> <view class='com-sCont ...

  7. iOS webview加载html自定义选项框选词

    项目要求:webview加载html网址,内容为英文文本,需要获取文本上的单词 这个是最终效果图: 思路是先实现自定义的选项框(不带系统选项)再获取到滑选的单词: 实现的步骤: 首先是替换掉系统长按出 ...

  8. echarts中提示框的样式调整

    第一种方法:利用tooltip 里面的配置项 默认就会有写显示 第二种方法:利用formattet回调函数 返回我们想要显示的信息 formatter : function (params) { va ...

  9. python+selenium七:下拉框、选项框、select用法

    # from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimpo ...

随机推荐

  1. U盘安装ubuntu,一直提示start booting from usb device…[转]

    找到U盘中syslinux文件夹下的syslinux.cfg文件,在default vesamenu.c32前面加一个#号就可以了. 我的syslinux.cfg文件修改后如下,够简单吧!!!!建议用 ...

  2. jackson json转实体 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

    jackson 2.2.2 由于vo中缺少json的某个字段属性引起 2种解决方法 1:vo中添加注解@JsonIgnoreProperties(ignoreUnknown = true) 2.  m ...

  3. ECshop导入淘宝数据包乱码问题解决方法

    ECshop在导入淘宝数据包的时候出现数据乱码. 测试版本 ecshop2.73 利用淘宝助手导出一个数据包(.csv),不要一次全部商品导出,最好是将数据包控制在1M左右,因为ecshop对上传文件 ...

  4. MYSQL校对规则

    一.前言 有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录:有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新 ...

  5. 《热血传奇2》wix、wil文件解析Java实现

    在百度上搜索java+wil只有iteye上一篇有丁点儿内容,不过他说的是错的!或者说是不完整的,我个人认为我对于热血传奇客户端解析还是有一定研究的,请移步: <JMir——Java版热血传奇2 ...

  6. JS实现TITLE悬停长久显示效果

    canrun <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...

  7. IOS 使用SDWebImage实现仿新浪微博照片浏览器

    使用第三方库SDWebImage实现仿新浪微博照片浏览器,可以下载图片缓存,点击之后滚动查看相片,具体效果如下: 代码如下: WeiboImageView.h: #import <UIKit/U ...

  8. 读书笔记_Effective_C++_条款四十六:需要类型转换时请为模板定义非成员函数

    这个条款可以看成是条款24的续集,我们先简单回顾一下条款24,它说了为什么类似于operator *这样的重载运算符要定义成非成员函数(是为了保证混合乘法2*SomeRational或者SomeRat ...

  9. base.js

    function $_id(id){return document.getElementById(id)};//$只定义为通过ID返回元素的功能 //-----------------------do ...

  10. CSDN 2013年度博客之星评选——分享几张厦门杭州的美图

    亲爱的小伙伴们,作者在6号至20号,一直在休假中,出去也没带电脑,今天回家意外的发现自己有幸成为“CSDN 2013年度博客之星评选”的候选人,在此也谢谢各位小伙伴们的支持,谢谢CSDN的鼓励.我的投 ...