针对移动端的前端工作流(10)—雪碧图

有这个需求

雪碧图是为了减少请求数,嗯,就这样。

雪碧图的实现

src/img目录下有一个文件夹是sprite,放在这里的图片会生成一张雪碧图

开启gulp命令后,会实时监控sprite文件夹的变化,如果有变化,就会生成

  1. sprite.png,放在src/img目录下。

  2. 对应的sprite.scss,放在src/scss/sprite/下。

那么该如何使用呢?

举个例子

现在在sprite目录下有六张图片, 嗯,就是这奇怪的六张图,知道它在描述什么吗?哦,不重要……

sprite前

执行gulp的命令的时候,就会根据六张图片,生成一个sprite.pngsrc/img目录下

sprite后

同时生成对应的sprite.scss,放在src/scss/sprite/下,这是sprite.scss

  1. /*
  2. SCSS variables are information about icon's compiled state, stored under its original file name
  3. .icon-home {
  4. width: $icon-home-width;
  5. }
  6. The large array-like variables contain all information about a single icon
  7. $icon-home: x y offset_x offset_y width height total_width total_height image_path;
  8. At the bottom of this section, we provide information about the spritesheet itself
  9. $spritesheet: width height image $spritesheet-sprites;
  10. */
  11. @mixin sprite-pic1 {
  12. background-position: -119px 0px;
  13. }
  14. @mixin sprite-pic2 {
  15. background-position: 0px 0px;
  16. }
  17. @mixin sprite-pic3 {
  18. background-position: -101px -102px;
  19. }
  20. @mixin sprite-pic4 {
  21. background-position: -220px 0px;
  22. }
  23. @mixin sprite-pic5 {
  24. background-position: 0px -102px;
  25. }
  26. @mixin sprite-pic6 {
  27. background-position: -220px -90px;
  28. }
  29. .sprite {
  30. background-image: url('../img/sprite.png');
  31. background-repeat: no-repeat;
  32. background-size: 303px 183px;
  33. }

如何使用sprite.scss呢?

html文件:

  1. <ul class="sprite-list">
  2. <li class="sprite sprite-item1"></li>
  3. <li class="sprite sprite-item2"></li>
  4. <li class="sprite sprite-item3"></li>
  5. <li class="sprite sprite-item4"></li>
  6. <li class="sprite sprite-item5"></li>
  7. <li class="sprite sprite-item6"></li>
  8. </ul>

index.scss文件中引入sprite.scss

  1. @import "sprite/_sprite";
  2. .sprite {
  3. width: 100px;
  4. height: 80px;
  5. float: left;
  6. margin-top: 20px;
  7. margin-bottom: 20px;
  8. }
  9. .sprite-item1 {
  10. @include sprite-pic1;
  11. }
  12. .sprite-item2 {
  13. @include sprite-pic2;
  14. }
  15. .sprite-item3 {
  16. @include sprite-pic3;
  17. }
  18. .sprite-item4 {
  19. @include sprite-pic4;
  20. }
  21. .sprite-item5 {
  22. @include sprite-pic5;
  23. }
  24. .sprite-item6 {
  25. @include sprite-pic6;
  26. }

OK,在页面你就可以看见预览效果了。

sprite预览

开启gulp命令后,命名窗口不需要关闭,gulp会实时监控sprite文件夹的变化,如果有变化,就会执行上述操作。