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

2019-12-25  本文已影响0人  温柔的码农

微信图文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"/>

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

上一篇下一篇

猜你喜欢

热点阅读