雪碧图处理
QMUI 中集成了基于 postcss-lazysprite 和 postcss-svg-sprite 的雪碧图自动处理,使用时只需要在 UI_dev/project/images 中建立一个图片文件夹,把需要的图片放入,QMUI 会按规则生成所有的 CSS 以及雪碧图文件。以本 Demo 中使用到的雪碧图为例,创建时需要如下步骤:
在 UI_dev/project/images 中建立 icons 和 svgIcon 目录,分别放置所需的普通图片和 SVG 图片。
在样式文件需要输出雪碧图 CSS 的地方添加如下代码:
@lazysprite "icons#icon"; /* 普通图片 */
@svgsprite "svgIcon"; /* SVG 图片 */
执行编译后会输出如下样式:
/* 普通图片输出 */
.dm_icon{
display: inline-block;
overflow: hidden;
font-size: 0;
line-height: 0;
}
.dm_icon_BannerLogo {
background-image: url(../images/icons.7fc7e2bab2.png);
background-position: 0 0;
width: 160px;
height: 160px;
}
.dm_icon_BannerMobileLogo {
...
}
/* SVG 图片输出 */
.dm_svgIcon {
background: url("../images/svgIcon.svg") left top no-repeat;
display: inline-block;
overflow: hidden;
font-size: 0;
line-height: 0;
vertical-align: top;
}
.dm_svgIcon_AppExmail {
width: 40px;
height: 40px;
background-position: -128px -122px;
}
.dm_svgIcon_AppPermissionWorknote {
...
}
使用 icon 只需在 HTML 中使用对应的 class:
- 可以看出输出的 Class-name 由项目前缀 + 目录名 + 图片名组成。
- “icons#icon” 中的 icon 表示目录名缩写,设置了该目录名缩写则输出的 class 中使用该缩写,不设置则默认使用目录名。
- 普通图片多倍图处理只需要在 icons 目录中加入文件名带 "_2x/@2x",“_3x/@3x” 这类后缀的多倍图文件即可,框架也会自动输出对应的样式以及雪碧图文件。
- 如需定制雪碧图功能,可以分别查看 postcss-lazysprite 的 options 和 postcss-svg-sprite 的 options,根据需要自行调整 QMUI 的相关源码。
- 完整的雪碧图效果展示页面请浏览 Sprite Demo。