这是一个水塔的svg,需求:
水面跟随进度上升下降
进度低于20时变红色,其余进度变绿色
整体尺寸不是固定的,跟随父布局大小
思路1:目前我的思路是根据进度,切10张水塔图,根据进度动态显示。但这增加包体积,感觉也有点粗暴。
思路2:用两张图上下放置,上面的水塔用clip-path根据进度切,但好像只能且固定大小,因为svg的path好像是固定的
目前没有更好的解决思路,各位大佬怎么看?
这是一个水塔的svg,需求:
水面跟随进度上升下降
进度低于20时变红色,其余进度变绿色
整体尺寸不是固定的,跟随父布局大小
思路1:目前我的思路是根据进度,切10张水塔图,根据进度动态显示。但这增加包体积,感觉也有点粗暴。
思路2:用两张图上下放置,上面的水塔用clip-path根据进度切,但好像只能且固定大小,因为svg的path好像是固定的
目前没有更好的解决思路,各位大佬怎么看?
既然已经用 svg 了,那么就直接用 svg 来画一个整体的水塔,中间部分用 js 控制高度变化作为进度条就好了。
或者简单一点,同遮罩的形式,或者把中间那部分镂空,用一个 png 图,盖在一个矩形的渐变图上面,这样就可以直接通过控制矩形的高度就好了。
简单的类似的 demo,可以参考这个:http://lab.tianyizone.com/demo/ecg/
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
5 回答1.3k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
感谢大家的解答,忘了说是小程序,小程序中稍微麻烦些,需要读取svg文件(需要用binary方式读取,不然iOS不显示),然后查找替换高度和颜色部位的值,再转为base64加载到image标签中。其实如果在web端,直接用变量控制即可。svg代码见文末。
大致效果:
动态高度的关键在于,查找并修改“蒙版”的高度,即下面的height="104",通过js控制变量即可实现动态高度。
至于修改颜色,查找fill="#06CB60",然后改成需要的颜色。
水塔svg代码。