HTML+CSS

SASS基础篇

2018-12-23  本文已影响0人  三岁麻麻

sass的两种语法

.sass 类似ruby的语法
.scss 熟悉的类css语法 css文件改为scss文件只用直接改后缀名
sublime配置下编译会多出一个css.map文件 用来映射css与scss的关系,方便浏览器调试

@charset "UTF-8";//可以省略 默认
@import "variables"; //引入文件
/*
    sass中的@import与css中的@import的区别
    css中  1. @import必须放在代码的最前面 否则不起作用
           2.对性能不利 读到时候才去渲染 
           3.以下四种方式 sass以css模式去引入文件 不做任何处理
                a.引入文件以.css结尾
                b.引入文件以http:开头的字符串
                c.引入文件以url函数开头
                d.引入文件后面带有media queries的时候

    sass中 1. @import可以放再文档的任何地方
           2.重新定义引入方式 先合并再输出
           3.以逗号分隔,引入多个文件 @import "reset,variables";
           3.sass的既定规则
                a.没有文件后缀名的时候 sass会自动添加.scss或者.sass
                b.同一个目录下局部文件和非局部文件不能重名  
 */



body{
    background:#000;
    width:1010%;
}

/* 
   sass变量 通过$定义变量 
   变量通常用专们的文件存储 以下划线命名的局部变量如 _variables 
*/
$text-fff:#fff;
$text-555:#555;
.titone{
    color:$text-fff;
}
.tittwo{
    color:$text-555;
    &:hover{         //&是父类引入
        color:#fff;
    }
    font:{           //sass不仅提供样式嵌套还提供属性嵌套
        family:"微软雅黑";
        size:21px;
    };
}

/* 
    sass支持计算 并且计算可以带单位
*/
.tit3{
    height:(500px/2);

}


/* 
   变量操作
   1.直接操作变量
   2.通过函数 分为两类 (一般放在页面顶部或者另启文件)
        a.跟代码块无关的函数,多是自己的内置函数,称functions
        b.可重用的代码块,
            @include 的方式调用 @mixin
            @extend 的方式调用  class类名
*/

//@minxin
@mixin col-6{
    width:50%;
    color:"#666";
}
.tit4{
    @include col-6();
    &:hover{
        background-color: #555;
    };
}

@mixin col($width:50%){ //不传参 默认50%
    width:$width;
}

.tit5{
    @include col(20%);  
}

/* 
    类样式继承 @extend 
    a.extend 不可以继承选择器序列
    b.使用%,用来构建只用来继承的选择器
 */

.error{
    color:#f00;
}
.impotant{
    font-weight:blod;
}
.error.red{ //.red.serious-error同样会继承这个样式
    font-size:30px;
}

.serious-error{
    @extend .error,.impotant;
    border:1px solid #f00;
}
// ---------------
%a{
    font-size:18px;
}
.b{
    @extend %a; //b继承a,但是a不会被编译
}

//高级语法
@mixin sm-sreen($width:50%){
    @media(min-width: 768px){ //@media在scss中可以嵌套,编译时候才会提到css最外层
        width:$width;
        float: left;
    }

};
.warp{
    @include sm-sreen();
}

/* @at-root指令 明确输出到样式的最外层*/
.warp01{
    background:#555;
    @at-root{
        h1{
            font-size:50px;
        }
        .slogan{
            display: block;
        }
    }
}

/* @mixin进阶 */
@mixin mm_screen($width){
    width:$width;
    @if type-of($width) != number{
        @error "$width必须是一个数值类型,你输入的width是:#{$width}";
    }

};

.warp02{
    @include mm_screen(20%);
}


上一篇下一篇

猜你喜欢

热点阅读