Compass学习指南
来源:互联网 发布:解压缩软件美化版 编辑:程序博客网 时间:2024/04/27 17:00
Compass是Sass的一个工具库,他们之间的关系就好像JavaScript和jQuery一样。
学习Compass之前,你最好有一定的Sass基础。就好像你不会JavaScript一样可以使用jQuery一样,懂得Sass会让你更好的理解Compass。
1. 安装和使用
1.1 安装
跟Sass一样,Compass是基于Ruby的。所以首先,你得安装Ruby。
这里我们假定你已经安装了Ruby,接着,在命令行输入:
sudo gem install compass
compass就安装好了。
1.2 创建项目
创建项目很简单,假定你要在当前目录创建一个项目为Test:
compass create Test
上面这个命令会在当前目录下创建一个新目录Test,里面会有一个config.rb,这是一个配置文件,还有两个子目录:sass和stylesheets。你在sass目录中编写sass文件,生成的css文件会出现在stylesheets中。
1.3 编译
编译命令非常简单:
compass compile
如果你想实时编译,可以使用:
compass watch
1.4 Compass的模块机制
Compass是Sass的库。它封装了一系列Sass函数、mixin共开发者使用。这些Sass函数和mixin,Compass使用模块来将他们分类。
Compass中一共有七个模块:
- Reset
- Layout
- CSS3
- Browser Support
- Typography
- Utilities
- Helpers
需要导入某个模块,只需要使用@import指令就可以了。比如导入reset模块:
@import "compass/reset";
本篇文章也是围绕这七个模块来介绍的。
2. 模块
值得一提的是,大多数情况下,你只要使用:
@import "compass";
就行了,这样会默认导入所有的模块,除了 Reset和Layout这两个模块。这两个模块需要手动导入:
@import "compass/reset";@import "compass/layout";
通常我们需要哪个模块才会导入哪个模块。
打开sass目录下的screen.scss。
2.1 Reset模块
Reset模块用于重置浏览器的默认样式。Compass中的reset模块使用的是meyer reset重置,它会把所有的浏览器默认样式归零。
@import "compass/reset";
编译得到的就是reset.css;
如果你更喜欢normalize的重置思想,可以看看Compass中导入Normalize。
2.2 Layout模块
Layout模块使用率较低,这里只介绍两个子模块。
2.2.1 Stretching子模块
Layout模块中的Stretching子模块,主要用来拉伸元素的:
@import "compass/layout/stretching";
Stretching子模块中有一个名为stretch的mixin:
.box{ @include stretch();}
生成的CSS为:
.box { position: absolute; top: 0; bottom: 0; left: 0; right: 0;}
你也可以单独拉伸水平方向或垂直方向,分别对应stretch-x和stretch-y。
2.2.1 Sticky Footer子模块
Sticky Footer子模块用来生成一个总是在页面最底部的页脚,即使页面本身长度不到浏览器窗口的高。
使用这个子模块需要配合特定的HTML样式:
<body> <div id="root"> <div id="root_footer"></div> </div> <div id="footer"> Footer content goes here. </div></body>
然后在scss文件中:
@include sticky-footer(54px);
sticky-footer可以传入一个参数用于指定footer的高。
你也可以自己定义HTML的选择器:
@include sticky-footer(54px, "#my-root", "#my-root-footer", "#my-footer")
这个模块用的很少。
2.3 CSS3模块
CSS3模块用的最多。它主要解决了CSS3新增属性在不同浏览器中的实现,比如,自动添加浏览器厂商前缀,适配IE。
CSS3模块很多,这里只说background-size,border-radius,opacity,inline-block。
2.3.1 background-size
@import "compass/css3";.box{ @include background-size(cover);}
生成CSS:
.box { -moz-background-size: cover; -o-background-size: cover; -webkit-background-size: cover; background-size: cover;}
2.3.2 border-radius
@import "compass/css3";.box{ @include border-radius(5px);}
生成CSS:
.box { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;}
2.3.3 opacity
@import "compass/css3";.box{ @include opacity(0.5);}
生成CSS:
.box { filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); opacity: 0.5;}
2.3.4 inline-block
@import "compass/css3";.box{ @include inline-block;}
生成CSS:
.box { display: inline-block; vertical-align: middle; *vertical-align: auto; *zoom: 1; *display: inline;}
2.4 Browser Support模块
这个模块是用来指定支持的浏览器及版本的。所以这个模块设定的结果将影响其他模块。比如修改支持的浏览器:
$supported-browsers: chrome;@import "compass/css3";.box{ @include border-radius(4px, 4px);}
这样生成的CSS中厂商前缀将只有chrome:
.box { -webkit-border-radius: 4px 4px; border-radius: 4px / 4px;}
支持多个浏览器可以这样:
$supported-browsers: chrome firefox;
对于浏览器版本:
$browser-minimum-versions: ("chrome": null, "firefox": null, "ie": null, "safari": null, "opera": null)
比如:
$browser-minimum-versions: ("ie":"8");
2.5 Typography模块
Typography模块提供字体排版样式。
分为Links,Lists,Text,Vertical Rhythm四个子模块。
这里只介绍前三个。
2.5.1 Links
主要有三个mixin:hover-link,link-colors,unstyled-link。
- hover-link,用于更改不同状态下超链接是否有下划线:
@import "compass";a{ @include hover-link();}
生成CSS:
a { text-decoration: none;}a:hover, a:focus { text-decoration: underline;}
- link-colors,主要用于更改不同状态下超链接的颜色:
link-colors($normal, $hover, $active, $visited, $focus)
例子:
@import "compass";a{ @include link-colors(red,blue,gray,purple,green);}
生成CSS:
a { color: red;}a:visited { color: purple;}a:focus { color: green;}a:hover { color: blue;}a:active { color: gray;}
- unstyled-link,主要用于抹除超链接默认样式 :
@import "compass";a{ @include unstyled-link();}
生成CSS:
a { color: inherit; text-decoration: inherit; cursor: inherit;}a:active, a:focus { outline: none;}
2.5.2 Lists
这里介绍no-bullets,inline-block-list。
- no-bullets:
@import "compass";ul{ @include no-bullets();}
生成CSS:
ul { list-style: none;}ul li { list-style-image: none; list-style-type: none; margin-left: 0;}
- inline-block-list:
@import "compass";ul{ @include inline-block-list();}
生成CSS:
ul { margin: 0; padding: 0; border: 0; overflow: hidden; *zoom: 1;}ul li { list-style-image: none; list-style-type: none; margin-left: 0; display: inline-block; vertical-align: middle; *vertical-align: auto; *zoom: 1; *display: inline; white-space: nowrap;}
2.5.1 Text
Text只介绍一个ellipsis:
@import "compass";p{ @include ellipsis();}
生成CSS:
p { white-space: nowrap; overflow: hidden; -ms-text-overflow: ellipsis; -o-text-overflow: ellipsis; text-overflow: ellipsis;}
2.6 Utilities模块
utilities模块和Helpers模块都用来提供一些不属于其他模块的功能。不同的是,Utilities模块提供的主要是mixin,而Helpers提供的是函数。
对于表格,Utilities提供了outer-table-borders($width, $color),inner-table-borders($width, $color),table-scaffolding。
使用的比较多的是table-scaffolding:
@import "compass";table{ @include table-scaffolding;}
生成CSS:
table th { text-align: center; font-weight: bold;}table td,table th { padding: 2px;}table td.numeric,table th.numeric { text-align: right;}
还比如清除浮动:
@import "compass";.clearfix{ @include clearfix;}
生成CSS:
.clearfix { overflow: hidden; *zoom: 1;}
但这种清除浮动有个弊端:无法让子元素通过margin负值悬挂在容器之外的效果,因为一旦超出容器就被hidden了。
Compass考虑了这种特殊的需求,提供了一个pie-clearfix:
@import "compass";.clearfix{ @include pie-clearfix;}
生成CSS:
.clearfix { *zoom: 1;}.clearfix:after { content: ""; display: table; clear: both;}
但display: table;可能低版本的IE不支持,Compass提供了另一个:
@import "compass";.clearfix{ @include legacy-pie-clearfix;}
生成CSS:
.clearfix { *zoom: 1;}.clearfix:after { content: "\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden;}
对于浮动:
@import "compass";.box1{ @include float(left);}
生成CSS:
.box1 { float: left;}
float()这个mixin还会根据$browser-minimum-versions判断要不要兼容IE6(IE6在float元素显示时有bug)。
2.6.1 精灵合图
这里把精灵合图挑出来讲。Compass让我们可以更简单的使用精灵图。
我们在images目录下新建一个logo目录,用来存放精灵图(只能是png格式的):
@import "logo/*.png";@include all-logo-sprites();
然后Compass会自动生成一张合图,再根据每张图片的名字生成对应的class,自动计算每张图的位置。
如果不想使用自动生成的类名,你也可以这样:
.error{ @include logo-sprite("sprite1");//传入图片名}
这样.error类就可以使用sprite1这张精灵图了。
有时候我们要为一个button设定不同状态下的背景,比如active和focus状态下使用不同的图片,那么我们只需要给精灵图这样命名:
sprite1_active.pngsprite1_focus.png
Compass自动生成不同状态下背景的相应样式。
2.7 Helpers模块
Helpers提供一些函数。
比如image-url()。
如果我们直接写图片的URL,可能会出错。假设我们在项目目录下有一个存放图片的images目录:
@import "compass";p{ background:url('test.png');}
生成的CSS:
p { background: url("test.png");}
这样会找不到路径。
在config.rb文件中有一个配置项:
images_dir = "images"
这项配置指定了图片的目录,接着使用image-url()就可以找到config.rb中images_dir指定的图片目录下的正确地址。
@import "compass";p{ background:image-url('test.png');}
生成的CSS:
p { background: url('/images/test.png?1475397292');}
这样就正确了。
但这样生成的URL是绝对地址,Compass默认把config.rb所在目录看成是根目录。我们可以修改config.rb来让Compass使用相对地址:
relative_assets = true
这样生成的URL为:
p { background: url('../images/test.png?1475397292');}
与image-url()相类似的还有font-url()和stylesheet-url(),用法相同。
Helpers中还有一个CSS3中经常用到的font-files(),用于返回font的url和format信息,通常配合font-face的mixin使用:
@include font-face("Blooming Grove", font-files("examples/bgrove.ttf", "examples/bgrove.otf"));.example { font-family: "Blooming Grove"; font-size: 1.5em;}
生成的CSS:
@font-face { font-family: "Blooming Grove"; src: url('/fonts/examples/bgrove.ttf?1408149819') format('truetype'), url('/fonts/examples/bgrove.otf?1408149819') format('opentype');}.example { font-family: "Blooming Grove"; font-size: 1.5em;}
font-files()返回的URL地址跟image-url()一样,需要在config.rb中配置:
fonts_dir = "fonts"
- Compass学习指南
- Compass
- Compass
- Compass
- Compass
- Compass
- Compass
- Compass
- 学习指南
- 学习指南
- 学习指南
- Compass 指南
- compass 学习
- Compass 指南
- Compass使用
- compass学习
- compass实例
- Graphics->Compass
- [总结]FFMPEG视音频编解码零基础学习方法
- Linux下文件的三个时间:ctime、mtime、atime的区别
- 天空大战项目1:项目的演示
- linux部署项目问题记录
- linux文件IO操作
- Compass学习指南
- ros::spin() 和 ros::spinOnce() 区别及详解
- 数据实验九 检索
- activity横竖屏切换梳理
- TEMPORARY Tablespaces and TEMPFILES
- C++协程库coroutine使用指南
- Android设计模式 观察者模式之eventbus
- mysql 查询练习
- android 系统源码简单的编译过程