SASS的第一次使用

这次给大家带来SASS的第一次使用,SASS第一次使用的注意事项有哪些,下面就是实战案例,一起来看一下。

SASS初体验

标签(空格分隔): sass scss css

1. 编译环境
需要安装Ruby,之后需要打开Start Command Prompt with Ruby运行

gem install sass

登录后复制

2. 命令行编译

sass /style.scss:/style.css

登录后复制

多文件编译 (必须用–watch?反正我不加watch就会报错)

sass --watch sass/:css/

登录后复制

开启watch

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

登录后复制

输出方式 –style [nested(末尾花括号不换行)|expanded(完全展开)|compact(单行)|compressed(压缩)]

sass --watch sass/:css/ --style compressed

登录后复制

3. 基本语法

(1). 嵌套

less差不多。

nav {    color: blue;    li {        color: yellow;        a {            color: red;            header & {                color: green;            }        }    }}

登录后复制

编译后

nav {  color: blue;}nav li {  color: yellow;}nav li a {  color: red;}header nav li a {  color: green;}

登录后复制

属性嵌套(相同属性前缀), 而且前缀冒号后可以加属性

.box {    font: 12px/24px {        size: 12px;        weight: bold;    }}

登录后复制

编译后

.box { font: 12px/24px; font-size: 12px; font-weight: bold; }

登录后复制

伪类嵌套,和less一毛一样

.clearfix {    &:before,    &:after {        content: "";        display: table;    }    &:after {        clear: both;        overflow: hidden;    }}

登录后复制

编译后

.clearfix:before, .clearfix:after {  content: "";  display: table;}.clearfix:after {  clear: both;  overflow: hidden;}

登录后复制

父选择器&可以作为选择器的第一个字符,比如

