原生js封装开关组件
时间: 2023-08-31 11:14:15 浏览: 171
封装属于自己的JS组件
以下是一个简单的原生 JavaScript 封装的开关组件:
HTML 代码:
```html
<div class="toggle-switch">
<input type="checkbox" id="toggle" />
<label for="toggle"></label>
</div>
```
CSS 代码:
```css
.toggle-switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.toggle-switch input[type="checkbox"] {
display: none;
}
.toggle-switch label {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: grey;
border-radius: 34px;
cursor: pointer;
transition: background-color 0.2s;
}
.toggle-switch label::before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
border-radius: 50%;
transition: transform 0.2s;
}
.toggle-switch input:checked + label {
background-color: green;
}
.toggle-switch input:checked + label::before {
transform: translateX(26px);
}
```
JavaScript 代码:
```js
const toggleSwitch = document.querySelector('.toggle-switch input[type="checkbox"]');
function switchTheme(e) {
if (e.target.checked) {
document.documentElement.setAttribute('data-theme', 'dark');
} else {
document.documentElement.setAttribute('data-theme', 'light');
}
}
toggleSwitch.addEventListener('change', switchTheme, false);
```
这个开关组件会根据用户的选择在页面的 `html` 标签上添加或移除 `data-theme` 属性,以便你可以使用 CSS 样式来切换主题。
阅读全文