我们都知道 checkbox 标签默认样式 实在是太low了,故对CheckBox美化很有必要。

现提供两种方式对其进行美化。

方法一

<div class="switch-wrap active">
<span></span>
</div>
.switch-wrap{
position: relative;
display: inline-block;
width: 52px;
height: 32px;
border: 1px solid #DFDFDF;
outline: none;
border-radius: 16px;
box-sizing: border-box;
background: #FFFFFF;
cursor: pointer;
transition: border-color .3s,background-color .3s;
vertical-align: middle;
}
.switch-wrap span{
position: absolute;
top:;
left:;
transition: transform 0.3s;
width: 30px;
height: 30px;
border-radius: 50%;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
background-color: #fff;
}
.switch-wrap.active{
border-color: #33DB70;
background-color: #33DB70;
}
.switch-wrap.active span{
transform: translateX(20px);
}

控制切换通过添加类名 active 来控制

相关jQuery代码为

$(".switch-wrap").click(function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
}else{
$(this).addClass("active");
}
})

预览地址:https://zuobaiquan.github.io/css3/纯css实现checkbox开关切换按钮/01/index.html

源码地址 https://github.com/zuobaiquan/css3/tree/master/纯css实现checkbox开关切换按钮/01

方法二

当点击 label ,光标会根据for 属性指向checkbox中的 id

<div class='switch-wrap'>
<input type='checkbox' id= 'switch'>
<label for='switch'></label>
</div>
.switch-wrap input[type=checkbox]{
height: 0px;
width: 0px;
visibility: hidden;
margin:;
padding:;
}
.switch-wrap label{
display: inline-block;
width: 52px;
height: 32px;
border: 1px solid #DFDFDF;
outline: none;
border-radius: 16px;
box-sizing: border-box;
background: #FFFFFF;
cursor: pointer;
transition: border-color .3s,background-color .3s;
vertical-align: middle;
position: relative;
}
.switch-wrap label::before {
content: '';
position: absolute;
top:;
left:;
transition: transform 0.3s;
width: 30px;
height: 30px;
border-radius: 50%;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
background-color: #fff;
}
.switch-wrap input:checked + label {
background: #33DB70;
}
.switch-wrap input:checked + label:before {
transform: translateX(20px);
}

这里纯粹的是css控制开关切换。无相关的js逻辑代码

预览地址:https://zuobaiquan.github.io/css3/纯css实现checkbox开关切换按钮/02/index.html

源码地址 https://github.com/zuobaiquan/css3/tree/master/纯css实现checkbox开关切换按钮/02

总结

方法一利用js控制开关逻辑。通过类名active来实现开关切换。方法二利用checkbox点击来控制开关切换。通过label指向 checkbox的id来控制。其缺点:id具有唯一性;与后端逻辑交互较难控制开关状态。故方法一可取。

纯css实现checkbox开关切换按钮的更多相关文章

  1. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  2. 利用target的特性,可以实现纯css的tab效果切换

    基础知识: :target起作用的是href连接到的位置 如 <a href="#tab1">tab1</a> <div id="tab1& ...

  3. 纯CSS实现tab选项卡切换

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta cont ...

  4. 用CSS美化checkbox复选按钮和raido单选按钮-适用于移动端

    最终效果: 实现方法 index.html: <!DOCTYPE html> <html> <head> <title></title> & ...

  5. 利用纯CSS美化checkbox和radio和滑动按钮的实现

    W3C提供的CheckBox和radio的原始样式非常的丑,而且在不同的额浏览器表现还不一样,使用常规的方法添加样式没法进行修改样式 一, 单选按钮 <html> <head> ...

  6. 转 纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  7. 【转】纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  8. 纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  9. 纯CSS修改checkbox复选框样式-02

    我有用过这个纯修改input属性的 本人修改后的代码和效果图(修的不好), 这个是改动最简单的: css代码 input[type=checkbox]{ visibility: hidden; } i ...

随机推荐

  1. Android为TV端助力context转换类型

  2. AndroidTV端的requestFocus()问题

    每次开机盒子或者电视的时候,发现给某些控件设置请求焦点 requestFocus 会失效 最终的解决办法就是延时请求 view.postDelayed(new Runnable() { @Overri ...

  3. 智能POS常见问题整理

    智能POS预警值为小于所设的数量,H5就会变为锁定状态 智能POS查看数据库方法: 商米D1:设置-存储设备和USB-内部存储设备-浏览-winboxcash tablet.db为智能POS数据库 W ...

  4. webmagic 爬取网页所有文章的标题时间作者和内容

    package com.ij34; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Page; import us.co ...

  5. Nagle 算法

    1. Nagel算法        TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发 ...

  6. c/c++ 网络编程 UDP 主机网络信息取得

    网络编程 UDP 主机网络信息取得 1,if_nametoindex 通过网卡名字取得网卡编号 2,if_indextoname 通过网卡编号取得网卡名字 #include <stdio.h&g ...

  7. navicat 将自增长字段重置(重新从1开始)的方法

    先说明,此语句会将你的表中数据全部删除. 很简单,运行如下sql语句: TRUNCATE TABLE 表名;

  8. IOS开发protocol使用

    1.什么是protocol? protocol(协议)是用来定义对象的属性和行为,用于回调. 2.protocol分类? 协议中有三个修饰关键字@required和@optional和@propert ...

  9. mysql面试题

    01. 列举常见的关系型数据库和非关系型都有那些? 1.关系型数据库通过外键关联来建立表与表之间的关系,---------常见的有:SQLite.Oracle.mysql 2.非关系型数据库通常指数据 ...

  10. LeetCode算法题-Number Complement(Java实现-五种解法)

    这是悦乐书的第240次更新,第253篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第107题(顺位题号是476).给定正整数,输出其补码数.补充策略是翻转其二进制表示的位 ...