小程序原生的switch不能灵活的修改宽高、样式,很不方便,我这边参考 WeUI 的开关,写了一个可以自定义尺寸样式的switch组件。

直接上代码: https://gitee.com/piscdong/we...

效果如下图,可以自定义宽高,可以做成方角的

代码分析

这个switch主要的难点就是点击后背景颜色变换的动画,这里用到了css的transition、transform两个属性来实现动画,以及::before和::after两个伪元素。

wxml基本结构为:

<view class="switch"><view></view>
</view>

父级view是整个switch容器,会用到::before做背景色切换动画,::after做禁用时的灰色遮罩。内部的一个view是来回切换的白点。未选中时默认class是switch,选中时增加一个class:switch_checked。

选中状态到未选中状态背景有一个从中间变大到全部的白色动画,所以需要给父级view设置一个颜色作为背景色。

.switch {...background: #00c000;position: relative;
}

未选中时::before覆盖整个容器,选中时::before设置 transform: scale(0); ,这样选中时白色区域就会缩放到最小,再加上transition的实现动画效果。

.switch::before {display: block;content: '';position: absolute;top: 0;left: 0;right: 0;bottom: 0;border-radius: 9999rpx;background: #fff;transition: all 0.35s cubic-bezier(0.45, 1, 0.4, 1);
}.switch_checked::before {transform: scale(0);
}

来回移动的白点,未选中时通过 left: 0; 定位到左侧,选中时将left设置为100%定位到右侧,但是这样白点会完全移出容器范围,所以还需要加上 transform: translateX(-100%); 将白点向左再一定自身宽度的100%,同样加上transition的实现动画效果。

.switch view {position: absolute;top: 0;left: 0;width: 60rpx;height: 60rpx;border-radius: 50%;background: #fff;box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.4);transition: all 0.35s cubic-bezier(0.45, 1, 0.4, 1);
}.switch_checked view {left: 100%;transform: translateX(-100%);
}

关于“::”

最后搭车说一下“:”和“::”,“:”是伪类,“::”是伪元素。按照我的理解:伪类不会在dom中增加节点,只不过是css选择器的一种特殊效果;伪元素会增加节点,flex布局中会影响到其他元素。

为了保证兼容性,css3是允许伪元素使用单个冒号。

原文作者:Rolan

原文链接:http://www.wxapp-union.com/article-5753-1.html

小程序switch内部加上文字_干货 | 微信小程序教程:写一个能自定义尺寸、样式的switch...相关推荐

  1. 小程序switch内部加上文字_文字游戏大全:模拟游戏会长经营公会的小程序,你会管理公会吗?...

    40000+游戏爱好者已加入我们! 每天推荐好玩游戏! 加入我们,沐沐带你发现好游戏! <游戏会长>游戏小程序好玩吗? <游戏会长>小游戏怎么玩? 只有你想不到, 没有我找不到 ...

  2. 小程序switch内部加上文字_假王子恋爱手册2:女生向文字恋爱游戏小程序!女扮男装日记!...

    沐沐带你发现好游戏! 只有你想不到, 没有我找不到的好游戏! 「良心好游戏推荐」 搜罗了好玩的微信小游戏大全, 模拟经营游戏.恐怖游戏.消除游戏.休闲游戏. 益智游戏.吃鸡游戏.烧脑游戏.解谜游戏大全 ...

  3. 小程序switch内部加上文字_还愿师游戏小程序:这个女性向文字游戏有点意思!游戏结局居然......

    40000+游戏爱好者已加入我们! 每天推荐好玩游戏! 加入我们,沐沐带你发现好游戏! <还愿师>游戏小程序好玩吗? <还愿师>小游戏怎么玩? 只有你想不到, 没有我找不到的好 ...

  4. 小程序switch内部加上文字_Switch每日情报:国行版《健身环大冒险》微信小程序上线...

    1.任天堂<跳跃之王>预定12月27日登PS4及Switch Pikii 合同会社决定将在2020 年12 月17 日(四)发售Nintendo SwitchTM 及PlayStation ...

  5. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  6. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版,进阶学习文末加群! 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序. ...

  7. 微信小程序python自动化测试_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序.微信公众号等.小程 ...

  8. 微信小程序推送消息java开发_干货 | 微信小程序推送消息简单Demo

    在开始前,你需要准备:注册微信小程序 一个简单的springBoot 项目 微信开发者工具 正式 微信小程序发送消息主要通过WxMaTemplateMessage 类来推送 public class ...

  9. 微信小程序开发分销制度济南_花店微信小程序开发教程

    如何将自己的鲜花商品快速配送出去,避免鲜花过期浪费,是很多传统花店商家的难题.不过随着微信小程序的出现,这一难题也渐渐得到了解决.花店商家可以通过自己的小程序商城,打通线上渠道,可以加大推广.扩大销量 ...

  10. 微信小程序网络请求异常怎么办_解决·微信小程序开发-网络请求报Invalid request 400错误...

    今天学习了一下微信小程序的入门开发,在使用网络请求时,发现根据微信官方的API的方法进行操作出现Invalid request 400错误,到底怎么回事呢? 首先我们来看微信API网络请求 示例代码: ...

最新文章

  1. Python与风水 的‘’南北通透‘’住宅与‘’南北” 向住宅的均价数据分析
  2. haddler处理队列 netty_如何实现延迟队列
  3. php追加记录到文件行首的办法
  4. python qcut_Python之Pandas库学习(三):数据处理
  5. eclipse下拉框里的选项怎么鼠标单击表判断_领导让我预测下一年销量,怎么办?...
  6. [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)...
  7. 30人团队的数据架构师:谈谈数据湖这个风口吧,你们说的都没价值
  8. 小鹏、蔚来相继车祸,自动驾驶四字不等于“全自动”,也分等级!
  9. 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数
  10. python 文件读写 newline_「Python」:文件读写
  11. ubuntu 安装cuda 成功
  12. matlab平滑图像轮廓,Matlab 画平滑轮廓 print 高质量 figure
  13. 海思OSD开发系列(一) SDL_TTF框架移植
  14. android 陀螺仪滤波_高精度MEMS陀螺仪的滤波算法研究
  15. “探月计划”来袭,美国米德天文望远镜助孩子观月赏月
  16. 通过excel文件在arcgis中点转面
  17. setoolkit 制作钓鱼网页
  18. Microsoft_SQL_Server_自定义函数整理大全
  19. 小鹿妹眼中的三亚。告诉你怎么玩三亚
  20. 什么是数据共享?如何做好数据交换与共享?

热门文章

  1. JAVA实现汉字转拼英
  2. matlabadftest_ADF检验matlab代码,看看啊
  3. 我国计算机网络事业发展,我国计算机网络事业发展很快。据中国互联网络中心的一项统计显示【逻辑判断】...
  4. 高中数学平面解析几何解题技巧-直线与圆锥曲线的位置关系-习题
  5. java死循环_Java中可能出现死循环情况总结
  6. android前置拍照镜像代码,从Android的前置摄像头拍摄的镜像翻转视频
  7. RestTemplate.exchange各种用法(包括泛型等 --全)
  8. oracle将两个时间相减_oracle 两个时间相减
  9. UE4学习笔记----点光源属性
  10. 任小龙 mysql笔记_小码哥-任小龙Java笔记-面向对象的全部笔记.pdf