利用CSS3编写类似iOS中的复选框及带开关的按钮的代码

这篇文章主要介绍了使用css3编写类似ios中的复选框及带开关的按钮,需要的朋友可以参考下

checkbox多选

最近写了一个适合移动端的checkbox,如图:
2016411114913458.png (812×522)

ps:中间的勾勾是iconfont,iOS风格的。

具体的HTML:

立即学习“前端免费学习笔记(深入)”;

CSS代码(SCSS导出的,排版有些奇怪):

.mui-checkbox {     -webkit-appearance: none;     position: relative;     width: 25px;     height: 25px;     margin-right: 10px;     background-color: #FFFFFF;     border: solid 1px #d9d9d9;     border-top-left-radius: 20px;     border-top-rightright-radius: 20px;     border-bottom-left-radius: 20px;     border-bottom-rightright-radius: 20px;     background-clip: padding-box;     display: inline-block; }     .mui-checkbox:focus {       outline: 0 none;       outline-offset: -2px; }     .mui-checkbox:checked {       background-color: #18b4ed;       border: solid 1px #FFFFFF; }       .mui-checkbox:checked:before {         display: inline-block;         margin-top: 1px;         margin-left: 2px;         font-family: iconfont;         content: "e667";         color: #FFFFFF;         font-size: 18px; }     .mui-checkbox:disabled {       background-color: #d9d9d9;       border: solid 1px #d9d9d9; }       .mui-checkbox:disabled:before {         display: inline-block;         margin-top: 1px;         margin-left: 2px;         font-family: iconfont;         content: "e667";         color: #FFFFFF;         font-size: 18px; }     .mui-checkbox.checkbox-green:checked {       background-color: #5cb85c; }     .mui-checkbox.checkbox-orange:checked {       background-color: #f0ad4e; }     .mui-checkbox.checkbox-s {       width: 19px;       height: 19px; }       .mui-checkbox.checkbox-s:before {         display: inline-block;         margin-top: 1px;         margin-left: 2px;         font-family: iconfont;         content: "e667";         color: #FFFFFF;         font-size: 13px; }   .mui-checkbox-anim {     -webkit-transition: background-color ease 0.2s;             transition: background-color ease 0.2s; }

SCSS代码:

@mixin checkedCon($fs:18px) {     &:before {       display: inline-block;       margin-top: 1px;       margin-left: 2px;       font-family: iconfont;       content: "e667";       color: #FFFFFF;       font-size: $fs;     }   }   $duration: .4s;   .mui-checkbox {     -webkit-appearance: none;     position: relative;     width: 25px;     height: 25px;     margin-right: 10px;     background-color: #FFFFFF;     border: solid 1px #d9d9d9;     border-top-left-radius: 20px;     border-top-rightright-radius: 20px;     border-bottom-left-radius: 20px;     border-bottom-rightright-radius: 20px;     background-clip: padding-box;     display: inline-block;     &:focus {       outline: 0 none;       outline-offset: -2px  }     &:checked {       background-color: #18b4ed;       border: solid 1px #FFFFFF;       @include checkedCon();     }     &:disabled {       background-color: #d9d9d9;       border: solid 1px #d9d9d9;       @include checkedCon();     }     &.checkbox-green:checked {       background-color: #5cb85c;     }     &.checkbox-orange:checked {       background-color: #f0ad4e;     }     &.checkbox-s {       width: 19px;       height: 19px;       @include checkedCon(13px);     }   }   .mui-checkbox-anim{     //border等其他元素不做过渡效果,增加视觉差,更有动画效果     transition: background-color ease $duration/2;   }

switch开关
本身我做这一个ui的目的是支持移动端的页面,而webkit上也正好支持单标记的input元素是使用伪类(:before或:after),所以我没做更多的支持和优化,我只是想尽量的保持html干净,所以没用其他元素做模拟。如果你要使用在桌面应用上,或支持其他浏览器,可以自己稍微修改一下,反正我是没测试过。

今天继续分享一个iOS风格的switch开关按钮,样子也非常常见,如图:
2016411115110047.png (818×350)

主要是使用了来模拟实现,具体的HTML:

在实际的使用中后来又增加了两个过渡效果,分别加 mui-switch-animbg和mui-switch-anim 类即可,具体效果查看下面的demo页面。

CSS代码(SCSS导出的,排版有些奇怪):

.mui-switch {     width: 52px;     height: 31px;     position: relative;     border: 1px solid #dfdfdf;     background-color: #fdfdfd;     box-shadow: #dfdfdf 0 0 0 0 inset;     border-radius: 20px;     border-top-left-radius: 20px;     border-top-rightright-radius: 20px;     border-bottom-left-radius: 20px;     border-bottom-rightright-radius: 20px;     background-clip: content-box;     display: inline-block;     -webkit-appearance: none;     user-select: none;     outline: none; }     .mui-switch:before {       content: '';       width: 29px;       height: 29px;       position: absolute;       top: 0px;       left: 0;       border-radius: 20px;       border-top-left-radius: 20px;       border-top-rightright-radius: 20px;       border-bottom-left-radius: 20px;       border-bottom-rightright-radius: 20px;       background-color: #fff;       box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); }     .mui-switch:checked {       border-color: #64bd63;       box-shadow: #64bd63 0 0 0 16px inset;       background-color: #64bd63; }       .mui-switch:checked:before {         left: 21px; }     .mui-switch.mui-switch-animbg {       transition: background-color ease 0.4s; }       .mui-switch.mui-switch-animbg:before {         transition: left 0.3s; }       .mui-switch.mui-switch-animbg:checked {         box-shadow: #dfdfdf 0 0 0 0 inset;         background-color: #64bd63;         transition: border-color 0.4s, background-color ease 0.4s; }         .mui-switch.mui-switch-animbg:checked:before {           transition: left 0.3s; }     .mui-switch.mui-switch-anim {       transition: border cubic-bezier(0, 0, 0, 1) 0.4s, box-shadow cubic-bezier(0, 0, 0, 1) 0.4s; }       .mui-switch.mui-switch-anim:before {         transition: left 0.3s; }       .mui-switch.mui-switch-anim:checked {         box-shadow: #64bd63 0 0 0 16px inset;         background-color: #64bd63;         transition: border ease 0.4s, box-shadow ease 0.4s, background-color ease 1.2s; }         .mui-switch.mui-switch-anim:checked:before {           transition: left 0.3s; }   /*# sourceMappingURL=mui-switch.css.map */

SCSS代码:

@mixin borderRadius($radius:20px) {     border-radius: $radius;     border-top-left-radius: $radius;     border-top-rightright-radius: $radius;     border-bottom-left-radius: $radius;     border-bottom-rightright-radius: $radius;   }   $duration: .4s;   $checkedColor: #64bd63;   .mui-switch {     width: 52px;     height: 31px;     position: relative;     border: 1px solid #dfdfdf;     background-color: #fdfdfd;     box-shadow: #dfdfdf 0 0 0 0 inset;     @include borderRadius();     background-clip: content-box;     display: inline-block;     -webkit-appearance: none;     user-select: none;     outline: none;     &:before {       content: '';       width: 29px;       height: 29px;       position: absolute;       top: 0px;       left: 0;       @include borderRadius();       background-color: #fff;       box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);     }     &:checked {       border-color: $checkedColor;       box-shadow: $checkedColor 0 0 0 16px inset;       background-color: $checkedColor;       &:before {         left: 21px;       }     }     &.mui-switch-animbg {       transition: background-color ease $duration;       &:before {         transition: left 0.3s;       }       &:checked {         box-shadow: #dfdfdf 0 0 0 0 inset;         background-color: $checkedColor;         transition: border-color $duration, background-color ease $duration;         &:before {           transition: left 0.3s;         }       }     }     &.mui-switch-anim {       transition: border cubic-bezier(0, 0, 0, 1) $duration, box-shadow cubic-bezier(0, 0, 0, 1) $duration;       &:before {         transition: left 0.3s;       }       &:checked {         box-shadow: $checkedColor 0 0 0 16px inset;         background-color: $checkedColor;         transition: border ease $duration, box-shadow ease $duration, background-color ease $duration*3;         &:before {           transition: left 0.3s;         }       }     }   }

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

css3的transform中scale缩放的分析

关于CSS中list-style修改列表属性控制li标签样式的问题

关于CSS文本超出div或者span时用省略号代替的代码

以上就是利用CSS3编写类似iOS中的复选框及带开关的按钮的代码的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何用css3绘制一个圆的loading转圈动画
上一篇 2025年12月24日 01:10:49
下一篇 2025年12月24日 01:10:55

相关推荐

  • Golang空接口如何应用在项目中

    空接口可用于接收任意类型值,常见于日志函数、通用数据结构、JSON动态解析及配置驱动逻辑,提升代码灵活性,但需配合类型断言确保安全,避免滥用以降低维护成本。 空接口 interface{} 在 Go 语言中是一个非常灵活的类型,它可以存储任何类型的值。虽然它牺牲了一部分类型安全,但在实际项目中合理使…

    2026年5月10日
    100
  • Go语言接口与切片:如何识别和操作[]interface{}

    本文将深入探讨Go语言中如何识别和操作`[]interface{}`类型的切片。我们将介绍类型断言(Type Assertion)的关键作用,并通过`switch`语句演示如何安全地检测`[]interface{}`类型,并进而遍历其内部元素。文章旨在提供清晰的示例代码和专业指导,帮助开发者有效地处…

    2026年5月10日
    000
  • JavaScript计算器开发:解决数值显示与初始化问题

    本教程深入探讨了使用JavaScript构建计算器时常见的数值显示异常问题,特别是由于类属性未初始化导致的`Cannot read properties of undefined`错误。我们将详细分析问题根源,并通过在构造函数中调用初始化方法来解决该问题,同时优化显示逻辑,确保计算器功能稳定且界面显…

    2026年5月10日
    000
  • 利用css3仿造window7的开始菜单

    相当逼真,css3果然强悍。要留意的点依旧是哪几项,难点在于细节的微调,尤其是渐变背景的制作,css3中非常灵活,下次有机会,发篇css3渐变背景的详细教程。   相当逼真,css3果然强悍。友情提示:请勿在IE下浏览。来看下原作者的设计草图: 简明创建过程  第一步 :创建如下菜单结构 @@##@…

    2026年5月10日
    000
  • JavaScript动态下拉菜单:实现日期选项与价格计算关联

    在现代web应用中,动态生成表单元素并使其具备交互逻辑是常见的需求。特别是在需要根据用户选择调整价格或服务参数的场景下,下拉菜单()常被用来展示一系列选项。本教程将指导您如何利用javascript动态生成一个包含日期选项的下拉菜单,并为每个选项关联一个具体的数值(如剩余天数),进而实现一个基于用户…

    2026年5月10日
    000
  • 怎么安装html5_HTML5开发环境安装与配置详细步骤

    答案是配置HTML5开发环境需三步:1. 安装VS Code等编辑器并配置插件;2. 使用Chrome或Firefox测试页面;3. 可选搭建本地服务器,如Live Server或http-server;最后创建index.html文件验证环境。 安装HTML5开发环境其实并不复杂,因为HTML5本…

    2026年5月10日
    000
  • 使用CSS Grid实现不规则列布局:告别传统表格的限制

    本教程详细阐述如何利用css grid实现复杂的、不规则的列布局,尤其适用于那些传统html表格难以实现的块状结构。文章将通过具体的css属性和html结构示例,指导读者如何定义网格、控制子项的跨度与位置,以及优化自动布局流程,从而高效构建灵活且响应式的页面布局。 1. 传统表格的局限与CSS Gr…

    2026年5月10日
    000
  • Go语言中实现策略模式:灵活处理多源数据与格式转换

    本文探讨了如何在go语言中实现策略模式,以优雅地处理多源数据收集与多格式数据转换的场景。通过定义清晰的接口和具体的策略实现,结合go语言简洁的特性,展示了两种将策略集成到工作流中的方法,强调了go中接口驱动的灵活性。 在软件开发中,我们经常面临需要处理多种算法或行为,并根据具体情况选择其中之一的场景…

    2026年5月10日
    000
  • JS如何实现策略模式

    策略模式通过封装算法使其可互换,JavaScript中利用函数作为一等公民实现,适用于表单验证等场景,结合工厂模式提升灵活性,但应避免过度设计。 策略模式的核心在于定义一系列算法,并将每一个算法封装起来,使它们可以相互替换。这使得算法可以在不影响客户端的情况下发生变化。在JS中,这可以通过函数作为一…

    2026年5月10日
    000
  • 优化React-Redux应用中的用户与受保护数据按需加载

    本教程旨在解决React-Redux应用中用户数据和受保护API密钥在用户未登录时仍被请求,导致401错误的问题。通过引入条件性Redux状态初始化和动作分发逻辑,确保只有在用户被认为已认证时才发起相关的API请求,从而优化应用性能,减少不必要的网络流量和控制台错误。 在构建现代Web应用时,尤其是…

    2026年5月10日
    000
  • Go语言并发二叉树遍历:通道关闭与等价性判断的优雅方案

    本文探讨了在Go语言中并发遍历二叉树时,如何正确处理通道(channel)的关闭时机问题,尤其是在递归函数中。通过结合defer语句和闭包(closure)的巧妙运用,提供了一种优雅且健壮的解决方案,确保通道在所有值发送完毕后才被关闭,进而实现两个二叉树的等价性判断。 1. 并发遍历二叉树的需求与挑…

    2026年5月10日
    000
  • border-radius属性如何使用

    border-radius属性用于创建圆角,其使用语法是“border-radius: 1-4 length|%;”,border-radius是一个最多可指定四个“border -*- radius”属性的复合属性。 本文操作环境:Windows7系统、Dell G3电脑、HTML5&&a…

    2026年5月10日
    000
  • Golang环境变量配置自动化脚本方法

    答案:通过编写Shell脚本自动化配置Go环境变量,可实现GOROOT、GOPATH、GOBIN及PATH等变量的自动设置,提升开发效率。具体做法是创建setup_go_env.sh脚本,定义GOROOT为Go安装路径(如/usr/local/go),GOPATH为工作区(如~/go_project…

    2026年5月10日
    000
  • 深入理解Go语言中的短声明:=与长声明var

    Go语言提供了两种主要的变量声明和初始化方式:短声明:=和长声明var。:=主要用于函数内部,实现变量的声明与初始化,并常用于控制流语句中以限制变量作用域,例如在if语句中处理错误。而var则更为通用,可用于包级别或函数内部,支持显式类型声明、不带初始化的声明以及批量声明,提供了更大的灵活性。 1.…

    2026年5月10日
    000
  • 详解img[src=””] img无路径情况下,灰色边框去除解决方法

    img[src=””]  img标签无路径情况下,灰色边框去除解决方案 1.Js解决办法 @@##@@ function whenError(a){ a.onerror=null; a.src=’path_default.jpg’; console.log(‘图片出错的时候调…

    用户投稿 2026年5月10日
    000
  • HTML5怎么制作天气应用_HTML5天气组件开发实战

    使用HTML5、CSS3和JavaScript结合OpenWeatherMap API可快速开发响应式天气应用。2. 页面结构包含输入框、按钮和结果显示区域。3. 通过fetch调用API获取实时天气数据,支持中文和摄氏度单位。4. 数据渲染包括城市名、温度、图标、湿度和风速,并用CSS美化界面。5…

    2026年5月10日
    000
  • JavaScript实现多币种价格转换教程

    本教程详细讲解如何使用JavaScript实现多币种价格转换功能。文章将涵盖从远程API获取汇率数据、处理页面上多个价格元素的转换,以及如何避免重复转换导致的错误。核心在于利用`querySelectorAll`选取所有相关元素,并维护原始价格值以确保每次转换都基于准确的初始数据,从而实现稳定、准确…

    2026年5月10日
    000
  • 关于CSS3字体属性整理分析

     字体属性: Font-family: {font-family: name}           {font-family: cursive| fantasy | monospace | serif | sans-serif} Font-size: {font-size: 数值 | inherit…

    用户投稿 2026年5月10日
    000
  • Golang初学者如何用flag包开发一个功能完整的命令行工具

    Go语言flag包可用于解析命令行参数,支持布尔、字符串、整数等类型,通过flag.Type或flag.TypeVar定义参数,结合flag.Parse实现输入解析。示例中定义了-name和-v参数,运行时输出问候语和详细信息。支持多种定义方式:flag.Type返回指针,flag.TypeVar绑…

    2026年5月10日
    000
  • Golang如何构建简易的笔记应用

    答案是一个基于Golang的简易笔记应用,通过结构体定义笔记并以JSON格式存储;实现添加、列出和搜索笔记功能,结合标准库进行文件操作与命令行解析,支持后续扩展如删除、数据库升级等。 用Golang构建一个简易的笔记应用并不复杂,重点在于设计清晰的结构和使用标准库高效处理文件操作与命令行交互。下面是…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信