sass & compass 实战录

一、sass 是什么

  • Css的一种预处理器
  • 是基于css进行语法扩展而成
  • 主要目的是为了提高开发效率,弥补css语法不足的缺陷
  • 同样流行的预处理器还有:less、stylus

二、SASS的基本语法

  1. 变量

    以$开头的变量,类似于php中变量的概念

    $dark = #000;
    a {color: $dark;} // a {color: #000}
  2. 嵌套(包括选择器的嵌套)

    嵌套是对css花括号语法的扩展,使得写css就像写dom一样层级分明。

    ul {max-width: 1200px;margin: 0 auto;
            li {float: left; padding: 5px 15px;}
    }
    
    //等同于 
    
    ul {max-width: 1200px;margin: 0 auto;}
    ul li {float: left; padding: 5px 15px;}
  3. @mixin 混合器

    就是一个代码作用域 主要是用来封装那些常用的代码块,compass就包含了很多我们常用的@mixin

    //语法
    @mixin $name {
      //代码片段
    }
    .class {@include $name;}
    //实例
    @mixin clearfix {
        &:before,&:after {
                content:"";display:table;
                line-height: 0;*zoom: 1;}
         &:after {clear: both;}
    }
    //引用
    .clearfix {@include clearfix;} //这样就能引用清除浮动的代码块了
  4. @extend 继承

    这个更加好理解,就是将当前选择器添加到继承的选择器那里

    ul.nav {@extend .clearfix;}
    
    //生成的代码
    ul.nav,.cliearfix {
      //代码片段
    }

三、compass,scss中的jQuery

  为什么要用compass呢?

  • 大量封装好的@mixin,例如:float、clearfix、horizontal-list等等
  • 自动补全前缀的css3属性
  • Css图片精灵

大量的@mixin 这个真的很好用,特别是那些需要些浏览器前缀去hack的样式,真的是大大节约了不少时间呢!!!!

//下面是三个@mixin 是我项目中经常用到的,下面有对应编译生成的css

@include transition(color,0.3s,ease-in);
 -moz-transition: color, 0.3s, ease-in; -o-transition: color, 0.3s, ease-in; -webkit-transition: color, 0.3s, ease-in; transition: color, 0.3s, ease-in;

@include translateY(-5px);
 -moz-transform: translateY(-5px); -ms-transform: translateY(-5px); -webkit-transform: translateY(-5px); transform: translateY(-5px); 

@include opacity(0);
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); opacity: 0;  //兼容了IE

四、 compass 的图片精灵

  这个真的很好用,很好用,很好用,很好用!!!!!

1. 在没有compass之前,做图片精灵的三步骤:

  1. 将小icon用ps等相关工具合成一张图片
  2. 在浏览器慢慢调试background-position
  3. 在浏览器慢慢调试width、height

不要看只有三步,这里面的每一步都是相当耗时间的呐!!!

2. 使用compass的图片精灵功能sprites

使用图片精灵有下面多种方法,下面以icons这个图片精灵文件夹为例,下面示例代码中使用到的icons 均是指图片精灵文件夹名字

  1. 使用all-$dir-sprites , 这种方法最简单,不管你用没用到精灵的样式,反正一次性生成所有图片精灵,所以生成的代码相对也最冗余

    @import "icons/*.png";
    @include all-icons-sprites;
    //生成
    //生成的图片精灵的class name 都是以“图片文件夹-图片名”的方式命名,并且有一个主要的class name "图片文件夹-sprite"
    .icons-sprite, .icons-msg, .icons-qq, .icons-qq2, .icons-tell, .icons-weibo, .icons-weibo2, .icons-weixin, .icons-weixin2 { background-image: url(‘img/icons-s980cae6d97.png‘); background-repeat: no-repeat; }
    
    .icons-msg { background-position: 0 0; }
    
    .icons-qq { background-position: 0 -21px; }
    
    .icons-qq2 { background-position: 0 -68px; }
    
    .icons-tell { background-position: 0 -115px; }
    
    .icons-weibo { background-position: 0 -138px; }
    
    .icons-weibo2 { background-position: 0 -185px; }
    
    .icons-weixin { background-position: 0 -232px; }
    
    .icons-weixin2 { background-position: 0 -279px; }
  2. 使用@import "icons/*.png";与 icons-sprite 配合使用 按需生成样式

    $icons-sprite-dimensions:true;@import "icons/*.png";
    
    .img {
      .qq{@include icons-sprite(qq);}
      .weibo{@include icons-sprite(weibo);}
    }
    //生成 //如果仅仅调用@import "icons/*.png" ,是不会生成任何代码的,调用了icons-sprite 才会生成代码,相对第一种方法,比较简洁
    .icons-sprite, .img .qq, .img .weibo { background-image: url(‘img/icons-s980cae6d97.png‘); background-repeat: no-repeat; }
    
    .img .qq { background-position: 0 -21px; height: 47px; width: 47px; }.img .weibo { background-position: 0 -138px; height: 47px; width: 47px; }
  3. 使用sprite-map ,这种方法最智能最灵活,可以生成二倍图
    $sprite-icon: sprite-map("icons/*.png", $spacing: 5px, $layout: smart,$sort-by: ‘!width‘,$position:10px,$repeat:no-repeat);
    
    @mixin radio2-sprite($sprite-btn,$name) {
      //获取当前图标的图片名字
      $imgurl: sprite-file($sprite-btn, $name);
      //获取当前图标的位置
      $pos: sprite-position($sprite-btn, $name);
    
      //根据名字获取获取长度和宽度,并设置
      width: image-width($imgurl) / 2;
      height: image-height($imgurl) / 2;
    
      //设置图标的位置
      background-position: nth($pos, 1) / 2 nth($pos, 2) / 2;
      //使用compass的Css3模块 兼容处理背景图片大小
      @include background-size(ceil(image-width(sprite-path($sprite-btn)) / 2) auto);
    }
    //引用
    .icon {background-image: sprite-url($sprite-icon);}
    .qq {@include radio2-sprite($sprite-icon,qq)}
    
    //生成// 可以与上面生成的css对比,尺寸的确是缩小了一般,哈哈^^.icon { background-image: url(‘img/icons-s13e30d3d8d.png‘); }.qq { width: 23.5px; height: 23.5px; background-position: 0 -69px; -moz-background-size: 24px auto; -o-background-size: 24px auto; -webkit-background-size: 24px auto; background-size: 24px auto; }
    
  4. 配置图片精灵选项,配置选项是一个变量,所以要在@import 之前使用,参考第二点使用
    //配置间距
    $icons-spacing: 5px;
    
    //配置重复性
    $icons-repeat: no-repeat;
    //配置尺寸
    $icons-sprite-dimensions:true;

