前言
在前端页面中,经常会使用到开关类型的交互元素,比如说音量开关、夜间模式开关等等。在本文中,将介绍如何利用前端基础知识来制作一个简单的html开关图标,并实现点击开关状态的切换效果。
准备工作
HTML结构
首先,我们需要创建一个HTML结构来容纳我们的开关图标。对于一个简单的开关,我们只需要使用一个
<label class="switch">
<input type="checkbox">
<span class="slider round"></span>
</label>
其中,<input type="checkbox">
标签是用来记录开关状态的,而<span class="slider round">
则是我们开关的滑块部分。CSS样式将在后面进行讲解。
CSS样式
接下来,我们为开关元素添加CSS样式。我们需要对<label>
及其子元素进行定位、布局均采用CSS的绝对定位(position:absolute),并通过CSS设置其尺寸,背景色,边框等特性。
下面是一个基本的样式:
/* 开关整体样式 */
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* 开关滑块样式 */
.switch .slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
border-radius: 34px;
}
/* 开关滑块的圆角 */
.switch .slider.round {
border-radius: 34px;
}
/* 开关输入框样式 */
.switch input {
display: none;
}
/* 开启状态的滑块样式 */
.switch input:checked + .slider {
background-color: #2196F3;
}
/* 开启状态的滑块位置 */
.switch input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* 开关圆点样式 */
.switch .slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
border-radius: 50%;
}
一个基本的开关图标就完成了。我们可以展示在网页上,看到开关处于关闭状态。
实现开关切换功能
现在我们已经拥有了一个基本的开关图标,但是它还不能实现状态的切换,当我们点击它时它什么也不会发生。
使用JavaScript
要实现图标的开关切换,需要借助JavaScript。我们可以使用事件监听器来监听开关的点击事件,然后根据当前的状态来切换它的状态。
// 获取开关元素
var switchBtn = document.querySelector('.switch input[type="checkbox"]');
// 监听开关点击事件
switchBtn.addEventListener('click', function() {
if (this.checked) {
console.log('开关已打开');
} else {
console.log('开关已关闭');
}
});
从上面的代码可以看出,我们首先获取<input type="checkbox">
元素,并添加点击事件监听器,然后判断当前开关的状态。如果状态为开启,则输出“开关已打开”,否则输出“开关已关闭”。
改变开关状态
现在我们可以监听开关的点击事件,但是这并没有改变开关的状态。我们需要使用checked
属性来改变它的状态。当属性值为true
时,开关为开启状态;当属性值为false
时,开关为关闭状态。
// 获取开关元素
var switchBtn = document.querySelector('.switch input[type="checkbox"]');
// 监听开关点击事件
switchBtn.addEventListener('click', function() {
if (this.checked) {
console.log('开关已打开');
} else {
console.log('开关已关闭');
}
// 切换开关状态
this.checked = !this.checked;
});
我们在监听器中添加一行代码this.checked = !this.checked;
,用来切换开关状态。当开关处于关闭状态时,this.checked
值为 false
,将其赋值为true
来打开开关;当开关处于开启状态时,this.checked
值为 true
,将其赋值为false
来关闭开关。
总结
在本文中,我们学习如何使用前端基础知识,制作一个简单的html开关图标,并实现了点击开关状态的切换效果。通过此次学习,我们不仅了解到如何使用HTML和CSS来创建开关元素,还掌握了使用JavaScript来监听事件和改变开关状态的方法。