搜索
您的当前位置:首页正文

使用Sass和Compass组合写CSS_html/css

2023-11-28 来源:莱芜美食

最近开始在尝试开始使用Sass来写CSS代码,刚开始虽然还是不太习惯用链式的方式写css,不过这是暂时的阶段。

如果你还不了解Sass,可以看之前发表过的文章来了解详情,Sass主要有下面这几种特性(主要内容来自这里)

左邊為原始scss檔,右邊為編譯過後的:1.Variables 變數使用$作為開頭當參數

2.Nesting 巢狀結構很清楚的知道 誰是誰的子元素,不用像以前一樣 寫一大排重復的開頭了

3.Mixins 其實就像function一樣使用,還可以帶參數

設定預設參數

4.Inheritance 繼承

另外幾個常用的功能

1.@import可以將網站的各部份樣式拆開成_head.scss, _body.scss, _foot.scss放置在base資料夾下,可利用@import功能把3個檔納入到main.css裡

只要在main.scss加上

@import "base/head"; @import "base/body"; @import "base/foot";

_head.scss, _body.scss, _foot.scss 這些檔案都不會被編譯成css,記得檔案名稱需以 _ 底線作開頭!

2.算數

3.顏色功能

lighten(red, 50%) //增亮50% darken(blue, 50%) //變暗50%

更多功能參見官方說明

其它筆記!

更換css壓縮樣式

以expanded壓縮方式

sass --watch --style expanded style.scss:style.css

編譯出來的css:

#main { color: #fff; } #main p { width: 10em; } ...

以compressed壓縮方式

sass --watch --style compressed style.scss:style.css

編譯出來的css:

#main{color:#fff; line-height: 19.5px;"> 

要debug怎麼辨?

1.Firefox裝FireSass for Firebug外掛

2.重新編譯

sass --watch --debug-info style.scss:style.css

#開啟debug模式 (記得要先刪原本編譯出的css)

之後在Firebug裡就可以看見啦

還有線上可以直接測試 http://sass-lang.com/try.html

其實sass/scss只是利於編寫css而產生的一個語言,但今天要寫符合各瀏覽器前綴詞的css,你還是得自已寫@maxin把-moz, -webkit, -o, -ms寫起來,如果遇到要寫css3的gradient呢? 又要可以改參數呢? 那會瘋掉! 因為我寫過,後來就放棄了! 因為有個更強大的Compass來幫忙! 來看看Compass有多厲害!

首先,当然是安装Compass,

gem update --system #先更新 gem gem install compass #安裝Compass 

建立Compass项目

compass creat myproject

預設會產生如上面那些檔,接著可以在config.rb裡作設定css、sass、images等的資料夾設定,再依自已喜好吧! 接著在終端機輸入

compass watch  

此時你就可以開始編輯你的scss檔了,編輯完存檔,compass會馬上編譯css到你設定的資料夾內,一樣可以按command + c 取消。 下次要再編輯就再watch就好

来看看Compass有哪些方便的地方

reset css@import "compass/reset"; 

這樣reset的css就幫你寫好了! 超方便!

常見的css3圓角

@import "compass/css3"; .box{ @include border-radius(5px); } 

 

只要先import "compass/css3", 之後就可以使用所有css3 的內容,如border-radius、box-shadow、gradient…等,使用方式是@include,其實是compass幫你寫好了@mixin,你只要會用就好,而compass厲害的就是會同時幫你產生各個瀏覽器相對應的css,上面那行所產生的結果:

-moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; -ms-border-radius: 5px; -khtml-border-radius: 5px; border-radius: 5px;

所有css都幫你產生好了,再也不用全寫了,加上寫這麼多重復的css只會更難閱讀,尤其我非常不愛css屬性重寫再重寫又斷行,搞得打開css檔來,1~2千多行! 維護真的相當累人!加上sass的特性是巢狀結構,讓整個css乾淨清楚不少!

css3漸層

.box{ @include background(linear-gradient(lighten(red, 20%), red)); /*線性漸層*/ }

一行就搞定所有瀏覽器! 其中lighten(red, 20%)是使用sass的加亮顏色功能。

Sprite

我覺得…做Sprite是css designer的痛吧!維護非常費工,還要計算座標,萬一改個圖,就要座標重算!css再寫,而且改一個可能動全身!

哇~ 現在Compass都幫你搞定啦! Compass真是太強大了,三個願望一次滿足! 只要將要合併的圖片放在同一個資料夾下,compass會自動產生另一張合併檔,同時設定好座標。

@import "icons/*.png"; @include all-icons-sprites; //all-後面接著的「icons」代表著是資料夾名稱 .icons-sprite, .icons-facebook, .icons-twitter, .icons-yahoo { background: url('icons-s0859518ac7.png') no-repeat; } .icons-facebook { background-position: 0 0; } .icons-twitter { background-position: 0 -32px; } .icons-yahoo { background-position: 0 -64px; } 

更多compass sprite教學及設定: http://compass-style.org/help/tutorials/spriting/

其它還有更多功能: http://compass-style.org/reference/compass/

debug呢?

output_style = :compressed #css壓縮設定 sass_options = {:debug_info => true} #debug 

開啟config.rb設定檔,加入上面文字後,重新產生css,Firebug就可以看到該樣式是寫在那一行了,sass debug外掛安裝說明。

Sass & Compass投影片介紹

