当前位置: 首页 > news >正文

SVG交融效果

B站视频链接

【交融动画效果【渡一教育】】https://www.bilibili.com/video/BV1JxbZzXEbV?vd_source=f1bd3b5218c30adf0a002c8c937e0a27

【JS动画 | 随机大小冒泡动画特效 【一起学前端】】https://www.bilibili.com/video/BV154411a74A?vd_source=f1bd3b5218c30adf0a002c8c937e0a27

代码

详见:

https://codepen.io/lsswear-the-styleful/pen/EaVweyj

https://codepen.io/lsswear-the-styleful/pen/empGLvO

解析

冒泡效果

//获取随机整数
function getRandomInt(min, max) {min = Math.ceil(min);max = Math.floor(max);return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值
}//新建元素方法
function addbubble(){//新建元素const maxwh =100;const minwh =50;var div = document.getElementById("bubbles_div");const maxtwidth = div.offsetWidth;const mintwidth = 0;var e = document.createElement("div");e.classList.add('bubble');//改变css样式  let wh =getRandomInt(minwh,maxwh);e.style.width = wh+"px";e.style.height = wh+"px";let twidht = getRandomInt(mintwidth,maxtwidth)+"px"e.style.transform ="translate("+twidht+",0)"// e.style.animation="up 3s ease"//加入父节点div.appendChild(e);    
}//定时添加元素   
setInterval(addbubble,10) 
/*父节点样式*/
.bubbles{wdith:100%;height:100%;position:relative;/*设置SVG滤镜*/filter:url(#blob);
}/*冒泡元素样式*/
.bubble{background:#123456;border-radius:1000px;width:50px;height:50px;position:absolute;bottom:0;/*设置元素动画*/animation:up 3s ease;transform:translate(10px,0);opacity:0;
}//动画
@keyframes up{ /*动画开始样式*/from{bottom:0px;opacity:1;}/*动画结束样式*/to{bottom:160%;width:0px;height:0px;opacity:1;}
}

其中父节点bubbles 和子节点bubble是浮动关系。

父节点设置position:relative,子节点设置position:absolute,意思为子节点相对于父节点浮动,设置top等都是相对于父节点。

translate用于在2D或3D空间中移动元素位置,支持X、Y、Z轴平移,translate(10px,0)即为水平移动10px,之后做冒泡效果动态设置水平移动距离。

动画中bottom:160%决定动画结束的高度,from中若设置width或height,则所有动画元素开始的宽高都相同,js中设置的宽高则无效。所以在from中未设置宽高。

冒泡效果中,一个冒泡是通过css动画实现,多个冒泡是通过js动态设置css属性实现。

交融效果

<svg ><defs><filter id="blob"><feGaussianBlurin="SourceGraphic"stdDeviation="5"result="blur"></feGaussianBlur><feColorMatrixin="blur"type="matrix"values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 50 -40">  </feColorMatrix></filter></defs>
</svg>

SVG参考:SVG | MDN

SVG filter:SVG filters - SVG | MDN

<feGaussianBlur> SVG通过stdDeviation中指定的量模糊输入图像。

  • in 输入,SourceGraphic代表原图像。
  • stdDeviation  定义模糊操作的标准偏差
  • edgeMode 决定如何根据需要使用颜色值扩展输入图像
  • result 输出标志

<feColorMatrix> SVG过滤器元素根据转换矩阵更改颜色。

每个像素的颜色值[R,G,B,A]是矩阵乘以一个5 × 5的颜色矩阵来创建新的颜色[R‘,G’,B‘,A’]。

  • in  值包括SourceGraphic, SourceAlpha, backgrounimage, backgrounalpha, FillPaint, StrokePaint,或对另一个过滤器原语的引用。
  • type  值包括matrix, saturation, hueRotate和luminanceToAlpha。
  • values  type属性中设置的矩阵类型的值。

*注意

b站讲交融的视频,有一段是<svg style="dispaly:none"> 这样写是错误的。

若这样写svg的效果在页面中不体现。

    http://www.dtcms.com/a/326905.html

    相关文章:

  1. Fluent Bit 日志合并正则表达式(下)
  2. 【Flowable】核心概念、核心表字段、关联关系以及生命周期
  3. python3.10.6+flask+sqlite开发一个越南留学中国网站的流程与文件组织结构说明
  4. GM3568JHF快速入门教程【二】FPGA+ARM异构开发板环境编译教程
  5. 嵌入式硬件——ARM
  6. Apache虚拟主机三种配置实战
  7. 为什么灰度图用G(绿色)通道?
  8. Gradient Descent for Logistic Regression|逻辑回归梯度下降
  9. 物理服务器内存容量选择:大数据分析场景下的适配指南
  10. 互连的带宽
  11. 终端安全检测和防御技术
  12. 2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
  13. Flutter path_provider的基本使用(读写文件)
  14. Android12 Framework电话功能UI定制
  15. Mac M1探索AnythingLLM+Ollama+知识库问答
  16. Vue.js 样式绑定
  17. 【Node.js从 0 到 1:入门实战与项目驱动】2.1 安装 Node.js 与 npm(Windows/macOS/Linux 系统的安装步骤)
  18. 派聪明RAG知识库----关于elasticsearch报错,重置密码的解决方案
  19. node.js简介
  20. 【论文阅读】RestorerID: Towards Tuning-Free Face Restoration with ID Preservation
  21. ARM芯片架构之CoreSight SoC-400 组件介绍
  22. 高效解耦:自定义内核链表实现指南(简化版)
  23. LLM智能:从语言模型到通用智能体的技术跃迁
  24. Java多线程基础总结
  25. Python类装饰器:优雅解决描述符属性命名难题
  26. 内存作假常见方案可行性分析
  27. 【15-多类别分类和多标签分类】
  28. SSE流式输出分层与解耦、用户自动结束语错误处理
  29. 基于FPGA的热电偶测温数据采集系统,替代NI的产品(一)FPGA 测温研究现状
  30. 【Python修仙编程】(20) 参悟参数真谛,林羽内力大增