CSS预处理器SASS用法和koala工具的使用

Stella981
• 阅读 855

    最近在学习前端的时候,发现了一个SASS(CSS预处理器),感觉在前端布局写css样式来说是相当强大,效率又高,在用到SASS的时候感觉很爽。

    首先说一下传统的CSS,在程序员的眼里感觉是一个很麻烦的东西,没有变量,也没有运算,还没有条件语句,感觉写的相当费事。     在人们都感觉费事的同时,真有牛人把CSS加入了编程的元素,这就是(CSS预处理器),是一种专门的编程语言,进行网而设计,然后在编译成正常的CSS文件,但是CSS预处理器中有很多,今天就说一下SASS。

在百度SASS以后,在百度百科中看到了SASS的安装:     如下:SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。假定你已经安装好了Ruby,接着在命令行输入下面的命令:gem install sass然后,就可以使用了。 今天咱们在这里就跳过这一步,在我编程的过程中感觉越省事越好。推荐大家使用一款使用工具-Koala.     首页说一下Koala, koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。下载地址:http://koala-app.com/index-zh.html 使用这款工具也相当省事,安装成功以后,打开此工具,在你的项目目录下创建css目录,然后在css目录下创建style.scss ,然后装css文件夹直接拖到工具内,接着用sublime Text编辑style.scss,工具自动会编释一份style.css文件,真正在网页中使用的是style.css文件。

在使用koala工具的时候,在写样式中添加汉字的时候会提示错误,解决方法:找到工具的安装目录,然后找到以下目录/koala/rubygems/gems/sass-3.4.9/lib/sass/目录有一个engine.rb文件,打开rb文件,在require底部添加

Encoding.default_external = Encoding.find('utf-8')

接着说一下SASS的书写规则和语法:

一、变量     SASS允许使用变量,所在变量以$开头

$color_blue :#1875e7;
div{
color : $color_blue;
}

如果变量要在css的属性中出现的话,就必须需要写在#{}中

$side : left;
 
.box{
border-#{$side}:5px solid #f5f5f5;
}

二、计算功能

SASS可以在代码中做运算

.box{
margin:(14px/2);
top :50px+30px;//当前这些值还可以定义变量
}

三、嵌套

SASS允许选择器嵌套

ul{
  li{
    a{
       color :#dedede;
     }
  }
}
/*编释以后的代码为*/
ul li a { color : #dedede;}

    属性也可以嵌套,比如border-color属性,但是border后面必须加上冒号

p{
 
  border:{
     color :#dedede
  }
 
}

在嵌套的代码中,也可以用&符号引用父元素,

ul{
  li{
 
    a{
       &:hover{ color:#dedede}
     }
   }
 
}

四、代码的注释

SASS共用两种注释

标准的CSS注释/* ... */会保留到编译后的文件中     单行注释//…… 只保留在SASS的源文件中,编译后被省略     重要注释如版权之类的/*! .......*/

五、代码的重用

    5.1 继承

    SASS允许一个选择器继承另一个选择器,语法( @extend  类名)

.class_one{
  line-height:30px;
}
 
.class_two{
   @extend.class_one;
   font-size :25px
}

5.2Mixin      重用代码块 语法   @mixin 定义一个代码块

@mixin left{
 
float: left;
   margin-left :10px
}

使用@include命令可以调用mixin

.box{
 
   @include left;
}

mixin的强大之处,在于可以指定参数和缺省值

@mixin left( $right_v:10px){
 
float: left;
   margin-right : $right_v;
 
}

那么在使用的的时候,可以根据项目的不同设置不同的值

.box{
  @include left(30px);
}

5.3、插入文件

@import命令,用来插入外部文件

@import"path/filename.scss"
@improt"body.css"

六、高级用法

6.1、条件语句

@if可以用来判断

span{
  @if1+1==2{border:1px solid;}
  @if5<3{border:2px dotted;}
}

还可以加上@else命令

@if lightness( $color )>30%{
  background-color :#000;
}@else{
  background-color : $fff;
}

6.2、循环语句

SASS-for循环

@for $i from1 to 10{
   .border-#{$i}{
     border:#{i}px solid blue;
   }
}
//同时也支持while循环
$i :6;
@while $i >0{
  .item-#{$i}{
     width :2px* $i;
   }
   $i: $i -2;
}

@each 命令,作用与for类似

@each $member in a, b, c, d{
 .#{$member}{
    background-image : url("/image/#{$member}.jpg");
 }
 
}

6.3、自定义函数

SASS允许用户编写自己的自定义函数

@functiondouble($n){
  @return $n *2;
}
  
#sidebar {
  width :double(5px);
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Sass用法指南
学过CSS的人都知道,它不是一种编程语言。你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事。很自然地,有人就开始为CSS加入编程元素,这被叫做"CSS预处理器"(csspreproces
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这