來看看這份相當詳細又實用的投影片介紹吧!

转自前端开发博客 (http://caibaojian.com/use-sass-compass-write-css.html)

小编还为您整理了以下内容,可能对您也有帮助:

sass和compass在windows环境下装好之后怎么编写代码

认识SASS/Compass
SASS是对CSS的预处理器,提供了许多便利的写法,它具有某些编程的思想(比如变量、嵌套、函数、运算等等),通过它再生成相应的CSS,使得CSS的开发,变得简单和可维护。而Comapss是基于SASS的一个库,Compass相对于SASS的关系大致相当于 JQuery:JS的关系。

SASS与Compass在Windows环境下的安装
SASS是依赖于Ruby的,因此在安装SASS之前,必须先在Windows内安装Ruby。

我们简单介绍一下Ruby在Windows下的安装过程:

Ruby的安装
请从这里下载Ruby并按步骤安装。

Ruby现阶段在Windows下的安装与一般应用程序安装没有太大区别,按照默认设置安装所需组件、选择安装目录等,Ruby在Windows下的环境变量等都是由安装程序自行设置的。了解Node.js的童鞋们应该能感觉到Ruby与Nodejs有很多相似之处。

Ruby环境内有个包管理器——GEM,它类似于Nodejs下的NPM,它随着Ruby一起被安装,因此不需要额外安装。啰嗦到这里,是因为sass和compass都是基于Ruby的包,一会儿我们安装Compass/SASS时会用到它。

如果安装成功,你在Windows下的command命令行里输入:

ruby -v
应该能够得到Ruby的版本号。到这里,我们已经可以接着安装SASS/Compass环境了。

SASS/Compass的安装
我们在Windows的command命令行中输入

gem install sass
即可完成安装。不过要注意,你的电脑必须能够访问到互联网,因为此时GEM会从远程服务器上下载sass。compass是依赖于sass的,因此必须在完成sass的安装后才能安装compass,安装方式同SASS,你只需在Windows的command命令行输入:

gem install compass
即可完成安装。截至目前,新版的SASS 3.3.4貌似与compass是存在问题的,因此可能会出现compass安装不成功的提示。

其他问题:
如果你使用了代理连接互联网,你可能需要设置GEM,否则它将不能获得网上的资源,设置方法:

export http_proxy=’http://username:password@url:port/’

如果国外服务器不给力,也可以把GEM的源换成国内的,比如淘宝:

http://ruby.taobao.org/

你需要在CMD下设置:

gem sources -a http://ruby.taobao.org/

GEM包是可以事先下载,再通过Windows下的command命令行离线安装的,GEM包下载地址是:http://rubygems.org/ ,在这里搜索需要的GEM包即可。

假设你已经下载了GEM文件在本地,路径为 D:\gemFile,你需要把CMD的文件切换到该目录,具体如下:

D:
D:>cd gemFile
D:\gemFile> gem install --local compass.gem
与在线安装的区别仅仅是多了一个参数 –local。
此处compass是你要安装的gem包的文件名。
你可以使用上述任何一种方法安装sass与compass,但是请注意,如果你安装的SASS不是Compass要求的版本,会导致Compass安装不成功。

另外,更新GEM的版本,可以输入命令:

gem update --system

sass和compass在windows环境下装好之后怎么编写代码

认识SASS/Compass
SASS是对CSS的预处理器,提供了许多便利的写法,它具有某些编程的思想(比如变量、嵌套、函数、运算等等),通过它再生成相应的CSS,使得CSS的开发,变得简单和可维护。而Comapss是基于SASS的一个库,Compass相对于SASS的关系大致相当于 JQuery:JS的关系。

SASS与Compass在Windows环境下的安装
SASS是依赖于Ruby的,因此在安装SASS之前,必须先在Windows内安装Ruby。

我们简单介绍一下Ruby在Windows下的安装过程:

Ruby的安装
请从这里下载Ruby并按步骤安装。

Ruby现阶段在Windows下的安装与一般应用程序安装没有太大区别,按照默认设置安装所需组件、选择安装目录等,Ruby在Windows下的环境变量等都是由安装程序自行设置的。了解Node.js的童鞋们应该能感觉到Ruby与Nodejs有很多相似之处。

Ruby环境内有个包管理器——GEM,它类似于Nodejs下的NPM,它随着Ruby一起被安装,因此不需要额外安装。啰嗦到这里,是因为sass和compass都是基于Ruby的包,一会儿我们安装Compass/SASS时会用到它。

如果安装成功,你在Windows下的command命令行里输入:

ruby -v
应该能够得到Ruby的版本号。到这里,我们已经可以接着安装SASS/Compass环境了。

SASS/Compass的安装
我们在Windows的command命令行中输入

gem install sass
即可完成安装。不过要注意,你的电脑必须能够访问到互联网,因为此时GEM会从远程服务器上下载sass。compass是依赖于sass的,因此必须在完成sass的安装后才能安装compass,安装方式同SASS,你只需在Windows的command命令行输入:

gem install compass
即可完成安装。截至目前,新版的SASS 3.3.4貌似与compass是存在问题的,因此可能会出现compass安装不成功的提示。

其他问题:
如果你使用了代理连接互联网,你可能需要设置GEM,否则它将不能获得网上的资源,设置方法:

export http_proxy=’http://username:password@url:port/’

如果国外服务器不给力,也可以把GEM的源换成国内的,比如淘宝:

http://ruby.taobao.org/

你需要在CMD下设置:

gem sources -a http://ruby.taobao.org/

GEM包是可以事先下载,再通过Windows下的command命令行离线安装的,GEM包下载地址是:http://rubygems.org/ ,在这里搜索需要的GEM包即可。

假设你已经下载了GEM文件在本地,路径为 D:\gemFile,你需要把CMD的文件切换到该目录,具体如下:

D:
D:>cd gemFile
D:\gemFile> gem install --local compass.gem
与在线安装的区别仅仅是多了一个参数 –local。
此处compass是你要安装的gem包的文件名。
你可以使用上述任何一种方法安装sass与compass,但是请注意,如果你安装的SASS不是Compass要求的版本,会导致Compass安装不成功。

另外,更新GEM的版本,可以输入命令:

gem update --system

如何转变sass的代码变成css的代码

比如你写了一个sass文件,叫index.scss,需要编译成css文件(index.css),
可以使用这个命令:
sass index.scss index.css

当然,sass一般是和compass结合这用,你可以用这个命令:
compass watch
这个命令会把所有的scss文件编译成css文件,并且还会监听这scss文件的变化,一有变化就重新编译一下。。

如果你有前端自动化环境,拿grunt来说,配置好watch任务也能监听scss文件变化并自动化编译,命令是:
grunt watch

grunt serve

如何转变sass的代码变成css的代码

比如你写了一个sass文件,叫index.scss,需要编译成css文件(index.css),
可以使用这个命令:
sass index.scss index.css

当然,sass一般是和compass结合这用,你可以用这个命令:
compass watch
这个命令会把所有的scss文件编译成css文件,并且还会监听这scss文件的变化,一有变化就重新编译一下。。

如果你有前端自动化环境,拿grunt来说,配置好watch任务也能监听scss文件变化并自动化编译,命令是:
grunt watch

grunt serve

CSS的SASS样式应该怎么使用

这次给大家带来CSS的SASS样式应该怎么使用,CSS的SASS样式使用的注意事项有哪些,下面就是实战案例,一起来看一下。

随着越来越多的开发者使用SASS,我们有必要关注一下SASS的代码的个数问题。 我们可以从CSS(层叠样式表)的语法出发,来解释SASS语法的一些特别之处,毕竟,CSS样式指南是很常见的。

这篇文章主要介绍了我个人比较感兴趣的一些特性,也许能够让你从中受用,形成一套属于自己的SASS使用指南。

继续保持自己常用的CSS格式规则和样式指南

这篇文章着重讨论了关于SASS的一些内容,但是在此基础上,开发者应该保持自己已有并且良好的格式规则。如果你还没有发展出一套属于自己的格式规则,那么这里有一些样式指南的综述,应该可以帮你形成属于自己的CSS编写习惯。这里仅列出一些其中所包含的部分内容:

1. 保持行缩进一致

2. 保持冒号/大括号前后空格数的一致

3. 保持一行一个选择器,一行一个规则

4. 相关的属性尽量写在一起

5. 对于类名命名规则由一个规划

6. 避免使用CSS id选择器

7. 等等

接下来我们就了解一下如何写出美观的SASS代码吧,以编写一个.weather类的属性为例:

首先列出@extend(s)

.weather {

@extends %mole;

...

}这样做能够使开发者保持一个清晰的思路,能够立刻知道这个类与其属性和其他类及其属性的关系,保持属性的一致和属性重用的清晰思路。

普通样式

.weather {

@extends %mole;

background: LightCyan;

..

}

@include(s)

.weather {

@extends %mole;

background: LightCyan;

@include transition(all 0.3s ease-out);

...

}这样做能够使开发者一眼看出@extend(s)和@include(s)的部署,便于自己以及其他开发者对代码的解读。你可能还会对是否区分自定义的@includes和公共来源的@includes在有些情况下做出决定(尤其是考虑到代码的可重用性和时效性)

选择器嵌套

.weather {

@extends %mole;

background: LightCyan;

@include transition(all 0.3s ease);

> h3 {

border-bottom: 1px solid white;

@include transform(rotate(90deg));

}

}在嵌套部分内,继续使用上述的样式规则。嵌套的部分永远都应该放在最后。

所有厂商前缀使用@mixins

厂商前缀(CSS前缀)具有非常强的时效性。 由于现代浏览器的更新,这些前缀的使用将越来越少。你可以通过更新mixins里的内容(或者在你mixin里用到的一些库将自动更新)去适应这些变化。 哪怕mixin只有短短一行,也没有关系。

但当某些厂商前缀的私有化非常严重时,这些前缀将非常难以标准化并且应用其他前缀或者无前缀的版本会得不偿失,我会选择放弃@mixin这些厂商前缀。比如像-webkit-line-clamp, -mscontent-zoom-chaining或者类似情形。

嵌套的层次不要超过3层

.weather {

.<span style="width: auto; height: auto; float: none;" id="14_nwp"><a style="text-decoration: none;" mpid="14" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=be9ebff1476c47c4&k=cities&k0=cities&kdi0=0&luki=6&n=10&p=&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=c4476c47f1bf9ebe&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F2137%2Ehtml&urlid=0" id="14_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">cities</span></a></span> {

li {

// no more!

}

}

}如果你的嵌套多余三次,你很有可能写出一个坑爹的(差劲的?)选择器。坑爹的原因不外乎这个选择器过于依赖HTML的架构(不稳定), 过于详细(功能过于强大,没有弹性),或者是可重用性太差(不太可用)。同时,过多的嵌套层次容易导致代码处于晦涩难懂的境地。

