zoukankan      html  css  js  c++  java
  • compass与css sprite(雪碧图)

    什么是css sprite?

    css sprite,中文叫雪碧图,也有人喊CSS精灵,就是一种背景拼合的技术,然后通过background-position来显示雪碧图中需要显示的图像。

    MDN相关链接:https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/CSS_Image_Sprites

    优点:1.减少页面请求数

            2.降低图片占用字节

    缺点:1.拼图麻烦

            2.后期维护麻烦

    为什么使用compass?

    最近项目中需要使用到很多小图片,想用雪碧图,但是自己拼接图片,还要计算位置什么太麻烦了。之前想找在线的雪碧图合成网站,但是感觉都不怎么好用,然后发现了compass。

    compass是一套用于自动创建和维护雪碧图的强大工具。

    应该是官网:http://compass-style.org/

    不错的教程:http://thesassway.com/beginner/getting-started-with-sass-and-compass

    然后,开始尝试一下。

    一、安装ruby和sass

    在使用compass机器上请确保有ruby和sass。

    1.ruby的下载安装。 https://www.ruby-lang.org/zh_cn/downloads/

    2.安装sass

    gem install sass
    

    网上一开始找到的说这个命令就好了,但是我出现了一下错误。

    然后找到了一个这样的解决办法:

    gem sources -a http://rubygems.org/
    

    并不成功,据说是因为ruby 的gem被和谐了,现在淘宝的ruby工程师架设了rubygems的国内镜像。

    进行一下命令:

    gem sources --remove https://rubygems.org/
    gem sources -a https://ruby.taobao.org/
    gem sources -l
    

    输出如下:

    *** CURRENT SOURCES ***

    https://ruby.taobao.org

    成功安装。

    我的版本:

    二、安装compass

    gem install compass
    

    三、配置compass项目

    compass init

    然后你会发现它自动产生了一些文件

    接着在根目录下新建文件夹images/share来放置你想合成的图片

    注意,你的图片名称请不要出现空格!

    四、开始使用

    在文件夹sass下新建一个文件为share.scss,里面的内容为:

    @charset "UTF-8";
    
    @import "compass/utilities/sprites";  // 加载compass sprites模块
    @import "share/*.png";                // 导入share目录下所有png图片

    注意,如果你想在里面使用中文注释,请记得在第一行加上:@charset “UTF-8"; 要不然很容易就编码错误

    执行命令:

    compass watch
    

    之后你只需要尽情地修改你的代码,每次更改它都会自动查看修改然后重新编译执行。

    这是成功的提示,你会发现在image文件夹里有一张合成的png图,命名格式为share-XXX.PNG,然后在stylesheets文件夹下会新出现了一个名为share.css的文件。

    你打开share.css文件会发现里面只有三行:

    /* line 88, share/*.png */
    .share-sprite {
      background-image: url('/images/share-sb24e8ccc59.png');
      background-repeat: no-repeat;
    }
    
    /*@include all-share-sprites;*/

    这显然不大对劲,我想要每个图片的相对位置啊。

    这时候,你需要在share.scss里多加上一行:

    @charset "UTF-8";
    
    @import "compass/utilities/sprites";  // 加载compass sprites模块
    @import "share/*.png";                // 导入share目录下所有png图片
    @include all-share-sprites;

    include的那个东西的名字我们可以在开始生成的css的最后一行注释中看见,是基于引入图的文件名的。

    这次出来的css就会是类似:

    /* line 88, share/*.png */
    .share-sprite, .share-arrow1, .share-arrow2, .share-arrow3, .share-arrow4, .share-arrow5, .share-arrow6 {
      background-image: url('/images/share-sb24e8ccc59.png');
      background-repeat: no-repeat;
    }
    
    /* line 84, ../../../Ruby22-x64/lib/ruby/gems/2.2.0/gems/compass-core-1.0.3/stylesheets/compass/utilities/sprites/_base.scss */
    .share-arrow1 {
      background-position: 0 0;
    }
    
    /* line 84, ../../../Ruby22-x64/lib/ruby/gems/2.2.0/gems/compass-core-1.0.3/stylesheets/compass/utilities/sprites/_base.scss */
    .share-arrow2 {
      background-position: 0 -25px;
    }

    这样,需要用到哪个图标就非常简单了,满足了我最基本的需求~

    在实际应用中,我们制作雪碧图一般都会留一定的间距,在compass里要做到也很简单,多加一句话即可。

    @charset "UTF-8";
    
    $share-spacing: 5px;
    
    @import "compass/utilities/sprites";  // 加载compass sprites模块
    @import "share/*.png";                // 导入share目录下所有png图片
    @include all-share-sprites;

     如果要修改布局:

    @charset "UTF-8";
    
    $share-layout: 'smart';
    
    @import "compass/utilities/sprites";  // 加载compass sprites模块
    @import "share/*.png";                // 导入share目录下所有png图片
    @include all-share-sprites;

    注意:目前控制间距和“smart”布局不能同时使用。同时出现的话,只会显示smart布局,间距并不会有改变。

    另外,使用compass你还可以控制生成图片的图标排列方式,控制图标间的间距等。

    中文教程参考:

    【Sass中级】使用Sass和Compass制作雪碧图

    使用compass自动合并css雪碧图(css sprite)

  • 相关阅读:
    【剑指Offer】53、表示数值的字符串
    【剑指Offer】52、正则表达式匹配
    【剑指Offer】51、构建乘积数组
    【双系统】windows 和 Ubuntu 双系统安装
    【ubuntu子系统】使用windows自带的ubuntu子系统
    【剑指Offer】50、数组中重复的数字
    【剑指Offer】49、把字符串转换成整数
    【剑指Offer】48、不用加减乘除做加法
    【剑指Offer】47、求1+2+3+4+···+n
    【maven】成功生成jar包,提示找不到主类?
  • 原文地址:https://www.cnblogs.com/AminHuang/p/4634507.html
Copyright © 2011-2022 走看看