将svg文件放在该文件夹下面
在components文件夹中创建svgiconfont.vue文件
文件内容:
[removed]
import '@/icons'
export default {
name: 'svg-icon',
props: {
iconClass: {
type: String,
required: true
},
className: {
type: String
}
},
computed: {
iconName() {
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
console.log('svg-icon ' + this.className)
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
}
},
mounted: function() {
}
}
[removed]
style
.svg-icon {
width: 1em
height: 1em
vertical-align: -0.15em
fill: currentColor
overflow: hidden
}
创建index.js文件
文件内容如下:
import Vue from 'vue'
import svgiconfont from '@/components/svgiconfont'// svg组件
/*
require.context有三个参数:
directory:说明需要检索的目录
useSubdirectories:是否检索子目录
regExp: 匹配文件的正则表达式
*/
// 全局注册
Vue.component('svg-icon', svgiconfont)
const requireAll = requireContext =>requireContext.keys().map(requireContext)
const req = require.context('./svg', false, /\.svg$/)
requireAll(req)
在main.js引入icons文件夹下
即添加import ‘@/icons’
修改webpack.base.conf.js
添加代码:
{
test: /\.svg$/,
loader: "svg-sprite-loader",
include: [resolve("src/icons")],
options: {
symbolId: "icon-[name]"
}
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
exclude: [resolve("src/icons")],
options: {
limit: 50000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
}
使用方法
在页面中添加
SVG中所有基本形状都是path的简写形式,但是建议使用简写形式,因为这样可以使SVG文档更可读。
path元素更通用,可以通过制定一系列相互连接的线、弧、曲线来绘制任意形状的轮廓,这些轮廓也可以填充或者绘制轮廓线,也可以用来定义裁剪区域或蒙版。
下表为path命令总结,其中大写表示绝对坐标,小写表示相对坐标:
路径的填充同样可以使用fill-rule属性指定填充规则,如果需要填充一个中空的形状,则只需要注意外侧路径顺逆时针方向和内侧空心区域顺逆时针方向即可。
首先,使用 M 移动画笔到起点坐标(这里假设是 0,0 ),然后使用 L 画一条直线至终点坐标(这里假设是 100,100 )。
这里使用 C 来绘制一条三次贝塞尔曲线。
三次贝塞尔曲线的每个控制点都有两个控制点。 因此,要创建三次贝塞尔曲线,需要指定三组坐标。
这里的最后一组坐标(x,y)指定了线的结束位置。另外两个是控制点。(x1,y1)是曲线开始的控制点,(x2,y2)是曲线结束的控制点。控制点本质上描述了从每一点开始的直线的斜率。然后,贝塞尔函数创建了一条光滑的曲线,从建立的斜率在线的开始,到另一端的斜率。
示例中该条贝塞尔曲线计算公式为
marker元素用来在path上添加一个标记,比如箭头之类的。
首先需要定义好marker元素,然后在path中引用,一个marker标记是一个独立的图形,有自己的私有坐标。
首先,我们使用 marker 画一个箭头。设置orient为 auto ,使箭头的方向自动旋转匹配路径的方向。
然后,可以在连接线的 path 中使用 marker-start , marker-mid , marker-end , marker 属性来设置标记的位置。
这里,我们使用 marker-end 在线的结尾加上箭头。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)