如果有的时候与类相关的代码真的太多了,使得你不得已使用标签选择器。你可能需对于某个类要写的非常具体,以避免不必要的层叠。 甚至有可能的话,利用extend来使用CSS里一些可重用性的特性。

.weather

> h3 {

@extend %line-under;

}

}嵌套的代码不要超过50行

若果SASS里的嵌套多于50行,那么它很可能不能完整的显示在编译器的一页中,这样会导致代码不易阅读,难以理解。嵌套本来是为了方便和简化思考与代码的组织。如果有违阅读性,请别嵌套。

全局与区域化的SASS文件序列相当于表格内容

换言之,它们并没有任何一种固定样式。开发者要提醒自己保持所有部分的样式风格一致,有序。

首先列出厂商/全局的库,其次列出自定义库,然后是模式,最后是每个分部的用到的库。

这样一来‘目录‘看起来就像下面这个例子一样,一目了然:

/* Vendor Dependencies */

@import "compass";

/* Authored Dependencies */

@import "<span style="width: auto; height: auto; float: none;" id="10_nwp"><a style="text-decoration: none;" mpid="10" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=be9ebff1476c47c4&k=global&k0=global&kdi0=0&luki=9&n=10&p=&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=c4476c47f1bf9ebe&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F2137%2Ehtml&urlid=0" id="10_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">global</span></a></span>/colors";

