楼主: 云端漫步

【漫步特效】古巷/CSS萤火虫,雨,变色动画

[复制链接]
发表于 昨天 19:50 | 显示全部楼层
变色特效好看,标题文字排版漂亮
发表于 昨天 19:51 | 显示全部楼层
欣赏学习,问好漫步老师,晚上好
 楼主| 发表于 昨天 19:57 | 显示全部楼层
念若莲 发表于 2026-7-23 19:51
欣赏学习,问好漫步老师,晚上好

问好若莲 ,谢谢临帖支持。让我们同享音画的乐趣!
发表于 昨天 20:13 | 显示全部楼层
这图,咋还抠出影子了,也太认真形象了,给认真的漫步同学一个大大的赞
发表于 昨天 20:15 | 显示全部楼层
我这刚出差回来,就给我放个素,是让我完成作业的意思吗?哈哈
那我高低得试试手
发表于 昨天 20:17 | 显示全部楼层
技法越发的娴熟了,让人看了不得不称奇,无论是排版还是特效都用的活灵活现,
 楼主| 发表于 昨天 20:49 | 显示全部楼层
素心 发表于 2026-7-23 20:13
这图,咋还抠出影子了,也太认真形象了,给认真的漫步同学一个大大的赞

素心 同学好,这影子复制一个人物向右斜侧,向右斜侧人物在选区(s)再载入选区(o)后,再在选区(s)拉下来俢改(m)羽化2,然后右斜侧人物下层建一层填入黑色,降低透明度。
 楼主| 发表于 昨天 20:57 | 显示全部楼层
素心 发表于 2026-7-23 20:15
我这刚出差回来,就给我放个素,是让我完成作业的意思吗?哈哈
那我高低得试试手 ...


