最近在本身vue的項目中用到Sass,便寫下一些經常使用的方法總結和介紹Sass在vue中的配置css
個人項目是用vue-cli腳手架配置的項目vue
安裝Sass
ruby -v
複製代碼
$ gem install sass
複製代碼
若是出現permitted問題一般是權限問題webpack
ERROR: While executing gem ... (Gem::FilePermissionError)You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory. 複製代碼
那就輸入如下命令:web
$ sudo gem install sass
$ npm install sass-loader -D
複製代碼
若是安裝無限等待嘗試下面替換RubyGems鏡像vue-cli
$ gem sources --remove https://rubygems.org/
//若是你係統不支持https用http
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org# 請確保只有 ruby.taobao.org
$ gem install sass
複製代碼
若是出現下面錯誤npm
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/sass
複製代碼
嘗試下面方法sass
$ sudo gem install -n /usr/local/bin sass
複製代碼
安裝完成嘗試查看sass版本ruby
$ sass -v
複製代碼
配置
安裝完成後在build/webpack.base.conf.js文件的modoles設置內加入如下的配置bash
module: {
rules: [
{
test: /\.scss$/,
loaders: ["style", "css", "sass"]
}
]
}
複製代碼
而後呢,咱們要使用它了,咱們建立一個vue的文件開始寫代碼,而後在vue文件的style添加langide
<style lang="scss">
/* 在此處寫Sass */
</style>
複製代碼
Sass經常使用的用法
(1)變量
SASS容許使用變量,全部變量以$開頭。
/* 變量聲明 */
$fontStack: Helvetica, sans-serif;
$primaryColor: #333;
body {
font-family: $fontStack;
color: $primaryColor;
}
複製代碼
等同於👇css的寫法
body {
font-family: Helvetica, sans-serif;
color: #333;
}
複製代碼
若是變量須要鑲嵌在字符串之中,就必須須要寫在#{}之中。
$side : left;
#div1 {
margin-#{left}:10px;
}
複製代碼
(2)計算功能
SASS容許在代碼中使用算式:
.div2 {
margin: 10px * 2;
padding:(14px / 2);
}
複製代碼
等同於👇css的寫法
.div2 {
margin: 20px;
padding: 7px;
}
複製代碼
(3)嵌套
SASS容許選擇器嵌套。好比:
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
}
複製代碼
等同於👇css的寫法
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
複製代碼
在嵌套的代碼塊內,可使用&
引用父元素。好比a:hover
僞類,能夠寫成:
a {
margin: 10px;
&:hover {
color: #000;
}
}
複製代碼
等同於👇css的寫法
a {
margin: 10px;
}
a:hover {
color: #000;
}
複製代碼
屬性也能夠嵌套,好比border-color屬性,能夠寫成:
p{
border: { //注意,border後面必須加上冒號。
color: #000;
}
}
//轉化css後
p{
border-color: #000;
}
複製代碼
(4)繼承
SASS容許一個選擇器,繼承另外一個選擇器。好比,現有div3:
.div3 {
margin: 2px;
}
/* .div4繼承.div3 */
.div4 {
@extend .div3;
font-size: 10px;
}
複製代碼
等同於👇css的寫法
.div3, .div4 {
margin: 2px;
}
.div4 {
font-size: 10px;
}
複製代碼
(5)Mixin
Mixin有點像C語言的宏(macro),是能夠重用的代碼塊。
@include
複用@mixin p1 {
float: left;
}
div {
/*使用@include命令,調用這個mixin。*/
@include p1;
top: 10px;
}
複製代碼
等同於👇css的寫法
div {
float: left;
top: 10px;
}
複製代碼
mixin的強大之處,在於能夠指定參數和缺省值。這樣咱們就能夠複用一些樣式,只須要傳遞一個參數,就像調用一個函數同樣!
@mixin box-sizing ($sizing) {
-webkit-box-sizing:$sizing;
-moz-box-sizing:$sizing;
box-sizing:$sizing;
}
.box-border{
border:1px solid #ccc;
@include box-sizing(border-box);/*引用*/
}
複製代碼
等同於👇css的寫法
.box-border {
border: 1px solid #ccc;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
複製代碼
@mixin p2($val1, $val2:20px) {
/* 若是不加入參數,就用默認參數 */
float: $val1;
top: $val2;
}
//使用的時候,根據須要加入參數:
div {
@include p2(left);
}
複製代碼
等同於👇css的寫法
div {
float: left;
top: 20px;
}
複製代碼
(6)導入文件
@import "path/filename.scss";
@import "foo.css";
複製代碼
(7)註釋
SASS共有兩種註釋風格。
sass的內容遠不止這些,日常使用的話,上面的就夠用了,若是看完本博客後也有興趣繼續深刻學習sass能夠去看一下官方文檔: Sass中文文檔