@import "global/mixins";

/* Patterns */

@import "global/tabs";

@import "global/modals";

/* Sections */

@import "global/header";

@import "global/footer";这些文件就像是一个指南针,颜色和mixins并不产生已编译好的CSS代码,他们纯粹是的库。在此之后引入模式,使得重写变得更安全,不会出现专一性的冲突。

将SASS合理的分割成多个小文件

这样做没有任何不好。在情况允许的时候,尽量使用小而精的多个文件,这样便于开发者在寻找一些特定文件,而不是在几个拥有冗长代码的大文件中大海捞针。

...

@import "<span style="width: auto; height: auto; float: none;" id="9_nwp"><a style="text-decoration: none;" mpid="9" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=be9ebff1476c47c4&k=global&k0=global&kdi0=0&luki=9&n=10&p=&q=06011078_cpr&rb=0&rs=1&seller_id=1&sid=c4476c47f1bf9ebe&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1922429&u=http%3A%2F%2Fwww%2Eadmin10000%2Ecom%2Fdocument%2F2137%2Ehtml&urlid=0" id="9_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">global</span></a></span>/header/header/";

@import "global/header/logo/";

@import "global/header/dropdowns/";

@import "global/header/nav/";

@import "global/header/really-specific-thingy/";我经常做的就是在一个全局scss文件中逐个引用这些文件,而不是引用一个_header.scss文件,然后再_header.scss文件中在逐个引用。这样做能够降低索引的时间和提高阅读效率。

当这些文件过多导致import序列太长时,你可能会用到 Globbing 。

记得将Partials命名为_partial.scss

这是一个常见对于不能自身编译的文件的命名。这样的文件多少会依赖于其他的文件,使得自身不能完成编译。我个人喜欢在文件名之前添加一个下划线,譬如_dropdown-menu.scss

在本地编译时添加行映射

看这里,这意味着开发工具能够告诉你每一条规则的来源,哪怕是一个被引入的partial文件。

在部署时,记得编译已精简的文件

运行中的网页永远都只需要使用精简的CSS。

无需递交.css文件

这可能要花些时间,但是不在文件库中放入.css文件可以是一件非常美妙的事. 文件编译在部署的时候就完成了。 所以唯一可以看见的是那些已经精简的格式美妙的sass文件。 这使得对于文件的描述变得大有用途。文件描述是用于对比由版本发布者所做的一些更改。而对于已经精简的.css文件,文件描述基本不需要了。

大方的使用注释

很少有人会后悔在代码中留下了注释。不论是有用的还是不起眼的注释,他们最终都会在编译成精简的CSS文件时被抹去,对于开发者来说不会有任何附加代价。

.overlay {

/* modals are 6000, saving messages are 5500, header is 2000 */

z-index: 5000;

}提到注释,你可能也需要对它做一些标准化的调整。在SASS中,’//’非常适用于添加注释,’//’使得注释和取消注释变得非常方便。

将一些常用的数值和有特殊意义的数值转化成变量

如果你发现自己重复使用一个数值(这在前端设计里是很常见的),你最好将它转化成一个变量。这样你可以通过命名来提醒自己这个数值的含义,并且在编写代码时保持一致性,是的你在更改这个数值时不需要逐行调整。

若果一个数字有着明显的含义,那么将它转化成变量是必不可少的啦。

相信看了这些案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

HTML的代码书写有哪些规范

Html+css怎样实现纯文字和带图标的按钮

在XHTML中的标题标签与段落标签有哪些使用方法

webstorm 配置sass输出css文件格式配置

本文前提是电脑里已经顺利安装了ruby,sass等之后,再进行webstorm中配置sass的watcher,以及改变watcher中的默认选项;如果以上都还没有做,可以自行百度解决,很容易找到的;

本文使用的webstorm为11.0版本

