실제 CSS3 애니메이션: 매우 멋진 끈적이는 버블 효과

青灯夜游
풀어 주다: 2022-07-07 20:42:26
앞으로
2409명이 탐색했습니다.

이 글에서는CSS3애니메이션에 대해 이야기하고 순수한 CSS를 사용하여 매우 멋진 끈적이는 거품 효과를 얻는 방법을 살펴보겠습니다. 이 글이 모든 사람에게 도움이 되기를 바랍니다.

실제 CSS3 애니메이션: 매우 멋진 끈적이는 버블 효과

최근 CodePen에서 다음과 같은 흥미로운 효과를 보았습니다.

이 효과의 핵심 난이도는 거품의 특별한 융합 효과에 있습니다. [추천 학습:css 비디오 튜토리얼]

소스 코드는CodePen Demo -- Goey footer에 있습니다. 저자는 이 효과를 얻기 위해 주로 SVG 필터를 사용합니다. 관심이 있다면 소스를 클릭하세요. 살펴보는 코드입니다.

그 중에서도 SVG에서feGaussianBlur필터를 유연하게 사용하려면 여전히 매우 강력한 SVG 지식 기반이 필요합니다. 그렇다면 CSS만으로 이 효과를 얻을 수 있을까요?feGaussianBlur滤镜还是需要有非常强大的 SVG 知识储备的。那么,仅仅使用 CSS 能否实现该效果呢?

嘿嘿,强大的 CSS 当然是可以的。本文,就将带领大家一步步使用纯 CSS,完成上述效果。

借助 SASS 完成大致效果

首先,如果上述效果没有气泡的融合效果,可能就仅仅是这样:

要制作这样一个效果还是比较简单的,只是代码会比较多,我们借助 SASS 预处理器即可。

假设我们有如下 HTML 结构:

로그인 후 복사
로그인 후 복사

核心要做的,仅仅是让 200 个.g-bubble从底部无规律的进行向上升起的动画。

这里,就需要运用一种技巧 --利用 animation-duration 和 animation-delay 构建随机效果

利用 animation-duration 和 animation-delay 构建随机效果

同一个动画,我们利用一定范围内随机的animation-duration和一定范围内随机的animation-delay,可以有效的构建更为随机的动画效果,让动画更加的自然。

我们来模拟一下,如果是使用 10 个animation-durationanimation-delay都一致的圆的话,核心伪代码:

