gsap+svg实现液态玻璃可调参数的checkbox开关效果代码
代码语言:html
所属分类:布局界面
代码描述:gsap+svg实现液态玻璃可调参数的checkbox开关效果代码
代码标签: gsap svg 液态 玻璃 可调 参数 checkbox 开关
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @import url('https://unpkg.com/normalize.css') layer(normalize); @layer normalize, base, demo, toggle, debug, transitions; @layer debug { .knockout--debug { translate: 0% 200%; outline: 4px hotpink dashed; } } @layer transitions { :root { --transition: 0.2s; --ease: ease-out; } [data-bounce='true']:has(button:active) { --transition: 0.6s; --ease: linear( 0 0%, 0.6091 3.69%, 1.0259 7.24%, 1.1733 9.05%, 1.283 10.92%, 1.3562 12.87%, 1.3948 14.95%, 1.4014 16.03%, 1.3999 17.16%, 1.3731 19.64%, 1.3202 22.27%, 1.1394 29.39%, 1.0582 33.17%, 0.9943 37.45%, 0.9734 39.64%, 0.9593 41.92%, 0.9505 45.08%, 0.9517 48.7%, 0.9924 63.02%, 1.0046 71.2%, 1.0061 78.24%, 1 100% ); } .indicator--masked .mask { translate: calc( (var(--complete) / 100) * (100cqi - 60cqi - (0 * var(--border))) ) -50%; /* transition-property: scale; */ /* this would work with scale if not for Safari getting funny about the mask */ transition-property: height, width, margin, scale; transition-duration: var(--transition); transition-timing-function: var(--ease); will-change: height, width, margin; } .wrapper { -webkit-clip-path: inset(0 0 0 0 round 100px); clip-path: inset(0 0 0 0 round 100px); filter: blur(6px); transition: filter var(--transition) var(--ease); } [aria-pressed='true']:not([data-active='true']) .liquid__track { left: calc(var(--border) * 6); } .liquid__track { left: 0; transition-property: height, width, filter, left; transition-duration: var(--transition); transition-timing-function: var(--ease); translate: calc( (var(--complete) / 100) * (100cqi - 100% - (6 * var(--border))) ) -50%; } .indicator__liquid { translate: calc( (var(--complete) / 100) * (100cqi - 100% - (2 * var(--border))) ) -50%; transition-property: scale; transition-duration: var(--transition); transition-timing-function: var(--ease); /* transform: scale(var(--scale-x, 1), var(--scale-y, 1)); */ } .indicator__liquid :is(.cover, .shadow) { transition: opacity var(--transition) var(--ease); } /* these are the actual changes when we scale up */ /* these should also with a [data-active=true] when [data-debug=true] */ [data-active='true'] .indicator--masked .mask, .liquid-toggle:active .indicator--masked .mask { height: calc((100% - (2 * var(--border))) * 1.65); width: calc((60% - (2 * var(--border))) * 1.65); margin-left: calc((60% - (2 * var(--border))) * -0.325); /* we can't use scale because of Safari flashing the mask color on change... */ /* scale: 1.65; */ } [data-active='true'] .indicator__liquid, .liquid-toggle:active .indicator__liquid { scale: 1.65; } [data-active='true'] .wrapper, .liquid-toggle:active .wrapper { filter: blur(0px); } [data-active='true'] .indicator__liquid .shadow, .liquid-toggle:active .indicator__liquid .shadow { opacity: 1; } [data-active='true'] .indicator__liquid .cover, .liquid-toggle:active .indicator__liquid .cover { opacity: 0; } [data-active='true'] .indicator__liquid .liquid__track, .liquid-toggle:active .indicator__liquid .liquid__.........完整代码请登录后点击上方下载按钮下载查看
网友评论0