你如偷懒做放三張也可以。
  1. <style>
  2. #mydiv {
  3.     margin: 30px 0 30px calc(50% - 931px);
  4.     display: grid;
  5.     place-items: center;
  6.     width: 1700px;
  7.     height: 900px;
  8.     box-shadow: 3px 3px 20px #000;
  9.     user-select: none;
  10.     overflow: hidden;
  11.     position: relative;
  12.     z-index: 1;  
  13. }
  14. .firefly {
  15.     position: absolute;
  16.     width: 3px;
  17.     height: 3px;
  18.     background-color: #7FFF00;
  19.     border-radius: 50%;
  20.     box-shadow: 0 0 8px 2px rgba(127, 255, 0, 0.8);
  21.     opacity: 0;
  22.     z-index: 3;
  23.     animation: glow 2s infinite alternate;
  24. }
  25. @keyframes glow {
  26.     0% {
  27.         opacity: 0.3;
  28.         box-shadow: 0 0 4px 1px rgba(127, 255, 0, 0.5);
  29.     }
  30.     50% {
  31.         opacity: 1;
  32.         box-shadow: 0 0 10px 3px rgba(127, 255, 0, 0.9);
  33.     }
  34.     100% {
  35.         opacity: 0.4;
  36.         box-shadow: 0 0 6px 2px rgba(127, 255, 0, 0.6);
  37.     }
  38. }
  39. .bg-slide {
  40.     position: absolute;
  41.     top: 0;
  42.     left: 0;
  43.     width: 100%;
  44.     height: 100%;
  45.     background-repeat: no-repeat;
  46.     background-position: center;
  47.     background-size: cover;
  48.     opacity: 0;
  49.     animation: fadeLoop 24.6s infinite;
  50.     z-index: 0;
  51. }
  52. .bg-slide1 { background-image: url('https://644220.freep.cn/644220/3/ss1.jpg'); animation-delay: 0s; }
  53. .bg-slide2 { background-image: url('https://644220.freep.cn/644220/3/ss2.jpg'); animation-delay: -3.8s; }
  54. .bg-slide3 { background-image: url('https://644220.freep.cn/644220/3/ss3.jpg'); animation-delay: -7.6s; }
  55. .bg-slide4 { background-image: url('https://644220.freep.cn/644220/3/ss4.jpg'); animation-delay: -11.4s; }
  56. .bg-slide5 { background-image: url('https://644220.freep.cn/644220/3/ss5.jpg'); animation-delay: -15.2s; }
  57. .bg-slide6 { background-image: url('https://644220.freep.cn/644220/3/ss6.jpg'); animation-delay: -19s; }
  58. .bg-slide7 { background-image: url('https://644220.freep.cn/644220/3/ss7.jpg'); animation-delay: -22.8s; }
  59. @keyframes fadeLoop {
  60.     0% { opacity: 0; }
  61.     10% { opacity: 1; }
  62.     21% { opacity: 1; }
  63.     33% { opacity: 0; }
  64.     44% { opacity: 0; }
  65. }
  66. #vid {
  67.     position: absolute;
  68.     width: 100%;
  69.     height: 100%;
  70.     object-fit: cover;
  71.     pointer-events: none;
  72.     mix-blend-mode: screen;
  73.     mask: linear-gradient(to top right, red 88%, transparent 0);   
  74.     -webkit-mask: linear-gradient(to top right, red 88%, transparent 0);   
  75.     z-index: 3;
  76.     opacity: .35;
  77. }
  78. </style>
  79.   <div id="mydiv">
  80.     <div class="bg-slide bg-slide1"></div>
  81.     <div class="bg-slide bg-slide2"></div>
  82.     <div class="bg-slide bg-slide3"></div>
  83.     <div class="bg-slide bg-slide4"></div>
  84.     <div class="bg-slide bg-slide5"></div>
  85.     <div class="bg-slide bg-slide6"></div>
  86.     <div class="bg-slide bg-slide7"></div>
  87.     <video id="vid" src="https://img2.tukuppt.com/video_show/15653652/00/85/70/60ff9073b3198.mp4" autoplay="" loop="" muted=""></video>
  88.     <audio id="aud" src="https://mp3.joy127.com/music/12911.mp3" autoplay loop>
  89. </div>
  90. <script>
  91. function createFireflies(count) {
  92.     const container = document.getElementById('mydiv');
  93.     const containerWidth = container.offsetWidth;
  94.     const containerHeight = container.offsetHeight;
  95.         for (let i = 0; i < count; i++) {
  96.         const firefly = document.createElement('div');
  97.         firefly.classList.add('firefly');
  98.         container.appendChild(firefly);
  99.         const startX = Math.random() * containerWidth;
  100.         const startY = Math.random() * containerHeight;
  101.         firefly.style.left = `${startX}px`;
  102.         firefly.style.top = `${startY}px`;
  103.         const size = 1 + Math.random() * 3;
  104.         firefly.style.width = `${size}px`;
  105.         firefly.style.height = `${size}px`;
  106.         const delay = Math.random() * 5;
  107.         firefly.style.animationDelay = `${delay}s`;
  108.         const fireflyData = {
  109.             x: startX,
  110.             y: startY,
  111.             direction: Math.random() * Math.PI * 2,
  112.             speed: 0.5 + Math.random() * 2,
  113.             swing: 0.02 + Math.random() * 0.05,
  114.             swingPhase: Math.random() * Math.PI * 2,
  115.             changeInterval: 3000 + Math.random() * 5000,
  116.             lastChange: Date.now()
  117.         };
  118.         animateFirefly(firefly, fireflyData, containerWidth, containerHeight);
  119.     }
  120. }
  121. function animateFirefly(firefly, data, maxWidth, maxHeight) {
  122.     const now = Date.now();
  123.     const deltaTime = (now - data.lastTime) || 16;
  124.     data.lastTime = now;
  125.     if (now - data.lastChange > data.changeInterval) {
  126.         data.direction += (Math.random() - 0.5) * Math.PI;
  127.         data.lastChange = now;
  128.         data.changeInterval = 3000 + Math.random() * 5000;
  129.     }
  130.     data.swingPhase += data.swing;
  131.     const swingOffset = Math.sin(data.swingPhase) * 0.5;
  132.     const currentDirection = data.direction + swingOffset;
  133.     data.x += Math.cos(currentDirection) * data.speed * (deltaTime / 16);
  134.     data.y += Math.sin(currentDirection) * data.speed * (deltaTime / 16);
  135.     if (data.x < 0) data.x = maxWidth;
  136.     if (data.x > maxWidth) data.x = 0;
  137.     if (data.y < 0) data.y = maxHeight;
  138.     if (data.y > maxHeight) data.y = 0;
  139.     firefly.style.left = `${data.x}px`;
  140.     firefly.style.top = `${data.y}px`;
  141.     requestAnimationFrame(() => {
  142.         animateFirefly(firefly, data, maxWidth, maxHeight);
  143.     });
  144. }
  145. createFireflies(150);
  146. </script>
复制代码
发表于 昨天 21:16 | 显示全部楼层
漫步老师这个图图漂亮,扣图干净,女子、红伞与古巷搭配和谐
冷暖渐变变色、萤火点缀烘托出朦胧怀旧的烟雨意境~
排版大气,诗文和文案排布妥当,背景朗诵配的很有味道~

评分

1

查看全部评分

发表于 昨天 21:17 | 显示全部楼层
漫步老师制作辛苦了,上茶~~
您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

小黑屋|苏ICP备16043306号-1

GMT+8, 2026-7-24 06:37 , Processed in 0.035831 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表