로그인 후 복사
ul { display: flex; flex-wrap: nowrap; gap: 5px; } li { background: #000; animation: move 3s infinite 1s linear; } @keyframes move { 0% { transform: translate(0, 0); } 100% { transform: translate(0, -100px); } }
로그인 후 복사

这样,小球的运动会是这样的整齐划一:

要让小球的运动显得非常的随机,只需要让animation-durationanimation-delay都在一定范围内浮动即可,改造下 CSS:

@for $i from 1 to 11 { li:nth-child(#{$i}) { animation-duration: #{random(2000)/1000 + 2}s; animation-delay: #{random(1000)/1000 + 1}s; } }
로그인 후 복사

我们利用 SASS 的循环和random()函数,让animation-duration在 2-4 秒范围内随机,让animation-delay在 1-2 秒范围内随机,这样,我们就可以得到非常自然且不同的上升动画效果,基本不会出现重复的画面,很好的模拟了随机效果:

CodePen Demo -- 利用范围随机 animation-duration 和 animation-delay 实现随机动画效果

好,我们把上述介绍的技巧,套用到我们本文要实现的效果中去,HTML 结构再看一眼:

로그인 후 복사
로그인 후 복사

核心的 CSS 代码:

.g-footer { position: absolute; bottom: 0; left: 0; height: 86px; width: 100%; background: #26b4f5; } @for $i from 0 through 200 { .g-bubble:nth-child(#{$i}) { position: absolute; background: #26b4f5; $width: random(100) + px; left: #{(random(100)) + '%'}; top: #{(random(100))}px; width: $width; height: $width; animation: moveToTop #{(random(2500) + 1500) / 1000}s ease-in-out -#{random(5000)/1000}s infinite; } } @keyframes moveToTop { 90% { opacity: 1; } 100% { opacity: .08; transform: translate(-50%, -180px) scale(.3); } }
로그인 후 복사

这里:

  • 我们利用了 SASS 随机函数$width: random(100) + px;,随机生成不同大小的 div 圆形

  • 利用 SASS 随机函数left: #{(random(100)) + '%'}top: #{(random(100))}px基于父元素随机定位

  • 最为核心的是animation: moveToTop #{(random(2500) + 1500) / 1000}s ease-in-out -#{random(5000)/1000}s infinite

    안녕하세요, 강력한 CSS는 확실히 가능합니다. 이 기사에서는 순수 CSS를 사용하여 위의 효과를 달성하는 방법을 단계별로 안내합니다.
  • SASS를 사용하여 대략적인 효과 완성

우선 위의 효과가 거품의 융합 효과가 없다면 다음과 같을 수도 있습니다.

이렇게 만들려면 하나의 효과는 비교적 간단하지만 코드가 더 많아집니다. SASS 전처리기를 사용할 수 있습니다.

다음과 같은 HTML 구조가 있다고 가정해 보겠습니다.
.g-wrap { background: #fff; filter: contrast(8); } .g-footer { // ... 其他保持一致 filter: blur(5px); }
로그인 후 복사
로그인 후 복사
코어에서 해야 할 일은 바닥에서 불규칙하게 솟아오르는 200개의 .g-bubble을 애니메이션화하는 것뿐입니다. 여기서 애니메이션 지속 시간과 애니메이션 지연을 사용하여 무작위 효과를 구축하는 기술을 사용해야 합니다.

animation-duration 및 animation-delay를 사용하여 무작위 효과 구축

동일한 애니메이션에 대해 무작위 animation-duration과 특정 Random을 사용합니다. 범위 내의 animation-delay는 보다 무작위적인 애니메이션 효과를 효과적으로 구축하고 애니메이션을 더욱 자연스럽게 만들 수 있습니다. 동일한 animation-durationanimation-delay를 사용하여 10개의 원을 사용하면 핵심 의사 코드는 다음과 같습니다.
.g-footer { // ... filter: blur(5px); }
로그인 후 복사
로그인 후 복사
.g-footer { // ... 去掉 filter: blur(5px) &:before { content: ""; position: absolute; top: -300px; left: 0; right: 0; bottom: 0; z-index: 1; backdrop-filter: blur(5px); } }
로그인 후 복사
로그인 후 복사
이런 식으로 공은 스포츠 회의는 너무 획일적입니다. 공의 움직임이 무작위로 보이도록 하려면 animation-durationanimation-delay code>를 설정하세요. CSS를 변환합니다. rrreeeSASS 루프와 random()함수를 사용하여 animation-duration을 2에서 무작위로 만듭니다. 4초 범위에서 animation-delay를 1~2초 범위 내에서 무작위로 지정하면 매우 자연스럽고 다른 상승 애니메이션 효과를 얻을 수 있으며 기본적으로 반복이 발생하지 않습니다. 그림. 무작위 효과의 좋은 시뮬레이션: CodePen 데모 -- 범위 무작위 애니메이션 사용 - 지속 시간 및 애니메이션 지연으로 인해 임의의 애니메이션 효과를 얻을 수 있습니다. 좋습니다. 위에서 소개한 기술을 이 기사에서 달성하려는 효과에 적용해 보겠습니다. HTML 구조를 다시 살펴보겠습니다. rrreee핵심 CSS 코드: rrreee 여기 :

위 내용은 실제 CSS3 애니메이션: 매우 멋진 끈적이는 버블 효과의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!