EyeDropper吸管取色器注入液体动画效果代码
代码语言:html
所属分类:动画
代码描述:EyeDropper吸管取色器注入液体动画效果代码,通过EyeDropper api获取屏幕任意区域颜色,然后产生注入水滴动画。
代码标签: EyeDropper 吸管 取色器 注入 液体 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
:root {
--color: wheat;
--ink-load-time: .5s;
--ink-fill-time: 2.5s;
--ripple-time: 1.5s;
}
body {
margin: 0;
overflow: hidden;
background: var(--color);
transition: background 0s calc(var(--ink-load-time) + var(--ink-fill-time));
font-family: sans-serif;
}
.ink {
height: 100vh;
background: var(--color);
transition: transform var(--ink-fill-time) var(--ink-load-time) cubic-bezier(0.53, 0.03, 0.95, 0.23);
}
body:not(.filled) .ink {
transform: translateY(100%);
transition: none;
}
.ripple {
position: absolute;
left: 50%;
translate: -50%;
top: 0;
width: 60vh;
aspect-ratio: 20 / 1;
display: flex;
justify-content: space-between;
}
body.filled .ripple {
animation: ripple linear var(--ripple-time) calc(var(--ink-load-time) + var(--delay));
}
@keyframes ripple {
5%,
100% {
transform: translateY(-98%);
}
}
.ripple-ridge {
fill: var(--color);
animation: inherit;
transform-origin: bottom;
}
body.filled .ripple-ridge:first-child {
animation-name: ripple-ridge-left;
}
body.filled .ripple-ridge:last-child {
animation-name: ripple-ridge-right;
}
@keyframes ripple-ridge-left {
5% {
transform: translateX(20%);
}
100% {
transform: translateX(-50vw) scale(3, 0.3);
visibility: hidden;
}
}
@keyframes ripple-ridge-right {
5% {
transform: translateX(-20%);
}
100% {
transform: translateX(50vw) scale(3, 0.3);
visibility: hidden;
}
}
.eyedropper-fill {
fill: var(--color);
stroke: hsl(0 0% 100% / .6);
}
.eyedropper-cap {
stroke: hsl(230 60% 55%);
}
.eyedropper {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%);
transition: .25s;
display: grid;
grid-template-columns: 1fr;
align-items: end;
justify-items: center;
cursor: pointer;
}
.eyedropper:is(:hover, :focus-visible) {
outline: none;
translate: 0 -5px;
}
.eyedropper > * {
grid-row-start: 1;
grid-column-start: 1;
}
.eyedropper-loader {
align-self: stretch;
justify-self: stretch;
clip-path: polygon(var(--pipette-polygon));
}
.eyedropper-loader::after {
content: "";
position: absolute;
top: 0;
width: 100%;
height: 200%;
background: repeating-linear-gradient(155deg, red 0 4%, orange 4% 11%, yellow 11% 18%, green 18% 25%, blue 25% 32%, purple 32% 39%, red 39% 42%);
transition: opacity .25s;
animation: load 1s linear infinite;
}
body:not(.loading) .eyedropper-loader::after {
opacity: 0;
}
@keyframes load {
to {
translate: 0 -46%;
}
}
.eyedropper-svg {
display: block;
width: auto;
height: 40vh;
fill: none;
stroke: black;
}
.droplet {
z-index: -1;
width: 3vh;
height: calc(var(--i) * 2vh + 4vh);
background: var(--color, green);
border-radius: 999px;
transition: transform ease-out .4s calc(var(--ink-load-time) + var(--delay));
}
.droplet:nth-last-child(1 of .droplet) {
height: 40vh;
}
body.filled .droplet:nth-last-child(1 of .droplet) {
transform: translateY(35vh);
transition-duration: .2s;
}
body.filled .droplet {
transform: translateY(70vh);
}
body:not(.filled) .droplet {
transition: none;
}
.bubble {
position: absolute;
width: var(--size);
height: var(--size);
left: 0;
top: 0;
translate: calc(var(--x) * calc(100vw - 100%)) calc(var(--y) * calc(100vh - 100%));
background-color: var(--color);
border-radius: 999px;
animation: float infinite alternate linear 7s var(--delay);
}
@keyframes float {
to {
transform: translateY(20px);
}
}
.intro {
position: absolute;
inset: 0;
display: grid;
place-content: center;
pointer-events: none;
}
.intro-content {
margin-top: 15vh;
padding: 1em;
font-size: 1.2rem;
backdrop-filter: blur(7px);
background: hsl(39 80% 58% / .5);
border-radius: 10px;
color: hsl(39 100% 8%);
animation: show .25s 3s backwards;
}
@keyframes show {
from {
visibility: hidden;
opacity: 0;
transform: scale(0);
}
}
.emoji {
color: transparent;
text-shadow: 0 0 0 hsl(39 100% 8%);
}
.no-support {
display: none;
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 1em 0.5em;
background: red;
font-size: 1.2rem;
font-weight: bold;
text-align: center;
}
</style>.........完整代码请登录后点击上方下载按钮下载查看
网友评论0