点击左上角的 *File→Settings→File Watchers ***

在弹窗的窗口的右上角点击绿色的 ‘+’ 号,然后选择scss

然后按照下图进行操作:

其中*的地方都要填好,program那里是你安装ruby中响应的scss.bat的路径,如果安装ruby时,你不是按照默认c盘路径按装的话,那么那里是需要需改的;

按道理其中只有两个地方是需要修改的,其他我没有改过,都是默认就是那样的

1、Arguments:

可以配置编译后的文件的输出路径,我这里写的是:

--no-cache --update --sourcemap --watch : css$FileNameWithoutExtension$.css

注意, 后面有个冒号,然后 表示的是scss文件所在的文件夹的父级文件夹,而不是scss文件的父文件夹.

举个例子,我的项目叫lianxi,里面有个sass文件夹,里面存放scss文件,那么按照这样配置的结果, www.scss 所在的文件夹就是sass,sass的父文件夹就是lianxi,然后找到lianxi下的css文件夹,编译后的 www.css 文件就会在这里.

如图所示:

2、Output paths to refresh:

改成这样: .css: .css.map

经过以上配置就实现了,webstorm支持sass的同步编译,也就是即写即编译,并且可以指定编译后的css的目录.

这里需要注意两点:

1》同步编译只能在项目文件夹下,也就是webstorm左侧打开的项目.随便打开一个项目外的文件是不行的.

2》这个和webstorm没有什么关系,就是sass编译不能带有中文,无论是路径名,文件名,文件里的内容,都不能识别中文,如果要修改它也不是不可以,但我觉得不用中文也挺好的,养成好习惯嘛.

原文网址摘自于 http://www.jianshu.com/writer#/notebooks/8901255/notes/8479561

webstorm 配置sass输出css文件格式配置

本文前提是电脑里已经顺利安装了ruby,sass等之后,再进行webstorm中配置sass的watcher,以及改变watcher中的默认选项;如果以上都还没有做,可以自行百度解决,很容易找到的;

本文使用的webstorm为11.0版本

点击左上角的 *File→Settings→File Watchers ***

在弹窗的窗口的右上角点击绿色的 ‘+’ 号,然后选择scss

然后按照下图进行操作:

其中*的地方都要填好,program那里是你安装ruby中响应的scss.bat的路径,如果安装ruby时,你不是按照默认c盘路径按装的话,那么那里是需要需改的;

按道理其中只有两个地方是需要修改的,其他我没有改过,都是默认就是那样的

1、Arguments:

可以配置编译后的文件的输出路径,我这里写的是:

--no-cache --update --sourcemap --watch : css$FileNameWithoutExtension$.css

注意, 后面有个冒号,然后 表示的是scss文件所在的文件夹的父级文件夹,而不是scss文件的父文件夹.

举个例子,我的项目叫lianxi,里面有个sass文件夹,里面存放scss文件,那么按照这样配置的结果, www.scss 所在的文件夹就是sass,sass的父文件夹就是lianxi,然后找到lianxi下的css文件夹,编译后的 www.css 文件就会在这里.

如图所示:

2、Output paths to refresh:

改成这样: .css: .css.map

经过以上配置就实现了,webstorm支持sass的同步编译,也就是即写即编译,并且可以指定编译后的css的目录.

这里需要注意两点:

1》同步编译只能在项目文件夹下,也就是webstorm左侧打开的项目.随便打开一个项目外的文件是不行的.

2》这个和webstorm没有什么关系,就是sass编译不能带有中文,无论是路径名,文件名,文件里的内容,都不能识别中文,如果要修改它也不是不可以,但我觉得不用中文也挺好的,养成好习惯嘛.

原文网址摘自于 http://www.jianshu.com/writer#/notebooks/8901255/notes/8479561

用compass编译sass,进入目录后执行compass watch 后然后书写scss文件却没有进行编译,这是怎么回事呢?

您好,这样的:

Sass的安装:

1.安装:SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。

假定你已经安装好了Ruby,接着在命令行输入下面的命令:

gem install sass

然后,就可以使用了。

2:使用:

SASS文件就是普通的文本文件,里面可以直接使用CSS语法。文件后缀名是.scss,意思为Sassy CSS。SASS提供两种编译方式,一种是手动编译,一种是监视编译(–watch),手动编译就是当你撰写好CSS时下指令去做编译,监视编译则是你指令一个目录,当此目录里面的*.scss档案有改变时(新增、覆写等等),就会自动去做编译的动作。先来讲手动编译方式:

下面的命令,可以在屏幕上显示.scss文件转化的css代码。(假设文件名为test。)

sass test.scss

如果要将显示结果保存成文件,后面再跟一个.css文件名。

sass test.scss test.css

SASS提供四个编译风格的选项:

* nested:嵌套缩进的css代码,它是默认值。

* expanded:没有缩进的、扩展的css代码。

* compact:简洁格式的css代码。

* compressed:压缩后的css代码。

生产环境当中,一般使用最后一个选项。

sass –style compressed test.sass test.css

还有一种监视的方式做编译,在命令行中切换到当前sass或者scss文件所在的目录,然后运行

sass –watch scss:css

SASS的官方网站,提供了一个在线转换器。你可以在那里,试运行下面的各种例子。

Compass的安装:

1.安装:安装ruby之后,输入命令

gem install compass

2.使用:创建一个 COMPASS 项目

