UNPKG

3.41 kBMarkdownView Raw
1# csssprite图片合并
2
3## 使用说明
4
5### 默认单位为px
6非常简单,只需要在css文件中对要合并的图片路径增加?__sprite后缀即可,比如
7``` css
8.csssprite .abtest_huafei s {
9 background:url(i/icon_01.png?__sprite) no-repeat;
10}
11.csssprite .abtest_lvxing s {
12 background:url(i/icon_03.png?__sprite) no-repeat 6px 0px;
13}
14.csssprite .abtest_caipiao s {
15 background:url(i/icon_05.png?__sprite) no-repeat 5px 0px;
16}
17```
18
19执行jdf output,后台会进行css sprite编译操作后
20``` css
21.csssprite .abtest_huafei s {
22 background:url(i/csssprite.png) no-repeat;
23 background-position:0 0
24}
25.csssprite .abtest_lvxing s {
26 background:url(i/csssprite.png) no-repeat 6px 0;
27 background-position:6px -39px
28}
29.csssprite .abtest_caipiao s {
30 background:url(i/csssprite.png) no-repeat 5px 0;
31 background-position:5px -78px
32}
33```
34其中`icon_01.png``icon_03.png``icon_05.png`小图片被合成为`csssprite.png`,其中csssprite为当前css文件的文件名
35
36### 当css单位为rem时
37
38在background中写上px到rem的转换比例
39``` css
40html {
41 font-size: 20px;
42}
43.icon1, .icon2{
44 width: 1.8rem;
45 height: 1.8rem;
46 margin: 10px;
47 background: url(i/icon7.png?__sprite__rem20) no-repeat;
48 border: 1px solid black;
49}
50.icon2{
51 background: url(i/icon8.png?__sprite__rem20) no-repeat;
52}
53```
54转换之后:
55```css
56html {
57 font-size: 20px
58}
59.icon1, .icon2 {
60 width: 1.8rem;
61 height: 1.8rem;
62 margin: 10px;
63 background: url(/i/w2.png) no-repeat;
64 background-position: 0 0;
65 background-size: 1.8rem 4.6rem;
66 border: 1px solid #000
67}
68.icon2 {
69 background: url(i/w2.png) no-repeat;
70 background-position: 0 -2.3rem;
71 background-size: 1.8rem 4.6rem
72}
73```
74
75## 切图说明
76把psd中图片所有icon类小图切换,在css中设置好background-position,在相对应图片后面增加?__sprite后缀
77
78## 配置说明
79* 默认为开启状态,可以通过config.json的output.csssprite键值设置为false进行关闭
80* 图片之间上下间距,可以通过config.json的output.cssspriteMargin键值设置
81* 合并文件,通过config.json的outout.cssSpriteMode 0|1 设置把整个项目的雪碧图合并到一起,还是以widget为单位合并到一起,默认是1。
82
83## 特性说明
84* 支持的图片格式:png,jpg,png输出png24格式,IE6的png24图片需要单独处理
85* 支持no-repeat,background-position可自由设置
86* 后续支持repeat-x,repeat-y
87
88## 原理解析
89* 分析css文件内容,取出带有?__sprite的图片路径,同时对此background的backgroud-repeat、background-position进行记录
90* 取出所有图片,依靠backgroud-repeat、background-position进行图片合并,并生成合并的新图片
91* 把css文件所有sprite图片路径替换成合并的新图片路径
92
93## 解析css
94* 利用正则实现一个简单的css语法解析器,可把css内容解析为
95
96<table>
97 <tr><td>属性</td> <td>值</td> <td>说明</td> </tr>
98 <tr><td>content</td> <td>图片内容</td> <td></td> </tr>
99 <tr><td>url</td> <td>如:i/icon.png</td> <td>图片url</td> </tr>
100 <tr><td>item</td> <td>如:background: url(i/icon.png?__sprite) no-repeat</td> <td>图片background</td> </tr>
101 <tr><td>repeat</td> <td>null | repeat-x | repeat-y</td> <td>重复</td> </tr>
102 <tr><td>width</td> <td>number</td> <td>图片的宽度</td> </tr>
103 <tr><td>height</td> <td>number</td> <td>图片的高度</td> </tr>
104</table>