效果:
静态html:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="./index.css">
</head>
<body>
<div class="checkbox">
<div class="inner">
<div class="toggle"></div>
</div>
</div>
</body>
<script src="./jquery-1.10.2.min.js"></script>
<script src='./index.js'></script>
</html>
css 代码:
html,body{
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: aqua;
}
.checkbox{
width: 300px;
height: 150px;
background: linear-gradient(silver, whitesmoke);
border-radius: 4.5em;
display: flex;
justify-content: center;
align-items: center;
}
.inner{
height: 78%;
width: 85%;
background: linear-gradient(dimgray, silver);
border-radius: 4.5em;
box-shadow: inset 0 0 1.5em rgba(0, 0, 0, 0.5);
position: relative;
}
.toggle{
width: 40%;
height: 86%;
background: linear-gradient(to top, silver, whitesmoke);
border-radius: 50%;
box-shadow: 0 0.4em 0.6em rgba(0, 0, 0, 0.2);
position: absolute;
top: 7%;
left: -2%;
transition: left 1s;
}
.toggle::before{
left: 10%;
content: 'OFF';
position: absolute;
top: 8%;
width: 80%;
height: 80%;
background: linear-gradient(silver, whitesmoke);
border-radius: 50%;
text-align: center;
line-height: calc(6.5em * 0.8);
font-family: sans-serif;
color: gray;
}
.checkbox .inner.active {
background: linear-gradient(green, limegreen);
}
.checkbox .inner.active .toggle {
left: 62%;
}
.checkbox .inner.active .toggle::before {
content: 'ON';
color: limegreen;
}
js代码:
需要引入jquery:
$(document).ready(function() {
$('.toggle').click(function() {
$('.inner').toggleClass('active');
});
});