在命令行中切换到你需要创建项目的目录,运行:

compass create "projectname"

这个命令会创建一个包含一系列文件的目录,其中最重要的是配置文件 config.rb,其他文件如果你不需要都可以删除。

在 config.rb 中你可以修改 SASS 和 CSS 的目录及其它一些基础设置。

实时编译 SASS 文件

COMPASS 提供的默认方法是:

在命令行下切换到项目目录,运行

compass watch

COMPASS 将会实时监控 SASS 目录的文件变化,只要你一保存文件,立即将相应文件编译为 CSS 文件。追问你好,我的sass和compass都已经配置好了,我找来找去原因是文件路径出现了中文,改过来就ok了;现在又有新的问题:在书写scss文件时,如果注释用了中文也会编译出错,我在网上查说是在engine.rb文件里加Encoding.default_external = Encoding.find('utf-8'), 可是如果出现中文,编译还是失败,请问您有什么方法能解决吗?

预处理器Sass如何使用

这次给大家带来预处理器Sass如何使用,使用预处理器Sass的注意事项有哪些,下面就是实战案例,一起来看一下。

Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compass)有助于更好地组织管理样式文件,以及更高效地开发项目。

1. 特色功能

完全兼容 CSS3

在 CSS 基础上增加变量、嵌套 (nesting)、混合 (mixins) 等功能

通过函数进行颜色值与属性值的运算

提供控制指令 (control directives)等高级功能

自定义输出格式

文件后缀名称:sass有两种后缀名文件,一种后缀名为sass,不使用大括号和分号;另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号。而本教程中所说的所有sass文件都指后缀名为scss的文件。在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错。

//文件后缀名为sass的语法

body

background: #eee

font-size:12px

p

background: #0982c1

//文件后缀名为scss的语法

body {

background: #eee;

font-size:12px;

}

p{

background: #0982c1;

}2. Sass、Less语法比较

2.1 Sass与Less不同之处

编译环境不一样——Sass基于Ruby等服务器端环境编译,Less既可以支持服务器端编译也可在客户端(浏览器环境)编译

变量符不一样——Sass使用$符号声明变量,Less使用@符号声明变量

对于条件语句的支持不一样——Sass支持复杂的条件语句(类似于if..else..),Less仅支持简单的条件语句(类似于if()..)

作用域——Sass局部修改变量可影响全局变量,Less则只会在局部作用域生效。

引用外部CSS文件方式不同——Sass默认引入.sass或.scss文件时可忽略后缀,Less则需要通过关键字配置来控制引入文件如何处理。

2.2 Sass与Less相似的地方

混入(Mixins)——类似于函数或者宏,并且可以传递参数;

嵌套规则——class中嵌套class,从而减少重复的代码;

运算——CSS中运用加减乘除计算各种数值以及字符串等;

颜色功能——可以通过内置函数编辑颜色;

命名空间(namespace)——分组样式,从而可以被调用;

3. Sass语法主要功能介绍

3.1 CSS功能扩展

嵌套规则

Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器,嵌套功能避免了重复输入父选择器,而且令复杂的 CSS 结构更易于管理,例如:

//sass style or less style

#main p {

color: #00ff00;

width: 97%;

.redbox {

background-color: #ff0000;

color: #000000;

}

}

//css style

#main p {

color: #00ff00;

width: 97%; }

#main p .redbox {

background-color: #ff0000;

color: #000000; }父选择器 &

在嵌套 CSS 规则时,有时也需要直接使用嵌套外层的父选择器,例如,当给某个元素设定 hover 样式时,或者当 body 元素有某个 classname 时,可以用 & 代表嵌套规则外层的父选择器。

//sass style or less style

a {

font-weight: bold;

text-decoration: none;

&:hover { text-decoration: underline; }

body.firefox & { font-weight: normal; }

}

//css style

a {

font-weight: bold;

text-decoration: none; }

a:hover {

text-decoration: underline; }

body.firefox a {

font-weight: normal; }属性嵌套

有些 CSS 属性遵循相同的命名空间 (namespace),比如 font-family, font-size, font-weight 都以 font 作为属性的命名空间。为了便于管理这样的属性,同时也为了避免了重复输入,Sass 允许将属性嵌套在命名空间中,例如:

//sass style

.funky {

font: {

family: fantasy;

size: 30em;

weight: bold;

}

}

//css style

.funky {

font-family: fantasy;

font-size: 30em;

font-weight: bold; }命名空间也可以包含自己的属性值,例如:

//sass style

.funky {

font: 20px/24px {

family: fantasy;

weight: bold;

}

}

//css style

.funky {

font: 20px/24px;

font-family: fantasy;

font-weight: bold; }3.2导入

sass的导入(@import)规则和CSS的有所不同,编译时会将@import的scss文件合并进来只生成一个CSS文件。但是如果你在sass文件中导入css文件如 @import ‘reset.css’,那效果跟普通CSS导入样式文件一样,导入的css文件不会合并到编译后的文件中,而是以 @import 方式存在。

所有的sass导入文件都可以忽略后缀名.scss。一般来说基础的文件命名方法以_开头,如_mixin.scss。这种文件在导入的时候可以不写下划线,可写成@import “mixin”。

less的导入(@import)语法:@import (keyword) “filename”;

多个关键字 @import 是允许的,你必须使用逗号分隔关键字:example: @import (optional, reference) “foo.less”;

reference: 使用该less文件但是不输出它

