gsap+Draggable模仿苹果ios上下拖动音量亮度调节ui交互效果代码
代码语言:html
所属分类:拖放
代码描述:gsap+Draggable模仿苹果ios上下拖动音量亮度调节ui交互效果代码
代码标签: gsap Draggable 模仿 苹果 ios 上下 拖动 音量 亮度 调节 ui 交互
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<style>
@import 'normalize.css' layer(normalize);
* {
box-sizing: border-box;
}
html {
color-scheme: dark only;
}
body {
display: grid;
place-items: center;
min-height: 100vh;
background: hsl(0 0% 4%);
}
body::before {
--size: 45px;
--line: color-mix(in lch, canvasText, transparent 80%);
content: '';
height: 100vh;
width: 100vw;
position: fixed;
background: linear-gradient(
90deg,
var(--line) 1px,
transparent 1px var(--size)
)
50% 50% / var(--size) var(--size),
linear-gradient(var(--line) 1px, transparent 1px var(--size)) 50% 50% /
var(--size) var(--size);
-webkit-mask: linear-gradient(-20deg, transparent 50%, white);
mask: linear-gradient(-20deg, transparent 50%, white);
top: 0;
transform-style: flat;
pointer-events: none;
z-index: -1;
}
main {
display: grid;
grid-template-columns: repeat(3, calc(var(--slider-height) * 1px));
gap: 2rem;
}
.bear-link {
color: canvasText;
position: fixed;
top: 1rem;
left: 1rem;
width: 48px;
aspect-ratio: 1;
display: grid;
place-items: center;
opacity: 0.8;
}
:where(.x-link, .bear-link):is(:hover, :focus-visible) {
opacity: 1;
}
.bear-link svg {
width: 75%;
}
@layer slider {
.slider {
position: relative;
display: grid;
place-items: center;
margin: 0 auto;
}
.slider label {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.slider:focus-within,
.slider:hover {
--active: 1;
}
.slider:has(:focus-visible) {
outline: 2px solid canvasText;
outline-offset: 4px;
}
.slider [type='range'] {
width: calc(var(--slider-width) * 1px);
opacity: 0;
height: calc(var(--slider-height) * 1px);
}
.slider [type='range']:hover {
cursor: -webkit-grab;
}
.slider [type='range']:active {
cursor: -webkit-grabbing;
}
.slider [type='range']:focus-visible {
outline-offset: 0.25rem;
outline-color: transparent;
}
.slider [type='range']::-webkit-slider-thumb {
/* appearance: none; */
/* -webkit-appearance: none; */
height: calc(var(--slider-height) * 1px);
width: 48px;
margin-top: 0px;
opacity: 1;
}
.slider [type='range']::-webkit-slider-runnable-track {
/* -webkit-appearance: none; */
height: calc(var(--slider-height) * 1px);
background: hsl(10 0% 50% / 0.5);
/* You need to specify a margin in Chrome */
/* In Firefox and IE it is automatic */
/* margin-top: calc(var(--slider-height) * -0.5px); */
}
.slider [type='range']::-moz-range-track {
height: calc(var(--slider-height) * 1px);
background: hsl(10 0% 50% / 0.5);
/* margin-top: calc(var(--slider-height) * -0.5px); */
/* You need to specify a margin in Chrome */
/* In Firefox and IE it is automatic */
}
@supports (animation-timeline: scroll()) {
@property --slider-complete {
initial-value: 0;
syntax: '<number>';
inherits: true;
}
@-webkit-keyframes sync {
to {
--slider-complete: 1;
}
}
@keyframes sync {
to {
--slider-complete: 1;
}
}
.slider-wrap {
timeline-scope: --thumb;
animation: sync both linear reverse;
animation-timeline: --thumb;
animation-range: contain;
}
.slider [type='range']::-webkit-slider-thumb {
view-timeline-name: --thumb;
view-timeline-axis: inline;
}
}
}
@layer sliders {
:root {
--slider-radius: 16;
--slider-height: 96;
--slider-width: 214;
--transition: 0.4s;
--spring: linear(
0 0%,
0.5258 3.83%,
0.9015 8.01%,
1.0369 10.27%,
1.1399 12.68%,
1.2124 15.28%,
1.2563 18.13%,
1.2683 19.76%,
1.2731 21.51%,
1.2706 23.41%,
1.2609 25.51%,
1.2318 29.22%,
1.1328 39.11%,
1.0859 44.55%,
1.0464 50.71%,
1.0195 57.21%,
1.004 63.99%,
0.9963 72.12%,
0.9953 83.93%,
1 100%
);
--timing: linear(
0 0%,
0.4322 6.7%,
0.5876 9.63%,
0.7165 12.53%,
0.8238 15.53%,
0.9087 18.63%,
0.9731 21.89%,
1.0188 25.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0