webpack中如何使用雪碧图的示例代码-创新互联
一、什么是雪碧图?

CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。
二:为什么要用雪碧图
结合我们公司的需求来说,因为有很多组件,每个组件下有大概50张图片,每张图片是一个请求,也就是发了300多个请求,这样是很可怕的,所以为了优化性能,减少http请求,决定采用雪碧图的形式。
雪碧图是将你想要的很多张图片整理成一张图片,然后通过background-*来进行图片识别和定位来达到之前的效果。
三:如何使用雪碧图
雪碧图在之前有很多方式,如ps之类,现在最佳的方案还是在webpack-spritesmith。
我其实对webpack并不是很了解,我现在列出使用方法和我在使用webpack时候遇到的问题。
1.安装
执行命令行:npm install --save-dev webpack-spritesmith
2.在webpack.config.js中写入
var path = require('path')
var SpritesmithPlugin = require('webpack-spritesmith')
//自定义样式
var templateFunction = function (data) {
var shared = '.ico { background-size: TWpx THpx }'
.replace('TW', data.sprites[0].total_width / 2)
.replace('TH', data.sprites[0].total_height / 2)
var perSprite = data.sprites.map(function (sprite) {
return '&.element-N {\n width: Wpx;\n height: Hpx;\n background-position: Xpx Ypx;\n}'
.replace('N', sprite.name)
.replace('W', sprite.width / 2)
.replace('H', sprite.height / 2)
.replace('X', sprite.offset_x / 2)
.replace('Y', sprite.offset_y / 2)
.replace('TW', sprite.total_width / 2)
.replace('TH', sprite.total_height / 2)
}).join('\n')
return shared + '\n' + perSprite
}
module.exports = {
...
module: {
rules: [
{test: /\.styl$/, use: [
'style-loader',
'css-loader',
'stylus-loader'
]},
{test: /\.png$/, use: [
'file-loader?name=i/[hash].[ext]'
]}
]
},
resolve: {
modules: ['node_modules', 'spritesmith-generated']
},
plugins: [
new SpritesmithPlugin({
src: { //引入路径
cwd: path.resolve(__dirname, 'src/images/ios/'),
glob: '*.png'
},
target: { //输出路径
image: path.resolve(__dirname, 'src/spritesmith-generated/ios.png'),
css: [
[path.resolve(__dirname, 'src/spritesmith-generated/sprite-1.css'), {
format: 'function_based_template'
}],
[path.resolve(__dirname, 'src/spritesmith-generated/sprite-2.css'), {
format: 'handlebars_based_template'
}]
]
},
customTemplates: {
'function_based_template': templateFunction, //自定义输出什么样的css样式
},
apiOptions: {
cssImageRef: 'ios.png'
}
})
]
}
分享文章:webpack中如何使用雪碧图的示例代码-创新互联
标题路径:http://www.jxjierui.cn/article/dppsjg.html


咨询
建站咨询