结语: 好啦以上总结是我使用compass的一点小小经验,欢迎沟通交流

时间: 2024-10-02 23:19:06

sass & compass 实战录的相关文章

sass+compass起步

前言:Sass is an extension of CSS that adds power and elegance to the basic language. It allows you to use variables, nested rules, mixins, inline imports, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organize

SASS+COMPASS 自适应 学习笔记

来源 http://snugug.github.io/RWD-with-Sass-Compass/#/ 1 安装 COMPASS 扩展 安装 方式 gem 'extension', '~>X.Y.Z' 命令行安装 require '{extension}' @import '{extension}'; sass 文件导入   扩展1 http://breakpoint-sass.com/ 扩展2 http://singularity.gs/ 3 盒子模型 @import 'compass'; /

实战录 | Redis的主从服务器搭建

<实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全平台工程师田全磊,将带来Redis的主从服务器搭建. Redis是一个简单快捷的key-value存储系统.它提供了丰富的数据存储结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.同时Redis提供还对这些数据结构的丰富操作. Redis哨兵模式介

译:Grunt编译sass&amp;compass和压缩js的工作流程

原文:Grunt workflow for compiling Sass & Compass and minifying Javascript 以前,我们安装Node,NPM和Grunt还包括建立的一个package.json文件和一个Gruntfile文件.在这篇让人兴奋的文章中,我们将会填补一切,你会领会到Grunt是多么的让人吃惊,体验一下他让人敬畏的力量,就像慵懒的沐浴在温暖的阳光下一样让人满意. 如果你还没有安装Node,NPM和Grunt 那就需要先安装好这些东西(真的不难也不可怕)

[已读]Sass与Compass实战

介绍了Sass基础语法与Compass框架,这个网上参考文档就OK了,另外介绍了compass生成图片精灵和相应的css,貌似现在单纯用sass和compass的挺少,要不grunt,要不FIS,而grunt和FIS貌似都有自己的图片精灵方案(好吧,我都没用过)?所以,这本书也没什么必要看了→ →

sass与compass实战(读书笔记)

// compass create myproject // compass compile // compass compile --force 重新编译未改动的 // compass compile --output-style compressed // compass compile --output-style compressed --force // compass watch // compass模块:reset css3 layout typography utilities

sass和compass实战 读书笔记(一)

sass优势: 不做重复的工作 一  消除样式表冗余(通过变量赋值的方式) 1. 通过变量来复用属性值 2. 使用嵌套来快速写出多层级的选择器 3. 通过混合器来复用一段样式 4. 使用选择器继承来避免重复属性 sass通过配置文件config.rb配置文件输出路径 sass基础语法 变量声明  局部变量和全局变量的概念 css代码块中定义的变量就是局部变量 $base-border:1px solid #ccc; $plain-font:Helvetica."Microsoft Yahei&q

windows下,ruby环境的安装,与sass,compass的使用方法

cmd下:ruby -v  成功 安装使用sass 1:移除http://rubygems.org源 gem sources  --remove  https://rubygems.org/ 2: 添加taobao源 gem sources  -a  https://ruby.taobao.org/ 3: 查看前两步是否操作成功 gem sources  -l 4: 安装sass gem install  sass sass -v 5: gem升级 gem  update 6: 安装制定版本的s

强悍的CSS工具组合:Blueprint, Sass, Compass

掌握CSS是每个Web开发者的基本要求,虽然CSS本身并不复杂,但怎样写出支持所有主流浏览器(特别是IE)的CSS,以及在大型网站中如何有序地组织好CSS结构却是一个相当棘手的问题.我更多的是一个开发者,而不是一个设计师,却不幸花了大量时间处理CSS这些棘手问题,如果能有一些工具能帮我处理这些问题,那将很有意义.经过一段时间的搜索和研究,还真发现了几个很棒的工具,感觉真是相见恨晚,与大家分享之. Blueprint CSS Framework 刚才说过了,处理浏览噐的不一致性是很困难的事情.每开