div+css实现符合人体工程学的checkbox开关效果代码

代码语言:html

所属分类:其他

代码描述:div+css实现符合人体工程学的checkbox开关效果代码

代码标签: div css 符合 人体 工程学 checkbox 开关

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
<style>
:root {
	--sz: 10vmin; /* change toggle size */
	--on: #00BCD4;
	--of: #F44336;
	--lg: var(--of);
}	

*, *:before, *:after {
	box-sizing: border-box;
	transition: all 0.5s ease 0s;
}

body {
	margin: 0;
	padding: 0;
	width: 100vw;
	height: 100vh;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	background: radial-gradient(circle at 50% 50%, #1f1f23ee,  #101012ee);
}

body:before, body:after {
	content: "";
	position: absolute;
	width: 100%;
	height: 100%;
	background: 
		repeating-conic-gradient(#0002 0.000095%, #fff0 .0005%, #fff0 .005%, #fff0 .0005%), 
		repeating-conic-gradient(#0002 0.00001%, #fff0 .00009%, #fff0 .00075%, #fff0 .000025%);
	opacity: 0.75;
	filter: blur(0.75px);
	z-index: -1;
}

.toggle {
	position: relative;
	width: calc(var(--sz) * 2);
	height: calc(var(--sz) * 2);
	display: flex;
	align-items: center;
	justify-content: center;
	transform: rotate(-90deg);
}

input {
	display: none;
}

label[for=btn] {
	position: absolute;
	width: calc(var(--sz) * 1);
	height: calc(var(--sz) * 1.8);
	background: linear-gradient(0deg, #12172080, #0d121780);
	border-radius: calc(var(--sz) / 10 );
	box-shadow: 
		0 0 calc(var(--sz) / 50) calc(var(--sz) / 50) #0006, 
		0 calc(var(--sz) / -20) calc(var(--sz) / 5) calc(var(--sz) / 25) #0b0b10, 
		0 calc(var(--sz) / 80) calc(var(--sz) / 10) calc(var(--sz) / 50) #f5f5f588, 
		0 calc(var(--sz) / -80) calc(var(--sz) / 50) calc(var(--sz) / 15) #00000060;
}

label[for=btn]:before {
	content: "";
	position: absolute;
	width: 100%;
	height: 100%;
	border-radius: calc(var(--sz) / 10 );
	box-shadow: 0 0 calc(var(--sz) / 3) calc(var(--sz) / 10) #000 inset;
	background: 
		repeating-linear-gradient(45deg, #111111 0 2px, transparent 3px 4px), 
		repeating-linear-gradient(-45deg, #000 0 2px, transparent 3px 4px);
}

.thumb {
	position: absolute;
	width: calc(var(--sz)* 0.5);
	height: calc(calc(var(--sz)* 2) - calc(var(--sz) / 6));
	top: calc(calc(var(--sz) / 200) + calc(var(--sz) / -45));
	left: calc(calc(var(--sz) / 40) + calc(var(--sz) / -30));
	background: linear-gradient(0deg, #212121, #474747);
	background: #3c3c3c;
	border-radius: calc(var(--sz) / 10 );
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 1;
	overflow: hidden;
	box-shadow: 
		calc(var(--sz) / -10) 0 calc(var(--sz) / 10) calc(var(--sz) / -10) var(--lg), 
		calc(var(--sz) / 10) 0 calc(var(--sz) / 10) calc(var(--sz) / -10) var(--lg) inset,
		calc(var(--sz) / -50) calc(var(--sz) / 50) calc(var(--sz) / 30) 0 #fff2 inset, 
		0 0 calc(var(--sz) / 20) calc(var(--sz) / 50) #000c, 
		0 calc(var(--sz) / 80) calc(var(--sz) / 5) 0 #000d;
	transform: rotate(180deg);
}

#btn:checked + label .thumb {
	--lg: var(--on);
	left: calc(calc(100% - calc(calc(var(--sz) * 0) - calc(var(--sz) / 2.5))) - calc(calc( var(--sz) / 10) + calc(var(--sz) / 1.25)));
	box-shadow: 
		calc(var(--sz) / 10) 0 calc(var(--sz) / 10) calc(var(--sz) / -10) var(--lg), 
		calc(var(--sz) / -10) 0 calc(var(--sz) / 10) calc(var(--sz) / -10) var(--lg) inset, 
		calc(var(--sz) / -50) calc(var(--sz) / 50) calc(var(--sz) / 30) 0 #fff2 inset, 
		0 0 calc(var(--sz) / 20) calc(var(--sz) / 50) #000c, 
		0 calc(var(--sz) / 80) calc(var(--sz) / 5) 0 #000d;
}

.thumb:before, .thumb:after {
	content: "";
	position: absolute;
	width: 26%;
	height: 94%;
	background: linear-gradient(180deg, #00000012, #0004);
	border-radius: var(--sz);
	left: calc(var(--sz) / 15);
	filter: blur(1px);
	--mul: -10;
	box-shadow: 
		calc(var(--sz) / var(--mul)) 0 calc(var(--sz) / 20) calc(var(--sz) / -10) var(--lg) inset, 
		calc(var(--sz) / 10.........完整代码请登录后点击上方下载按钮下载查看

网友评论0