• 技术文章 >web前端 >js教程

    SASS的第一次使用

    php中世界最好的语言php中世界最好的语言2018-03-19 13:52:38原创1139
    这次给大家带来SASS的第一次使用,SASS第一次使用的注意事项有哪些,下面就是实战案例,一起来看一下。

    SASS初体验

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


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

    gem install sass

    2. 命令行编译

    sass <要编译的sass文件路径>/style.scss:<要输出css文件路径>/style.css

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

    sass --watch sass/:css/

    开启watch

    sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/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; }
    .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; }

    颜色函数

    大前端零基础入门到就业:进入学习

    (5). 混合

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

    (6). 继承

    .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). 导入

    (9). 媒体查询 @media

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

    (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; }
    @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). 控制指令

    $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; }

    (12). 其它

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

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

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    在前端中的html基础知识

    Css float的盒子模型position

    以上就是SASS的第一次使用的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:SASS less css
    上一篇:Css的分类,属性与选择器 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 聊聊用pkg将Node.js项目打包为可执行文件的方法• 手把手带你了解Angular中的依赖注入• Node实战:运用Cookie&Session进行登录验证• jQuery插件分享:Turn.js实现一个移动端电子书翻页效果• Angular学习之聊聊notification(自定义服务)
    1/1

    PHP中文网