HTML5 SVG制作水滴粘连动画的Radiobox单选框【亲测谷歌浏览器】
2021-01-06 16:28
标签:ima filter style center script display url 单选 put 【单选框美化】 【效果图】 ---------------------------------------------------------------------------------------------------------------------------------------------------------感谢观看!期待您的下次光临! HTML5 SVG制作水滴粘连动画的Radiobox单选框【亲测谷歌浏览器】 标签:ima filter style center script display url 单选 put 原文地址:https://www.cnblogs.com/varchar-pig/p/14223954.htmlDOCTYPE html>
html lang="en" >
head>
meta charset="UTF-8">
title>HTML5 CSS3 SVG 水滴粘连动画的Radiobox单选框title>
style>
body {
align-items: center;
background: #708fd4;
font-family: ‘Inconsolata‘, monospace;
height: 100%;
justify-content: center;
margin: 0;
position: absolute;
width: 100%;
}
.filter {
position: absolute;
left: -9999px;
}
.burger {
display: flex;
flex-direction: column;
padding: 30px;
}
.radios-boxes {
display: flex;
width:250px;
margin:0 auto;
}
.radios {
display: flex;
filter: url(‘#gooeyness‘);
flex-direction: column;
overflow: hidden;
position: relative;
}
.radio {
-moz-appearance: none;
-ms-appearance: none;
-webkit-appearance: none;
appearance: none;
border-radius: 50%;
border: 16px solid #ccc;
cursor: pointer;
height: 60px;
margin: 10px;
outline: 0;
-webkit-tap-highlight-color: transparent;
transition: border-color 800ms;
width: 60px;
}
.radio.active {
border-color: white;
}
.ball {
background: white;
border-radius: 50%;
height: 34px;
left: 23px;
pointer-events: none;
position: absolute;
top: 23px;
transform: translateY(-80px);
transition: transform 800ms;
width: 34px;
}
.ball.pos0 {
transform: translateY(0px);
}
.ball.pos1 {
transform: translateY(80px);
}
.ball.pos2 {
transform: translateY(160px);
}
.ball.pos3 {
transform: translateY(240px);
}
.labels {
margin-left: 5px;
}
.label {
color: #ccc;
cursor: pointer;
display: flex;
flex-direction: column;
font-size: 28px;
line-height: 50px;
padding: 15px 0;
-webkit-tap-highlight-color: transparent;
transition: color 800ms;
}
.label.active {
color: white;
}
style>
head>
body>
svg class="filter" version="1.1">
defs>
filter id="gooeyness">
feGaussianBlur in="SourceGraphic" stdDeviation="8" result="blur" />
feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10" result="gooey" />
feComposite in="SourceGraphic" in2="gooey" operator="atop" />
filter>
defs>
svg>
div class="radios-boxes">
div class="radios">
input type="radio" name="radio" id="radio1" class="radio" value="r">
input type="radio" name="radio" id="radio2" class="radio" value="k">
input type="radio" name="radio" id="radio3" class="radio" value="t">
input type="radio" name="radio" id="radio4" class="radio" value="s">
div class="ball">div>
div>
div class="labels">
label for="radio1" class="label">radiolabel>
label for="radio2" class="label">killedlabel>
label for="radio3" class="label">the videolabel>
label for="radio4" class="label">starlabel>
div>
div>
script>
let radios = document.querySelectorAll(‘.radio‘);
let labels = document.querySelectorAll(‘.label‘);
let ball = document.querySelector(‘.ball‘);
let prevRadio, prevLabel;
radios.forEach((radio, index) => {
radio.addEventListener(‘click‘, function(e) {
if (prevRadio) prevRadio.classList.toggle(‘active‘);
if (prevLabel) prevLabel.classList.toggle(‘active‘);
radio.classList.toggle(‘active‘);
prevRadio = radio;
labels[index].classList.toggle(‘active‘);
prevLabel = labels[index];
ball.className = `ball pos${index}`;
});
});
script>
body>
html>
文章标题:HTML5 SVG制作水滴粘连动画的Radiobox单选框【亲测谷歌浏览器】
文章链接:http://soscw.com/index.php/essay/40521.html