inline: 包括在源文件中输出,但是不作处理

less: 将该文件视为less文件,无论其扩展名为什么

css: 将文件视为css文件,无论扩展名为什么

once: 该文件仅可导入一次 (默认)

multiple: 该文件可以多次导入

optional: 当没有发现文件时仍然编译

导入文件代码示例:

/*被导入sass文件a.scss,less文件a.less:*/

//a.scss or a.less

//-------------------------------

body {

background: #eee;

}

/*需要导入样式的sass文件b.scss,less文件b.less:*/

@import "reset.css";

@import "a";

p{

background: #0982c1;

}

/*转译出来的b.css样式:*/

@import "reset.css";

body {

background: #eee;

}

p{

background: #0982c1;

}根据上面的代码可以看出,b.scss编译后,reset.css继续保持import的方式,而a.scss则被整合进来了。同理,less中也是这样处理的。

3.3 注释 /* */ 与 //

Sass 支持标准的 CSS 多行注释 /* */,以及单行注释 //,前者会被完整输出到编译后的 CSS 文件中,而后者则不会。Less中不用担心这一点,Less中多行注释 /* */,以及单行注释 //都可以随意使用,都会在编译过程中被保留。例如:

//sass style

/* This comment is

* several lines long.

* since it uses the CSS comment syntax,

* it will appear in the CSS output. */

body { color: black; }

// These comments are only one line long each.

// They won't appear in the CSS output,

// since they use the single-line comment syntax.

a { color: green; }

//css style

/* This comment is

* several lines long.

* since it uses the CSS comment syntax,

* it will appear in the CSS output. */

body {

color: black; }

a {

color: green; }3.4 SassScript

变量 $

Sass的变量必须是$开头,后面紧跟变量名,如果值后面加上!default则表示默认值。Less的变量与Sass类似,只是使用符号不同,Less中采用的是@

//sass style

//-------------------------------

$fontSize: 12px;

body{

font-size:$fontSize;

}

//less style

//-------------------------------

@fontSize: 12px;

body{

font-size:@fontSize;

}

//css style

//-------------------------------

body{

font-size:12px;

}变量默认值

sass的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在使用默认变量之前重新声明下变量即可;默认变量的价值在进行组件化开发的时候会非常有用。

//sass style

//-------------------------------

$baseLineHeight: 1.5 !default;

body{

line-height: $baseLineHeight;

}

//css style

//-------------------------------

body{

line-height:1.5;

}

/*覆盖默认值*/

//sass style

//-------------------------------

$baseLineHeight: 2;

$baseLineHeight: 1.5 !default;

body{

line-height: $baseLineHeight;

}

//css style

//-------------------------------

body{

line-height:2;

}变量 #{} 的使用形式

一般我们定义的变量都为属性值,可直接使用,但是如果变量作为属性或在某些特殊情况下等则必须要以#{$variables}形式使用。

//sass style

//-------------------------------

$borderDirection: top !default;

$baseFontSize: 12px !default;

$baseLineHeight: 1.5 !default;

//应用于class和属性

.border-#{$borderDirection}{

border-#{$borderDirection}:1px solid #ccc;

}

//应用于复杂的属性值

body{

font:#{$baseFontSize}/#{$baseLineHeight};

}

//css style

//-------------------------------

.border-top{

border-top:1px solid #ccc;

}

body {

font: 12px/1.5;

}多值变量 list

简单来说list类型有点像js中的数组。list数据可通过空格,逗号或小括号分隔多个值,可用nth($var,$index)取值。

关于list数据操作还有很多其他函数如length($list),join($list1,$list2,[$separator]),append($list,$value,[$separator])等

定义:

//一维数据

$px: 5px 10px 20px 30px;

//二维数据,相当于js中的二维数组

$px: 5px 10px, 20px 30px;

$px: (5px 10px) (20px 30px);使用方法:

//sass style

//-------------------------------

$linkColor: #08c #333 !default;//第一个值为默认值,第二个鼠标滑过值

a{

color:nth($linkColor,1);

&:hover{

color:nth($linkColor,2);

}

}

//css style

//-------------------------------

a{

color:#08c;

}

a:hover{

color:#333;

}多值变量 map

简单来说map类型有点像es6语法中的map数据结构。map数据以key和value成对出现,其中value又可以是list。

格式为:$map: (key1: value1, key2: value2, key3: value3);可通过map-get($map,$key)取值。关于map数据还有很多其他函数如map-merge($map1,$map2),map-keys($map),map-values($map)等

定义:

$heading: (h1: 2em, h2: 1.5em, h3: 1.2em);使用方法:

//sass style

//-------------------------------

$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);

@each $header, $size in $headings {

#{$header} {

font-size: $size;

}

}

//css style

//-------------------------------

h1 {

font-size: 2em;

}

h2 {

font-size: 1.5em;

}

h3 {

font-size: 1.2em;

}变量作用域

Sass和Less中的变量作用域分别类似与javascript中的两种变量申明方式,下面一段代码可以对比出变量声明时的不同处理方式。

Sass中的变量赋值直接修改全局变量,Less中的变量赋值可只在局部生效。

//Sass style

$color:red;

p{

$color:blue;

color:$color;//blue

}

a{

color:$color;//blue

}

//Less style

@color:red;

p{

@color:blue;

color:@color;//blue

}

a{

color:@color;//red

}3.5 混合(mixin)

