Q: 想要电脑上的开关按钮看起来跟App上的一样,可以吗?
A: 想要什麽颜色的呢?
介绍完transition
後,接下来这篇的实作案例会运用比较基础的js针对元素添加及移除class,以实际状况来说会是比较像是开关的按钮,透过样式设定及transition
可以得到一个看起来流畅的开关按钮。
javascript
的功能是当点击内部的circle
时,会寻找id为container
的元素,如果原本没有.is-active
,会对此元素新增class;如果原本有.is-active
,则将.is-active
从该元素移除。
<script>
function toggle() {
document.getElementById('container').classList.toggle('is-active')
}
</script>
<style>
.container {
box-sizing: border-box;
width: 70px;
height: 40px;
padding: 2px;
border-radius: 20px;
background-color: #eee;
border: 2px solid #ccc;
}
.circle {
position: relative;
width: 32px;
height: 32px;
background-color: #aaa;
border-radius: 50%;
margin-left: 0;
cursor: pointer;
}
.is-active.container {
background-color: Honeydew;
border-color: SeaGreen;
}
.is-active .circle {
background-color: DarkGreen;
margin-left: calc(100% - 32px);
}
</style>
<div id="container" class="container">
<div class="circle" onclick="toggle()"></div>
</div>
上方的程序码已经可以让开关正常运作,当有.is-active
时显示开关开启,没有时则显示关闭。再来只要对元素新增transition
,这时候所有属性包括background-color
、border-color
、margin-left
都会从原本的值以0.3秒的速度渐变为.is-active
的样式。如果只想对其中一个属性做渐变,那麽只要修改transition-property
就可以了,如transition-property: margin;
。
<style>
.container,
.circle {
transition: .3s;
}
</style>
这里要注意的是transition
要放的的位置是在没有is-active
的元素,如果将transition
下在有.is-active
的状态时,那麽当移除.is-active
後就不会有渐变的效果,会像一开始的开关按钮一样,margin
是直接做改变的。
<style>
.is-active.container,
.is-active .circle {
transition: all .3s;
}
</style>
如果有写错的地方,欢迎点评! 会及时改进~
如果有更好的写法,欢迎指教! 希望各位不吝赐教~
如果想看更多效果,欢迎敲碗! 提供示意图小编写写看~
如果内容疑似侵权,拜托告知! 内容皆为小编理解後原创~
如果对你有点帮助,拿去用吧!
EMR的分散式运算与分散式储存适用是批量处理的应用场景,它也和Glue一样有提供互动式分析介面:EM...
今天来做个文件的总结吧! 这篇文件 Cache and TLB Flushing Under Lin...
总览 API 路径(Endpoint)的一般安全准则。 注意事项 存取控制 API路径应遵循最小特权...
Laravel提供了一个方便且好用的方式包装资料,并提供一系列方法处理资料,方便你在处理业务逻辑的同...
Kadence Blocks 是近两三年积极发展的区块组合套件外挂,主打《区块 Block》作为建...