icon小图标
调用icon小图标的方式是通过mixin方式进行调用的
@mixin Ricon($width, $height, $url, $important: '') {
@include background(#{$baseURL}#{$url}.png, $important);
display: inline-block;
width: $width;
height: $height;
background-size: 100% auto;
background-position: center center;
}
@mixin background($url: '', $important: '') {
@if $url !='' {
@if ($important !='') {
background-image: url($url) !important;
}
@else {
background-image: url($url);
}
}
background-repeat: no-repeat;
background-size: 100% auto;
}
考虑到改造成本以及雪碧图的接入成本,解决方案是在构建过程中接入了webpack-spritesmith,优点是
- 构建过程中可根据指定目录自动生成及更新雪碧图与scss文件
- 自动生成的scss文件模版允许自定义化
- 无需手动引入生成的scss文件,可在webpack配置中配置自动引入
构建配置如下:
// 配置代码
new SpritesmithPlugin({
src: {
// icon小图标目录
cwd: './src/like/act_30083/assets/img/icon/',
// 合成图片格式
glob: '*.png'
},
target: {
// 合成雪碧图本地文件地址
image: path.resolve(__dirname, './assets/img/sprite-ignore.png'),
css: [
[
// 生成雪碧图样式文件地址
path.resolve(__dirname, './styles/mixins/_sprite-ignore.scss'),
{
// scss文件模板
format: 'function_based_template'
}
]
]
},
customTemplates: {
// 自定义模板
'function_based_template': templateFunction,
},
apiOptions: {
// 雪碧图引用地址
cssImageRef: '~@assets/img/sprite-ignore.png',
},
spritesmithOptions: {
// 合成规则
algorithm: 'binary-tree',
// icon之间的距离
padding: 10,
}
});