.btn {    padding: 4px 12px;    font-size: 16px;    border: 1px solid #ddd;    color: #333;    &-primary {        border-color: #ff5f00;        background: #ff5f00;        color: #fff;    }}

登录后复制

编译后

.btn, .btn-primary { padding: 4px 12px; font-size: 16px; border: 1px solid #ddd; color: #333; }.btn-primary { border-color: #ff5f00; background: #ff5f00; color: #fff; }

登录后复制

(2). 注释

/**/会出现在编译后文件中 amazing!
//不会

// 方向/*方向*/$d: "right";.box {    @extend %border-#{$d};}/*位置*/

登录后复制

编译后

.box {  border-right: 2px solid #ddd;}/*方向*//*位置*/

登录后复制

(3). 变量

$[变量名]: [值]
块级作用域
!global声明可以将局部转变为全局变量
默认变量;普通变量会覆盖默认变量

$size: 16px;$size: 14px !default;p.p-1 {    font-size: $size;}

登录后复制

编译后 p.p-1{font-size:16px}

(4). 运算

+, -, *, /, %
, = 也可用于数字运算 ==, != 可用于所有注意事项
不同单位不能作运算
可以进行字符串拼接;且有无引号根据左边的决定
除法需要在数学表达式中,两个普通属性需要用括号括起来,比如

.box {    width: (100px / 2);}

登录后复制

编译后

.box {  width: 50px;}

登录后复制

插值语句包裹的变量不做除法运算

p {    $font-size: 12px;    $line-height: 30px;    font: #{$font-size}/#{$line-height};}

登录后复制

编译后

p { font: 12px/30px; }

登录后复制

颜色计算分段(按照红绿蓝分别)
颜色函数
其中fade-in($color, $amount)等方法, color参数只能为rgba()颜色,不同于less

颜色函数

(5). 混合

用于定义可重复使用的样式 注意语法不带点,参数默认值也同less一样
@mixin [mixin-name]([$param1, $param2: default-value]) { … }
使用: @include [mixin-name](value1, value2);

对于不定参数,使用 …, 比如

@mixin box-shadow($shadows...) {     -moz-box-shadow: $shadows;     -webkit-box-shadow: $shadows;     box-shadow: $shadows; }

登录后复制

(6). 继承

@extend .[class]

还可以继承任何定义给单个元素的选择器,比如@extend a:hover;

.btn {    border: 1px solid #999;    padding: 4px 12px;    font-size: 14px;    background: #ddd;    color: #333;}.btn-primary {    background: #ff5f00;    color: #fff;    @extend .btn;}

登录后复制

编译后

.btn, .btn-primary {  border: 1px solid #999;  padding: 4px 12px;  font-size: 14px;  background: #ddd;  color: #333;}.btn-primary {  background: #ff5f00;  color: #fff;}

登录后复制

占位符%
用占位符声明的代码,不被@extend调用就不会被编译
相同样式的会通过,合在一起,减少代码量

%box-padding {    padding: 4px 12px;}.box {    font-size: 14px;    @extend %box-padding;}.box-2 {    font-size: 18px;    @extend %box-padding;}

登录后复制

编译后

.box, .box-2 {  padding: 4px 12px;}.box {  font-size: 14px;}.box-2 {  font-size: 18px;}

登录后复制

(7). 插值

通过 #{} 插值语句可以在选择器或属性名中使用变量
#{$[param]}用法,可以用在@each,@extend,多行注释

$border-properties: (border);@mixin set-border($direction, $val) {    @each $prop in $border-properties {        #{$prop}-#{$direction}: $val;    }}.box {    @include set-border(left, 1px solid #ddd);}

登录后复制

编译后

.box {  border-left: 1px solid #ddd;}

登录后复制

%border-right {    border-right: 2px solid #ddd;}$d: "right";.box {    @extend %border-#{$d};}

登录后复制

编译后

.box {  border-right: 2px solid #ddd;}

登录后复制

(8). 导入

@import可以导入多个文件,比如@import “rounded-corners”, “text-shadow”;

导入文件可以通过url()的方式使用插值语句#{},比如@import url(“http://fonts.googleapis.com/css?family=#{$family}”);

如果想使一个sass文件只作为导入文件,不进行编译,在文件名前加_即可,比如文件命名为_colors.scss,使用@import “colors”;导入,注意文件夹下不能再有colors.scss文件。

可以用在嵌套中,作用域就只在当前嵌套中了,很赞;但是不可以在混合指令 (mixin) 或控制指令 (control directives) 中嵌套 @import。

(9). 注意事项 @media

用法同css

可以写在嵌套中,编译后将会编译在最外层,且里面的选择器会是嵌套时候的选择器
比如

.sidebar {    width: 300px;    @media screen and (orientation: landscape) {        width: 500px;    }}

登录后复制

.sidebar { width: 300px; }@media screen and (orientation: landscape) { .sidebar { width: 500px; } }

登录后复制

media的查询条件可以使用插值语句

media的查询条件可以嵌套

(10). @at-root

将嵌套的选择器提升到当前文档最顶层, 比如

.parent {    font-size: 14px;    @at-root .child-a {        font-size: 16px;        @at-root .child-c {            font-size: 18px;        }    }    .child-b {        font-size: 12px;    }}

登录后复制

.parent { font-size: 14px; }.child-a { font-size: 16px; }.child-c { font-size: 18px; }.parent .child-b { font-size: 12px; }

登录后复制

@at-root (without: [directive1 directive2 …])可以排除前面的指令

括号后面不能有选择器,没有括号必须有选择器

@media .print {    .page {        width: 8in;        @at-root (without: media) {            color: red;        }    }}// 没有without@media print {    .page {        width: 8in;        @at-root .p {            color: red;        }    }}

登录后复制

@media .print { .page { width: 8in; } }.page { color: red; }@media print { .page { width: 8in; }  .p { color: red; } }

登录后复制

(11). 控制指令

主要与混合指令 (mixin) 配合使用,
这是less中所没有的,less通过其它方式可以实现类似的效果,比如循环,less可以通过递归配合when关键字来实现:.loop(@counter) when (@counter > 0) { .loop((@counter – 1)); }

@if 表达式返回值不是 false 或者 null 时,执行 {} 内的样式,同样还有@else if和@else

@for 语法:@for $var from through 或者 @for $var from to
和 必须为整数
through 包含 和 的值,而 to 只包含

@each 语法: $var in
值为列表
比如

$arr: a, b, c, d, e;@each $img in $arr {    .box-#{$img} {        background: url('/img/#{$img}.png') no-repeat;    }}

登录后复制

.box-a { background: url("/img/a.png") no-repeat; }.box-b { background: url("/img/b.png") no-repeat; }.box-c { background: url("/img/c.png") no-repeat; }.box-d { background: url("/img/d.png") no-repeat; }.box-e { background: url("/img/e.png") no-repeat; }

登录后复制

可以循环注意事项,比如

$list: (aa, pen), (bb, apple), (cc, bag);@each $var, $img in $list {    .box-#{$var} {        background: url('/img/#{$img}.png') no-repeat;    }}

登录后复制

.box-aa { background: url("/img/pen.png") no-repeat; }.box-bb { background: url("/img/apple.png") no-repeat; }.box-cc { background: url("/img/bag.png") no-repeat; }

登录后复制

使用map数组或许更为明了:

$list-2: (aaa: yellow, bbb: blue, ccc: red);@each $key, $color in $list-2 {    .box-#{$key} {        background: #{$color};    }}

登录后复制

.box-aaa { background: yellow; }.box-bbb { background: blue; }.box-ccc { background: red; }

登录后复制

@while 循环,语法:@while [conditions] { … }

(12). 其它

@debug 可以输出信息到编译器

@warn 将SassScript表达式的值打印到标准错误输出流。

@error 抛出SassScript表达式的值作为致命错误

@function 注意事项

@function [function-name]([params]) {    @return [value];}

登录后复制

The end…    Last updated by: Jehorn, Mar 13, 2018, 12:10 PM

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

注意事项

注意事项

以上就是SASS的第一次使用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2780832.html

(0)
上一篇 2025年3月8日 16:09:01
下一篇 2025年3月8日 16:09:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Css的分类,属性与选择器

    这次给大家带来Css的分类,属性与选择器,使用Css的分类,属性与选择器的注意事项有哪些,下面就是实战案例,一起来看一下。 Css 层叠样式表 美化页面的小工具 分类:   内联 (行内)在标签内部以属性的形式呈现,属性名style    …

    2025年3月8日 编程技术
    100
  • 文字溢出自动显示省略号css方法

    这次给大家带来文字溢出自动显示省略号css方法,文字溢出自动显示省略号css的注意事项有哪些,下面就是实战案例,一起来看一下。 我们经常会遇到文字太多,而为了不打破原有布局,需要将多出文字用省略号代替,实现以下效果: 文字太太太太多多多啦&…

    编程技术 2025年3月8日
    200
  • CSS自适应布局详解

    这次给大家带来css自适应布局详解,css自适应布局的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 本篇文章将介注意事项中的自适应布局,常见的自适应布局有以下2种:左列固定右列自适应、左右两列固定中间自适应。 1. 左列固定右列自…

    2025年3月8日
    200
  • CSS3怎么实现字体发光效果

    这次给大家带来CSS3怎么实现字体发光效果,CSS3实现字体发光效果的注意事项有哪些,下面就是实战案例,一起来看一下。 博客页面左上角的“猿来是勇者”文字已制作发光效果,分享方法如下: 注意事项注意事项 该属性为文本添加阴影效果 text-…

    2025年3月8日
    200
  • 动态加载、移除js/css文件的方法

    本文简单介绍动态加载、移除、替换js/css文件 。有时候我们在写前端的时候,会有出现需要动态加载一些东如css js 这样能减轻用户加载负担,从而提高响应效率。下面贴出代码。  //动态加载一个js/css文件function loadj…

    编程技术 2025年3月8日
    200
  • css实现动态下划线效果实例

    本文主要和大家分享css实现动态下划线效果实例,希望能帮助到大家。 效果展示 而且下划线是与超链接同色的….大家可以自行测试… 实现方法 这个效果我们可以很方便的使用css伪元素来实现。主要是用到了transform 中的scale来缩放伪…

    2025年3月8日
    200
  • 用js和css画箭靶的代码

    假设我现在要画一个类似箭靶的图,有3个圈,或许你可以用html直接把它们写出来,本文主要和大家分享用js和css画箭靶的代码,希望能帮助到大家。 //html部分                                       …

    2025年3月8日
    200
  • 有时css引用图片打包后找不到资源文件是什么原因

    这次给大家带来有时css引用图片打包后找不到资源文件是什么原因,解决css引用图片打包后找不到资源文件的注意事项有哪些,下面就是实战案例,一起来看一下。 使用vue打包,通过css引用图片资源。 .img { height: 500px; …

    2025年3月8日
    200
  • vue项目中怎么使用sass配置

    这次给大家带来vue项目中怎么使用sass配置,vue项目中使用sass配置的注意事项有哪些,下面就是实战案例,一起来看一下。 1、创建一个基于 webpack 模板的新项目 $ vue init webpack myvue 登录后复制 2…

    编程技术 2025年3月8日
    200
  • 在Angular中怎么支持SCSS

    这次给大家带来在Angular中怎么支持SCSS,在Angular中支持SCSS的注意事项有哪些,下面就是实战案例,一起来看一下。 scss介绍 SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论