热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

css的预处理器scss语法及与sass的区别

本文主要分享【现在做web前端是不是必须会小程序开发】,技术文章【css的预处理器scss语法及与sass的区别】为【皓皓皓皓啊】投稿,如果你遇到相关问题,本文相关知识或能到你。现在做web前端是不

本文主要分享【现在做web前端是不是必须会小程序开发】,技术文章【css的预处理器scss语法及与sass的区别】为【皓皓皓皓啊】投稿,如果你遇到相关问题,本文相关知识或能到你。

现在做web前端是不是必须会小程序开发

css预处理器 SCSS SASS
sass是一款css的预编译器
定义了一种新的编程语言,为css增加了一些编程的特性,开发者使用这种语言进行编码后,代码需要编译成css才能被浏览器理解

sass比css更像一门编程语言,它可以有函数,变量,控制语句,导入,嵌套等高级功能

类似的css预编译器还有less,stylus

有了这些功能,sass可以:

提供变量,实现一键切换主题色之类的功能用嵌套写法减少选择器的重复书写用混用功能解决代码复用问题用函数进行复杂的运算把样式代码模块化,减少不同模块的代码间不必要的相互影响,提高代码的安全性

安装
安装sass

写好的scss/sass文件会在运行代码后直接编译为同名的css文件

SASS和SCSS
scss其实就是sass 3为了兼容css引入的新语法
css的语法是选择器+声明块
声明块是由花括号和声明组成的

最早的SASS的语法格式被称为缩进格式,使用"缩进"代替"花括号"

#sidebar {
  width: 30%;
  background-color: #faa;
}

为:

#sidebar
  width: 30%
  background-color: #faa

SASS 3引入了新语法,也就是SCSS,其语法完全兼容CSS 3并且继承了SASS的强大功能,也就是说,任何标准的CSS3样式表都是具有相同语义的
有效SCSS文件

SASS和SCSS的大部分扩展,例如:变量,parent reference 和 指令 都是一样的;唯一不同的就是 SCSS 需要使用分号和花括号而不是换行和缩进

变量

在css的基础上,Sass提供了一些名为SassScript的新功能。
SassScript 可作用于任何属性,允许属性使用变量,算数运算等额外功能。

变量的写法为以美元符号$开头,赋值方法和css属性一样

$width: 10px;

使用变量:

#main {
  width: $width;
}

编译为css:

#main {
  width: 10px;
}

如果变量类型为字符串,一般不需要加引号但是有些特殊情况,比如字符串中有双斜杠"//",就需要用英文状态下的双引号或者单引号包裹字符串

// 变量需要定义在使用之前
$position: "absolute";
$mainTxtColor: '#333';

// 应用
#main {
  position: $position;
  color: $mainTxtColor;
}

因为//在SASS中表示单行注释

除了简单赋值,Sass还可以定义类似数组的变量
$animals: puppy kitty chick;这样的变量可以配合循环使用

简单计算

Sass中支持在使用变量时进行简单的加减乘除

$width: 10px;

#main {
  width: $width / 2;
  height: $width * 2;
}

编译为css:

#main {
  width: 5px;
  height: 20px;
}
插值法

#{}插值几乎可以在Sass样式表中的任何地方使用

$name: "mail";
$top-or-bottom: "top";
$left-or-right: "left";

.icon-#{$name} {
  background-image: url("/icons/#{$name}.svg");
  position: absolute;
  #{$top-or-bottom}: 0;
  #{$left-or-right}: 0;
}

编译结果:

.icon-mail {
  background-image: url("/icons/mail.svg");
  position: absolute;
  top: 0;
  left: 0;
}

就相当于替换

嵌套

如下代码:

main .double .item .links {
  text-align: center;
}

main .double .item .links a {
  margin-right: 20px;
}

如果遇到比较复杂的界面,为了不影响其他元素的样式,会把选择器写的尽可能精确,会很长

sass的嵌套可以解决这个问题

比如上面的两个选择器选择的是父子元素,在Sass中就可以写成:

main .double .item .links {
  text-align: center;
  a {
    margin-right: 20px;
  }
}

把共同选择器提取了出来

嵌套规则

Sass中允许将一套CSS样式嵌入进另一套CSS样式中
内层的样式将外层的选择器作为父选择器

嵌套

父选择器 &
在嵌套CSS样式时,有时需要直接使用父选择器,比如当给某个元素设置hover时:

hover

或者特殊一点的用法:

复用:mixin/include

很多代码都有解决复用的方案

可以用混合(mixin/include)来定义可重复使用的样式

无参数混合
css中使用重复类名来解决代码的复用
css:
.square {
  width: 100px;
  height: 100px;
}

html:


  
...
...

用mixin/include来解决代码复用:

@mixin square {
  width: 100px;
  height: 100px;
}

// 应用:
.user-avatar {
  @include square;
}
.admin-avatar {
  @include square;
}

上述代码定义了一个可以重复使用的块square
用@mixin 定义,@include 引用

编译结果:

.user-avatar {
  width: 100px;
  height: 100px;
}

.admin-avatar {
  width: 100px;
  height: 100px;
}

有参数混合

参数无默认值

稍作修改:

 @mixin square($size) {
  width: $size;
  height: $size;
}

// 应用
.avatar {
  @include square(100px);
}

使用时向$size传入值

参数有默认值

直接定义默认值:

@mixin square($size: 100px) {
  width: $size;
  height: $size;
}

// 不传参数就会使用默认的值 100px
.avatar {
  @include square;
}

// 传入参数就会使用传入的值 200px
.avatar-200 {
  @include square($size: 200px);
}
Sass文件的引入

Sass

用@import

@each

each

@for
@for $i from 1 through 6{
  //$i的值可以取1,2,3,4,5,6一般配合nth-child(),如果使用from ... to ..就只能取到5
}

本文《css的预处理器scss语法及与sass的区别》版权归皓皓皓皓啊所有,引用css的预处理器scss语法及与sass的区别需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
    一、根据题意,填写出空格中的内容Java平台包括三个技术方向,其中J2ME代表____________、J2SE代表___________、J2EE代表 ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • layui表格分页不生效怎么办
    web前端|Layui教程layuiweb前端-Layui教程小程序实例源码,ubuntuip切换,tomcat默认端改为80,爬虫完整源码,微信小程序php接口,seo专业培训班 ... [详细]
  • css div中文字位置_超赞的 CSS 阴影技巧与细节
    本文的题目是CSS阴影技巧与细节。CSS阴影,却不一定是box-shadow与filter:drop-shadow,为啥?因为使用其他属性 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 翻译 | 编写SVG的口袋指南(上)
    作者:DDU(沪江前端开发工程师)本文是原文翻译,转载请注明作者及出处。简介ScalableVectorGraphics(SVG)是在XML中描述二维图形的语言。这些图形由路径,图 ... [详细]
author-avatar
手机用户2602926163
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有