纯css手写switch
<!-- 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>