uniapp 动态svg,有更好实现方式希望一起沟通,由于render.js特性只支持app-vue与h5
软件架构说明
通过import方式引入组件,如 import liSvgPhoto from '@/components/liUI/li-svg/photo.vue',然后注册:conponents: {liSvgPhoto}, 或使用esaycom规则自动引入,此方法不需要进行注册,仅需在page.json中添加规则, 如: "easycom": { "autoscan": true, //是否自动扫描组件 "custom": { //自定义扫描规则 "^li-svg-(.*)": "@/components/liUI/li-svg/$1.vue" } }
请在app.vue中引入animate.css动画库与svg.scss(所有svg的动画效果均在这个文件中) /*每个页面公共css */ @import 'animate.css'; @import 'svg.scss'; 4.由于组件位于视图层中,故一个组件一个页面仅能加载一次,请将他定义为一个全新的组件 5.自定义svg图标: 基础条件: 仅针对了解svg图标朋友,并且了解svg.js与animate.css。额,没办法,uniapp这玩意原本就不支持svg,很难受 原理:通过svg.vue中的initsvg函数创建svg并设置雷鸣,通过传入的show控制action属性,(/svg.scss中)通过id.action选择器分别两种状态的效果 目前一个组件分为两部分构成,1.svg组件相关的vue文件 2.svg.scss中定义的效果。所学较浅暂时还没有发现更好的方法。
svg.vue部分:建议直接copy一份原有的svg组件代码,在其基础上进行修改,主要需要修改的有两个地方: 1.第二行的id,由于render.js这种加载方式的缺陷。请保证他的唯一
性。2.initsvg函数,函数内部使用svg.js动态创建svg图标,并对他添加相关的属性与类名。
svg.scss部分: 文件位于根目录,主要是通过svg的id与在initsvg中对每个path等元素创建的class,分别控制两种不同状态的显示效果。
注意事项: 请保证id的唯一性,不然会有问题
本项目基于animate.css svg.js scss render.js构建
兼容性与性能: 仅支持app-vue, h5,不支持小程序。性能: 写了20个一样的组件进行渲染没有发现卡顿问题。
组件说明: 所有组件仅接收两个属性: show: 控制活动与非活动,数值类型: Boolean, size: 图标的大小,例: 1.auto: 自适应 2. 20(单位为px)
引用说明: 推荐使用esaycom规则,
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。