zoukankan      html  css  js  c++  java
  • sass

    变量

    在scss当中定义变量的语法如下

    $变量名 : 变量值;
    

    代码块外部定义的变量可以在全局范围内使用

    在代码块内部定义的变量是局部变量
    例如

    .box {
    	$color:red;
    	a{
    		color:$color;
    	}
    }
    

    如果该变量的值需要嵌入到字符串当中 , 需要加#{ }

    $side : left;
    .box {
    	border-#{$side}-radius:5px;
    }
    

    默认变量

    sass的默认变量一般用来设置默认值 , 然后根据需求来进行覆盖
    例如

    $a_padding : 20px !default;
    $a_padding : 6px;
    

    如果对默认变量的值进行了覆盖 , 那么实际输出的就是覆盖之后的值 , 否则输出的就是默认值

    如果是在一个单文件当中 , 并没有必要这样做
    默认变量在组件化开发的时候会非常有用

    什么时候需要声明变量

    • 该值至少重复出现了两次
    • 该值至少可能会被更新一次
    • 该值所有的表现都与变量有关

    嵌套

    使用嵌套的方式来编写css代码 , 可以使元素之间的层级关系更清晰 , 代码的可读性更强

    选择器嵌套

    div {
    	h1 {
    		color :red;
    	}
    }
    

    编译后的结果为

    div h1 {
    	color : red;
    }
    

    前面如果加上 >可以作为父子选择器

    在嵌套的代码块内 , 可以使用&引用父元素
    比如

    a {
    	&:hover{color:red;}
    	&:visited{color:gray;}
    }
    

    属性嵌套

    有一些复合属性可以使用嵌套的方式来写
    比如border

    p {
    	border : {
    		color:red;
    		2px;
    	}
    }
    

    注意 : border的后面必须要加上冒号

    注释

    SCSS可以有两种风格的注释
    一种是标准的css注释 /* */
    编译会保留
    另一种是单行注释 // , 编译过程不保留

    Mixin

    Mixin有点像C语言的宏定义 , 是可以重用的代码块

    //使用@mixin命令,定义一个代码块
    @mixin left {
    	float : left;
    	margin-left : 10px;
    }
    //使用@include调用这个mixin
    .box {
    	@include left;
    }
    

    mixin的强大之处 , 在于可以去指定参数和缺省值

    @mixin left($value:10px) {
    	float : left;
    	margin-left : $value;
    }
    .box {
    	@include left(20px);
    }
    

    如果引入的时候不传参数 , 则使用缺省值
    实例 : 生成浏览器前缀

    @mixin rounded($vert, $horz, $radius: 10px) {
     border-#{$vert}-#{$horz}-radius: $radius;
     -moz-border-radius-#{$vert}#{$horz}: $radius;
     -webkit-border-#{$vert}-#{$horz}-radius: $radius;
    }
    
    #navbar li {
    	@include rounded(top,left);
    }
    #footer {
    	@include rounded(top,left,5px);
    }
    

    颜色函数

    颜色函数是基于某个颜色进行的色彩调整
    利用这些函数 , 可以很方便完成界面上风格统一的色彩搭配
    涉及色彩的部分 , 可以很方便修改 , 完成主题风格的切换

    $base_color : chocolate;
    
    @mixin size {
      200px;
      height:100px;
    }
    
    .div1 {
      @include size;
      background:{
        color: darken($base_color, 10%);
      }
    }
    .div2 {
      @include size;
      background:{
        color: $base_color;
      }
    }
    .div3 {
      @include size;
      background:{
        color: lighten($base_color, 10%);
      }
    }
    

    效果图

    常用的颜色函数

    • darken , lighten - 调整亮度 , 变暗/变亮
    • sturate , desaturate - 增加/减小 饱和度
    • adjust-hue - 调整 色相
    • grayscale - 灰度处理
    • complement - 色彩反相

    文件引入

    使用@import 引入另一个样式文件 , 可以是scss文件 , 也可以是css文件

    @import "path/filename.scss"
    @import "path/base.css"
    

    继承

    SASS允许一个选择器 , 继承另一个选择器

    .class1 {
    	border : 1px solid #ddd;
    }
    .class2 {
    	@extend .class1;
    	font-size : 120%;
    }
    

    在编译过后 , 会生成

    .class1, .class2 {
    	border : 1px solid #ddd;
    }
    .class2 {
    	font-size:120%;
    }
    

    相比于mixin会生成很多重复的代码 , 这种方式能够对代码进行复用 , 有利于提高css解析的效率

    流程控制

    条件语句

    使用@if@else可以进行判断

    @if lightness($color) > 30% {
     background-color: #000;
    } @else {
     background-color: #fff;
    }
    

    循环语句

    for循环

    @for $i from 1 to 10 {
      .border-#{$i} {
        border: #{$i}px solid blue;
      }
    }
    

    while循环

    $i: 6;
    @while $i > 0 {
      .item-#{$i} {  2em * $i; }
      $i: $i - 2;
    }
    

    each循环 , 类似于迭代器

    @each $member in a, b, c, d {
      .#{$member} {
        background-image: url("/image/#{$member}.jpg");
      }
    }
    

    自定义函数

    使用@function可以自定义一个函数

    @function double($n) {
    	@return $n * 2;
    }
    #sidebar {
    	width : double(5px);
    }
    
  • 相关阅读:
    人工智能搜索算法(深度优先、迭代加深、一致代价、A*搜索)
    四.redis 事务
    三.redis 排序
    二.redis 数据类型
    一.redis 环境搭建
    Redis几个认识误区
    key-list类型内存数据引擎介绍及使用场景
    牛人推荐机器学习网站
    Android Studio 快捷键整理分享
    人工智能和机器学习领域中有趣的开源项目
  • 原文地址:https://www.cnblogs.com/programInit/p/6785777.html
Copyright © 2011-2022 走看看