使用sass_【项目实战】sass使用基础篇(上)

sass使用篇系列持续更新,通过这篇文章你可以了解到sass中的一些基础知识:

1、什么是sass

2、sass和scss区别

3、sass基础使用方法:变量、嵌套、混合(mixin)、继承拓展、@import、comment

什么的sass

Sass是一种CSS预处理语言。CSS预处理语言是一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让css更加简洁、适应性更强,可读性更佳,更易于代码的维护等诸多好处。

CSS预处理语言有Scss(Sass) 和Less、Postcss。

Scss和Sass

sass一开始用的是一种缩进式的语法格式

采用这种格式文件的后缀名是.sass

在sass3.0版本后我们常用的是sassy css语法,扩展名是.scss,更接近与css语法

区别:
  • 后缀名不同 .sass和.scss
  • 语法不同,请看下面

新版:

/*新版本
多行文本注释*/

//新版本
//单行文本注释

@import "base";

@mixin alert{
 color:red;
 background:blue;
}

.alert-warning{
 @include alert;
}

ul{
 font-size:15px;
 li{
  list-style:none;
 }
}

老版本:

/*新版本
多行文本注释

//新版本
  单行文本注释

@import "base"

=alert
 color:red
 background:blue


.alert-warning
 +alert


ul
 font-size:15px
 li
  list-style:none

变量

变量的意义

在sass里我们可以定义多个变量来存放颜色、边框等等的样式,这样就可以在下面想要使用样式的时候使用变量了

这样的优点就是便于维护,更改方便


变量的使用

可以通过$来定义变量,在变量名字中可以使用-和_来作为连接,并且-和_是可以互通的,就是用起来一模一样。

变量的值可以是字符串、数字、颜色等等,在变量里还可以使用其他变量,使用的时候直接写变量名就好了

例如

$primary-color:#ff6600;
$primary-border:1px solid $primary_color;

div.box{
 background:$primary-color;
}

h1.page-header{
 border:$primary-border;
}

css写法---》

div.box {
  background: #ff6600;
}

h1.page-header {
  border: 1px solid #ff6600;
}

嵌套的使用

合理的使用嵌套语法,可以使我们编写代码更为快捷

假设我们想写这样的css:

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}

在sass里我们可以这样写

.nav{
 height:100px;
 ul{
  margin:0;
  li {
   float:left;
   list-style:none;
   padding:5px;
  }
 }
}

大家会发现,写出来的代码父和子之间都有空格隔开,如果我们需要给a加上伪类的话我们这样写

.nav{
    height:100px;
    a{
        color:#fff;
        :hover{
            color:#ff6600;
        }
    }
}

在里面就会出现这样的情况

.nav a :hover {
  color: #ff6600;
}

我们发现在a和:hover之间有了空格,这样是不好的,所以我们需要在写的时候在:hover之前把a加上,这样就需要用到在之类里引用父类选择器的方式,我们可以用&符号代替父类

例如:

.nav{
    height:100px;
    a{
        color:#fff;
        &:hover{
            color:#ff6600;
        }
    }
}

这样就好了,下面来个完整的代码:

.nav{
    height:100px;
    ul{
     margin:0;
     li{
      float:left;
      list-style:none;
      padding:5px;
     }
     a{
      display:block;
      color:#000;
      &:hover{
       color:#f60;
       background:red;
      }
     }
    }

    & &-text{
     font-size:15px;
    }
}

css写法-----》

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}
.nav ul a {
  display: block;
  color: #000;
}
.nav ul a:hover {
  color: #f60;
  background: red;
}
.nav .nav-text {
  font-size: 15px;
}

嵌套属性

我们可以把一些复合属性的子属性来嵌套编写,加快编写速度,例如

body{
 font:{
  family:Helvitica;
  size:15px;
  weight:bold;
 }
}
.nav{
 border:1px solid red{
  left:none;
  right:none;
 }
}

.page-next{
 transition:{
  property:all;
  delay:2s;
 }
}

css写法-----》

body {
  font-family: Helvitica;
  font-size: 15px;
  font-weight: bold;
}

.nav {
  border: 1px solid red;
  border-left: none;
  border-right: none;
}

.page-next {
  transition-property: all;
  transition-delay: 2s;
}

mixin 混合

你可以把它想象成一个有名字的定义好的样式

每一个mixin都有自己的名字,类似于js里的函数定义方法如下

@mixin 名字(参数1,参数2...){
    ...
}

使用方法是在其他选择器css样式里通过@include引入,其实就相当于将mixin里的代码写入到这个选择器的css里,如下:

@mixin alert {
 color:#f60;
 background-color:#f60;
 a{
  color:pink;
 }
 &-a{
  color:red;
 }
}

.alert-warning{
 @include alert;
}

css写法-----》

.alert-warning {
  color: #f60;
  background-color: #f60;
}
.alert-warning a {
  color: pink;
}
.alert-warning-a {
  color: red;
}

刚才是没有参数的mixin,mixin也可以拥有参数,需要注意的是:

  • 形参的名字前要加$
  • 传参的时候只写值的话要按顺序传
  • 传参的时候不想按顺序的话需要加上形参名字

例如:

@mixin alert($color,$background) {
 color:$color;
 background-color:$background;
 a{
  color:darken($color,10%);//把颜色加深百分之十
 }
}

.alert-warning{
 @include alert(red,blue);
}

.alert-info{
 @include alert($background:red,$color:blue);
}

css写法------》

.alert-warning {
  color: red;
  background-color: blue;
}
.alert-warning a {
  color: #cc0000;
}

.alert-info {
  color: blue;
  background-color: red;
}
.alert-info a {
  color: #0000cc;
}

继承拓展 extend

如果我们有一个选择器想要拥有另一个选择所有的东西,不管是样式还是子元素等等,可以使用@extend来继承

大家需要注意的是,++b继承a的时候,a的子元素设置了样式,也会给b的子元素设置样式++,达到完全一样的情况,例如:

.alert {
 padding:5px;
}

.alert a {
 font:{
  weight:bold;
  size:15px;
 }
}

.alert-info {
 @extend .alert;
 backgournd:skyblue;
}

css写法----》

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

partials

在以前咱们编写css的时候,一个css引入另一个css需要使用@import,其实这是不好的,会多发一次http请求,影响咱们站点的响应速度。

在sass里,咱们可以把小的sass文件分出去,叫做partials,在某个sass里通过@import ‘partials名’去引入,注意路径哟,这样的话就可以把partials里的代码引到咱们大的sass里一起编译

  • 需要注意的是 partials的文件名前要加_
_base.scss  :
body{
 margin:0;
 padding:0;
}
style.scss :
@import "base";

.alert {
 padding:5px;
}

.alert a {
 font:{
  weight:bold;
  size:15px;
 }
}

.alert-info {
 @extend .alert;
 backgournd:skyblue;
}

css写法----------->

body {
  margin: 0;
  padding: 0;
}

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

这样的话我们就可以把模块化的思想引入到sass里了


comment注释

sass里的注释有三种

  • 多行注释
  • 单行注释
  • 强制注释

多行注释:压缩后不会出现在css里 /*  */

