sass文档摘记

2024-06-07 00:32
文章标签 文档 sass 摘记

本文主要是介绍sass文档摘记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

过了一遍sass文档,自己过滤了一些觉得不太推荐使用的内容,记录下以前不知道的内容
下文中例子都摘自https://www.sass.hk/docs/

1.变量

$nav-color: #F90;
nav {$width: 100px;width: $width;color: $nav-color;
}

变量可以引用别的变量
中划线和下划线是互通的,也就是说,$a_b$a-b是同一个变量,最好不要使用这个规则
变量默认值,$fancybox-width: 400px !default;
!global可以将局部变量转换为全局,最好不要用
#{}引用的变量将编译为无引号字符,可以避免运行运算符

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

2.嵌套

属性也可以嵌套,但是个人觉得别用为好

nav {border: 1px solid #ccc {left: 0px;right: 0px;}
}

3.@import

不同于css,sass在生成css时就会把文件导入
局部文件的文件名以下划线开头,局部文件,不需要单独生成css的文件,比如themes/_night-sky.scss,这样导入@import “themes/night-sky”;
导入文件也可以嵌套,.blue-theme {@import “blue-theme”}
包含media queries,@import仅作为普通的CSS语句,http://开头,url()地址,也是一样
不可以在混合指令 (mixin) 或控制指令 (control directives) 中嵌套 @import

4.mixin

mixin可以传参

@mixin link-colors($normal, $hover, $visited) {color: $normal;&:hover { color: $hover; }&:visited { color: $visited; }
}
a {@include link-colors(blue, red, green);
}//Sass最终生成的是:
a { color: blue; }
a:hover { color: red; }
a:visited { color: green; }// 这样写可以忽略传参的顺序
a {@include link-colors($normal: blue,$visited: green,$hover: red);
}// 这样写可以给参数赋默认值
@mixin link-colors($normal,$hover: $normal,$visited: $normal)
{color: $normal;&:hover { color: $hover; }&:visited { color: $visited; }
}// 不定参数
@mixin box-shadow($shadows...) {box-shadow: $shadows;
}
.shadows {@include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
// 另一种情况
@mixin colors($text, $background, $border) {color: $text;background-color: $background;border-color: $border;
}
$values: #ff0000, #00ff00, #0000ff;
.primary {@include colors($values...);
}

@content用来传递mixin的内容

@mixin apply-to-ie6-only {* html {@content;}
}
@include apply-to-ie6-only {#logo {background-image: url(/logo.gif);}
}
//输出
* html #logo {background-image: url(/logo.gif);
}// @content的变量值是@include定义的时候值
$color: white;
@mixin colors($color: blue) {background-color: $color;@content;border-color: $color;
}
.colors {@include colors { color: $color; }
}
// 输出
.colors {background-color: blue;color: white; // 注意这里border-color: blue;
}

@content的目的,使用media-queries,animation的keyframes等块内容的时候

@mixin keyframes($name){ @keyframes #{$name} { @content; } 
} 
@include keyframes(show){ 0% { opacity:0; } 100% { opacity:1; } 
}

@mixin 可以用 = 表示, @include 可以用 + 表示

5.extend

慎用,尤其对于后代选择器

.error {border: 1px solid red;background-color: #fdd;
}
.seriousError {@extend .error;border-width: 3px;
}// 下面这句将会应用到.seriousError a,尤其需要注意
.error a{  color: red;font-weight: 100;
}
// 也就是说生成后是这样的
.error a, .seriousError a {color: red;font-weight: 100; 
}// %作为占位符
#context a%extreme {color: blue;
}
.notice {@extend %extreme;
}
// 输出
#context a.notice {color: blue;
}// 听说这种情况使用%占位比mixin要好,但是%的块里面是不可以用&的,使用了也不会生效
// 参考http://www.w3cplus.com/preprocessor/8-tips-help-get-best-sass.html
%bg-image { width: 100%; background-position: center center; background-size: cover; background-repeat: no-repeat;
} 
.image-one { @extend %bg-image; background-image:url("/img/image-one.jpg");
} 
.image-two { @extend %bg-image; background-image:url("/img/image-two.jpg");
}

在指令中使用 @extend 时,必须延伸给相同指令层中的选择器

// 可以
@media print {.error {border: 1px #f00;background-color: #fdd;}.seriousError {@extend .error;border-width: 3px;}
}// 不行
.error {border: 1px #f00;background-color: #fdd;
}@media print {.seriousError {// INVALID EXTEND: .error is used outside of the "@media print" directive@extend .error;border-width: 3px;}
}

6.指令

@at-root 让规则生成在文档的root层级下,不推荐使用
@debug @warn @error 调试用
@if 分支
@for @each @while 循环
其中each还可以写成这样

@each $animal, $color, $cursor in (puma, black, default),(sea-slug, blue, pointer),(egret, white, move)
以及这样
@each $header, $size in (h1: 2em, h2: 1.5em, h3: 1.2em)        再看一个@while的例子,变量可以很灵活
$i: 6;
@while $i > 0 {.item-#{$i} { width: 2em * $i; }$i: $i - 2; // 注意这里
}

@function 自定义函数

$width: 40px;@function grid-width($n) {@return $n * $width + ($n - 1);
}#sidebar { width: grid-width(5); }

这篇关于sass文档摘记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037676

相关文章

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (