微信图文SVG交互 圣诞雪花效果

微信图文SVG交互 圣诞雪花效果

加拿大航空AirCanada 圣诞惊喜 |机票大奖,感恩有你

原理

交互放在 svg 图里, 给 svg 图加 png 背景图片, 保持 png 尺寸与 svg 图 viewBox 尺寸一致.

画雪花

微信图文里元素不能用 id, 在 defs 里定义的雪花与渐变无效, 只能用 circle 一个套一个套实现渐变的效果, 用不同大小与数量的 circle 实现雪花大小.

<g transform="translate(30 -10)">
    <animateTransform attributeName="transform" type="translate" from="30 -10" to="30 6000" begin="+0s" dur="30s" repeatCount="indefinite"/>
    <circle cx="0" cy="0" r="6" fill="rgba(255,255,255,.7)"/>
    <circle cx="0" cy="0" r="7" fill="rgba(255,255,255,.6)"/>
    <circle cx="0" cy="0" r="8" fill="rgba(255,255,255,.5)"/>
    <circle cx="0" cy="0" r="9" fill="rgba(255,255,255,.4)"/>
    <circle cx="0" cy="0" r="10" fill="rgba(255,255,255,.3)"/>
    <circle cx="0" cy="0" r="11" fill="rgba(255,255,255,.2)"/>
    <circle cx="0" cy="0" r="12" fill="rgba(255,255,255,.1)"/>
  </g>

雪花掉落动画

<animateTransform attributeName="transform" type="translate" from="30 -10" to="30 6000" begin="+0s" dur="30s" repeatCount="indefinite"/>
  • 所有雪花从画板(svg 图)顶外部位置向下用 from to 向下缓慢移动到画面下外部.
  • 其中用 repeatCount="indefinite" 使循环播放.
  • durbegin 控制雪花掉落开始时间与时长.
  • 然后就是复制, 粘贴, 调整雪花 x 轴位置与掉落开始时间与时长, 还有大小.

为防止后期老修改背景图长度, 让动画 to 的 y 轴离图底远远地, 如此图高 5200, 雪花掉到 6000. 5200 是之前从 5000 修改来的. 万一他们加元素导致 底图到了 5800 高, 那 6000 的结束位置还是可以不修改的. 万一高于 6000 了, 唉, 那只能选择 6000" begin=" 全局替换了. 所以一定要写整齐, 不然不好全局正则替换.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 当 JavaScript 被 Netscape 公司发明出来时,它被用来做一些琐细的事情,比如校验表单、计算...
    locky丶阅读 2,251评论 0 5
  • SVG开篇 SVG是可缩放的矢量图,在计算机中有两种图形,一种是位图,一种是矢量图 位图传统的jpg / png ...
    七分之二十四阅读 442评论 0 0
  • 一、什么是SVG? SVG指可伸缩矢量图形(Scalable Vector Graphics); SVG用来定义用...
    清心挽风阅读 1,431评论 1 3
  • 作者: 阮一峰www.ruanyifeng.com/blog/2018/08/svg.html 一、概述 SVG ...
    grain先森阅读 2,893评论 0 12
  • 下班后去买水果,我所在的这个地方明明是在市区,附近却没有一家像样的水果超市。所以来到附近一个小区的后门,那里有一条...
    幽狂影乱阅读 540评论 0 4