当前位置: 首页 > news >正文

纯css手写switch

CSS 手写switch

  • 纯css手写switch
  • css变量

纯css手写switch

思路:

  1. switch需要的元素有:开关背景开关按钮。点击按钮后,背景色变化,按钮颜色变化,呈现开关打开状态。

  2. 利用type=checkbox,来实现switch效果(修改样式)。

细节:

  1. 开关背景可以在里面添加个<span>的作为被修改的背景。
  2. 开关按钮可以用伪元素来实现。
  3. 点击后颜色变化,可以根据checkbox特性,使用伪类选择器来添加改变背景色的样式,且通过伪类选择器,让伪元素移动位置。

前置知识一:

  1. 伪类选择器:
    概念:为处于某个状态的已有元素添加对应的样式,这个状态是根据用户行为而动态改变的。

    比如鼠标悬停hover效果,或者获取焦点focus效果。
    使用:用冒号表示


  2. 伪元素:
    概念:创建一些不在Dom树中的元素,并为其添加样式。
    使用:用双冒号表示。

前置知识二:正常来说,我们dispaly:none的时候,我们就不会触发隐藏元素的点击事件了。

对于type=checkbox,当我们在外层加一个<label>标签,就可以在隐藏input的时候,点击label触发选中事件,我们经常用这种方式来定义一些样式。

<!-- css实现switch开关 --><!-- 加一个label标签,当我们点击label标签的时候复选框会被选中 -->
<label class="switch"><input type="checkbox"><span class="slider"></span>
</label><style>:root{--switchWidth:90px;--switchHeight:40px;}/*前置操作:1. 外层定义switch的大小。2. 隐藏checkbox框。*//* 定义开关的大小 */.switch {position: relative;display: inline-block;width: var(--switchWidth);height: var(--switchHeight);}/* 隐藏原本的复选框 */.switch input {display: none;}/*第一步:1.定义switch的背景:让span标签,填充满父元素,用作switch的背景。2.定义switch的开关按钮:使用伪元素,给switch添加按钮。position:absolute会找离着自己最近的relative定位。*//* 开关背景 */.slider {position: absolute;  /* 子绝父相定位 */cursor: pointer;top: 0;left: 0;right: 0;bottom: 0;background-color: #eee;transition: .5s;    /* 过渡,所有的都0.5S */border-radius: 100px;}/* 开关按钮 */.slider::before {content: "";height: 30px;width: 30px;border-radius: 20px;position: absolute;left: 8px;bottom: 5px;background-color: #aeaaae;transition: .4s;}/*第二步:1.选中的时候更改起兄弟元素样式。也就是修改选中的背景色。2.选中的时候,开关按钮向左移动一段距离且改变颜色。*/input:checked + .slider{background: green;}	/* 使用伪类与伪元素。当input选中的时候,已经添加的伪类,颜色变白,且移动44px */input:checked + .slider::before{background-color: #fff;transform: translateX(44px);}
</style>

css变量

<style>:root{--size:200px;}	.box{height:var(--size);width:var(--size);background:red;}.box .item{height:calc(var(--size)/2);width:calc(var(--size)/2);background:green;}
</style>
<div class="box"><!-- css变量 --><!-- 使用方式:1.通过 " -- " 来定义一个css变量2.使用的时候,通过var方式引用。3.css变量同样可以用于计算。--><!--使用场景:css变量使用非常广泛,比如我们定义一个组件,如果不用变量的话,如果要改小宽度或者高度,是很麻烦的,会有连带效果。用变量以后会方便多。其次,可以方便于复用。--><div class="item"></div>
</div>
http://www.lryc.cn/news/192065.html

相关文章:

  • PyTorch 深度学习之处理多维特征的输入Multiple Dimension Input(六)
  • LeetCode【438】找到字符串中所有字母异位词
  • 关于LEFT JOIN的一次理解
  • 各报文段格式集合
  • 【算法-动态规划】最长公共子序列
  • 区块链游戏的开发流程
  • 目标检测网络系列——YOLO V2
  • 15. Java反射和注解
  • pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac
  • 微信小程序入门开发教程
  • php函数
  • 3.3 封装性
  • Redis魔法:点燃分布式锁的奇妙实现
  • iOS 项目避坑:多个分类中方法重复实现检测
  • 【003】EIS数据分析_#LIB
  • Sprint framework Day07:注解结合 xml 配置
  • LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流
  • js题解(四)
  • 如何进行大数运算和高精度计算?
  • 身份证读卡器跟OCR有何区别?哪个好?
  • 华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 网络监控神器 bmon
  • C++ 设计模式 —— 组合模式
  • 华为云Stack的学习(九)
  • Flink中jobmanager、taskmanager、slot、task、subtask、Parallelism的概念
  • OpenHarmony docker环境搭建
  • 【计算机网络】网络编程接口 Socket API 解读(11)
  • Qt工具开发,该不该跳槽?
  • 【深度学习】DDPM,Diffusion,概率扩散去噪生成模型,原理解读
  • HT8699:内置 BOOST 升Y双声道音频功率放大器
  • 利达卓越:关注环保事业,持续赋能科技