<template> <!-- #ifdef APP-NVUE --> <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text> <!-- #endif --> <!-- #ifndef APP-NVUE --> <text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text> <!-- #endif --> </template> <script> import icons from './icons.js'; const getVal = (val) => { const reg = /^[0-9]*$/g return (typeof val === 'number' || reg.test(val) )? val + 'px' : val; } // #ifdef APP-NVUE var domModule = weex.requireModule('dom'); import iconUrl from './uniicons.ttf' domModule.addRule('fontFace', { 'fontFamily': "uniicons", 'src': "url('"+iconUrl+"')" }); // #endif /** * Icons 图标 * @description 用于展示 icons 图标 * @tutorial https://ext.dcloud.net.cn/plugin?id=28 * @property {Number} size 图标大小 * @property {String} type 图标图案,参考示例 * @property {String} color 图标颜色 * @property {String} customPrefix 自定义图标 * @event {Function} click 点击 Icon 触发事件 */ export default { name: 'UniIcons', emits:['click'], props: { type: { type: String, default: '' }, color: { type: String, default: '#333333' }, size: { type: [Number, String], default: 16 }, customPrefix:{ type: String, default: '' } }, data() { return { icons: icons.glyphs } }, computed:{ unicode(){ let code = this.icons.find(v=>v.font_class === this.type) if(code){ return unescape(`%u${code.unicode}`) } return '' }, iconSize(){ return getVal(this.size) } }, methods: { _onClick() { this.$emit('click') } } } </script> <style lang="scss"> /* #ifndef APP-NVUE */ @import './uniicons.css'; @font-face { font-family: uniicons; src: url('./uniicons.ttf') format('truetype'); } /* #endif */ .uni-icons { font-family: uniicons; text-decoration: none; text-align: center; } </style>