sass中使用@mixin声明混合,可以传递参数,也可以给参数设置默认值。声明的@mixin通过@include来调用;在less中只需要将定义好的class用类似函数的方式直接引用。

无参数 mixin

//sass style

@mixin center-block {

margin-left:auto;

margin-right:auto;

}

.demo{

@include center-block;

}

//less style

.center-block {

margin-left:auto;

margin-right:auto;

}

.demo{

.center-block;

}

//css style

.demo{

margin-left:auto;

margin-right:auto;

}有参数 mixin

//sass style

@mixin opacity($opacity:50) {

opacity: $opacity / 100;

filter: alpha(opacity=$opacity);

}

.opacity-80{

@include opacity(80); //传递参数

}

//less style

.opacity(@opacity:50) {

opacity: @opacity / 100;

filter: alpha(opacity=@opacity);

}

.opacity-80{

.opacity(80); //传递参数

}

//css style

.opacity-80{

opacity: .8;

filter: alpha(opacity=80);

}多个参数 mixin

Sass调用时可直接传入值,如@include传入参数的个数小于@mixin定义参数的个数,则按照顺序表示,后面不足的使用默认值,如不足的没有默认值则报错。除此之外还可以选择性的传入参数,使用参数名与值同时传入;Less中使用方法类似。

//sass style

@mixin horizontal-line($border:1px dashed #ccc, $padding:10px){

border-bottom:$border;

padding-top:$padding;

padding-bottom:$padding;

}

.imgtext-h li{

@include horizontal-line(1px solid #ccc);

}

//less style

.horizontal-line(@border:1px dashed #ccc, @padding:10px){

border-bottom:@border;

padding-top:@padding;

padding-bottom:@padding;

}

.imgtext-h li{

.horizontal-line(1px solid #ccc);

}

//css style

.imgtext-h li {

border-bottom: 1px solid #cccccc;

padding-top: 10px;

padding-bottom: 10px;

}多组值参数 mixin

Sass中如果一个参数可以有多组值,如box-shadow、transition等,那么参数则需要在变量后加三个点表示,如$variables?;Less表示不定参数时可以直接使用 ? 表示,并用@arguments表示所有参数

//sass style

//box-shadow可以有多组值,所以在变量参数后面添加...

@mixin box-shadow($shadow...) {

-webkit-box-shadow:$shadow;

box-shadow:$shadow;

}

.box{

border:1px solid #ccc;

@include box-shadow(0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3));

}

//less style

.box-shad

莱芜美食还为您提供以下相关内容希望对您有帮助:

如何转变sass的代码变成css的代码

比如你写了一个sass文件,叫index.scss,需要编译成css文件(index.css),可以使用这个命令:sass index.scss index.css 当然,sass一般是和compass结合这用,你可以用这个命令:compass watch 这个命令会把所有的scss文件编译...

sass和compass在windows环境下装好之后怎么编写代码

D:&gt;cd gemFile D:\gemFile&gt; gem install --local compass.gem 与在线安装的区别仅仅是多了一个参数 –local。此处compass是你要安装的gem包的文件名。你可以使用上述任何一种方法安装sass与compass,但是请注意,如果你安装...

CSS的SASS样式应该怎么使用

@import "global/header/really-specific-thingy/";我经常做的就是在一个全局scss文件中逐个引用这些文件,而不是引用一个_header.scss文件,然后再_header.scss文件中在逐个引用。这样做能够降低索引的时间和提高阅读效率。当这些文件过多...

预处理器Sass如何使用

Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compa...

用compass编译sass,进入目录后执行compass watch 后然后书写scss文件却...

sass –watch scss:css SASS的官方网站,提供了一个在线转换器。你可以在那里,试运行下面的各种例子。Compass的安装:1.安装:安装ruby之后,输入命令 gem install compass 2.使用:创建一个 COMPASS 项目 在命令行中切换到...

为什么有人写css可以把选择器嵌套在大括号里?是用了什么框架吗?如下...

纯css是没有这种写法的,只有使用less、sass、scss这类css预处理语言才会出现的选择器嵌套。而且css里也不会渲染这种嵌套的写法,只会渲染这种嵌套:.baz .test{height:50px;}。下面的例子是less嵌套后与生成css的对比图:...

用sass选择器嵌套的时候,如何表示直接子元素

使用CSS的子元素选择器与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。选择子元素如果不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(Child ...

如何处理CSS3属性前缀

比如说 Compass ,里面就是使用Sass的mixin为CSS3需要带前缀的属性定制了一些mixin。还有类似于Stylus中的 nib 等。预处理器中的混合宏确实可以解决很多问题,但也产生了新的问题,就是它所使用的语法是全新的,如果要使用就...

我为什么不再用Compass写CSS

我喜欢Sass为我们在样式表中提供的数学运算的能力。当我们使用CSS的预处理时,我们可以在CSS中混入变量,对于以数字为基础的CSS,但忽略数学的支持CSS来讲,这是一个巨大的进步。最 重要的是,Compass提供了一些先进的数学...

我为什么不再用Compass写CSS

是不是非常的清楚? 最后你可以使用HTML里方式来嵌套你的CSS。你可以使用任何CSS选择器来使得流程更加简单!我同样也添加了一些在SASS中经常使用的很多不错特性: "&amp;" 标号。这个将告诉SASS来设定一个额外的规则。因此使用...

Top