单行注释: 不会出现在css里 //

强制注释:压缩后也会出现在css里 /*!  */

265063d48a79b77ddfdb786643debc8b.png

 相关推荐

最详细的从零开始配置 TypeScript 项目的教程

不借助后台和 JS ,只用 CSS 让一个列表编号倒序,你会怎么做?

Grid布局会了吗?

菜单权限处理 [项目实战]

Node 到底是用来干嘛的呢?

如何提高github下载速度到2MB/s

手写webpack核心原理,再也不怕面试官问我webpack原理

14条 Scss 缩减50%样式代码的实战经验总结

又一个布局利器, CSS 伪类 :placeholder-shown

封装一个vue视频播放器组件

对于组件的可重用性,大佬给出来6个建议

学习 TS 不要错过的八个工具

Node 中的全链路式日志标记及处理

使用 Node 开发服务器项目时如何高效地打日志?

用TypeScript学设计模式(享元模式)

用TypeScript学设计模式(模板方法模式)

TypeScript 设计模式之适配器模式

用TypeScript学设计模式(观察者模式)

用TypeScript学设计模式(单例模式)

db659cf218e350daa399b3b1eeb610e5.png

b8f1e8248ed9b4902d67c07eb6288fdc.png点在看的人特别帅/美 1d245c5a40270ec677108067a1a66b8a.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值