sass的@规则

@import

Sass 支持所有 CSS3 的 @ 规则, 以及一些 Sass 专属的规则,也被称为“指令(directives)”。 这些规则在 Sass 中具有不同的功效,详细解释如下。

@import

Sass 扩展了 CSS 的 @import 规则,让它能够引入 SCSS 和 Sass 文件。 所有引入的 SCSS 和 Sass 文件都会被合并并输出一个单一的 CSS 文件。 另外,被导入的文件中所定义的变量或 mixins 都可以在主文件中使用。

Sass 会在当前目录下寻找其他 Sass 文件, 如果是 Rack、Rails 或 Merb 环境中则是 Sass 文件目录。 也可以通过 :load_paths 选项或者在命令行中使用 --load-path 选项来指定额外的搜索目录。

@import 根据文件名引入。 默认情况下,它会寻找 Sass 文件并直接引入, 但是,在少数几种情况下,它会被编译成 CSS 的 @import 规则:

  • 如果文件的扩展名是 .css。
  • 如果文件名以 http:// 开头。
  • 如果文件名是 url()。
  • 如果 @import 包含了任何媒体查询(media queries)。

如果上述情况都没有出现,并且扩展名是 .scss 或 .sass, 该名称的 Sass 或 SCSS 文件就会被引入。 如果没有扩展名, Sass 将试着找出具有 .scss 或 .sass 扩展名的同名文件并将其引入。

例如:

@import "foo.scss";

@import "foo";

两者都将引入 foo.scss 文件, 而

@import "foo.css"; @import "foo" screen; @import "http://foo.com/bar"; @import url(foo);

将被编译为:

@import "foo.css"; @import "foo" screen; @import "http://foo.com/bar"; @import url(foo);

也可以通过一个 @import 引入多个文件。例如:

@import "rounded-corners", "text-shadow";

将引入 rounded-corners 和 text-shadow 两个文件。

如果你有一个 SCSS 或 Sass 文件需要引入, 但是你又不希望它被编译为一个 CSS 文件, 这时,你就可以在文件名前面加一个下划线,就能避免被编译。 这将告诉 Sass 不要把它编译成 CSS 文件。 然后,你就可以像往常一样引入这个文件了,而且还可以省略掉文件名前面的下划线。

例如,你有一个文件叫做 _colors.scss。 这样就不会生成 _colors.css 文件了, 而且你还可以这样做:

@import "colors";//不用加下划线

来引入 _colors.scss 文件。

注意,在同一个目录不能同时存在带下划线和不带下划线的同名文件。 例如, _colors.scss 不能与 colors.scss 并存。

嵌套 @import

虽然大部分时间只需在顶层文件使用 @import 就行了, 但是,你还可以把他们包含在 CSS 规则 和 @media 规则中。

来看官网提供的一个简单示例:

假设要引入的样式文件`example.scss`文件中包含这样的代码:

.example { color: red; }

然后这样引用:

#main { @import "example"; }

编译出来的 CSS:

#main .example { color: red; }

@media

Sass 中的 @media 指令和 CSS 的使用规则一样的简单,但它有另外一个功能,可以嵌套在 CSS 规则中。有点类似 JS 的冒泡功能一样,如果在样式中使用 @media 指令,它将冒泡到外面。来看一个简单示例:

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

编译出来:

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

@media 也可以嵌套 @media:

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

此时编译出来:

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

在使用 @media 时,还可以使用插件#{}:

$media: screen; $feature: -webkit-min-device-pixel-ratio; $value: 1.5; @media #{$media} and ($feature: $value) { .sidebar { width: 500px; } }

编译出来的 CSS:

@media screen and (-webkit-min-device-pixel-ratio: 1.5) { .sidebar { width: 500px; } }

@extend

Sass 中的 @extend 是用来扩展选择器或占位符。比如:

.error {   border: 1px #f00;   background-color: #fdd; } .error.intrusion {   background-image: url("/image/hacked.png"); } .seriousError {   @extend .error;   border-width: 3px; }

被编译为:

.error, .seriousError {   border: 1px #f00;   background-color: #fdd; }  .error.intrusion, .seriousError.intrusion {   background-image: url("/image/hacked.png"); }  .seriousError {   border-width: 3px; }

详细的可以回顾前面介绍的继承样式部分。

扩展选择器:

@extend 不止扩展类选择器,还可以扩展任何选择器,比如 .special.cool, a:hover, 或 a.user[href^=“http://“],例如:

.hoverlink {   @extend a:hover; } a:hover {   text-decoration: underline; }

编译出来:

a:hover, .hoverlink {   text-decoration: underline; }

再来看一个复杂点的:

.hoverlink {   @extend a:hover; } .comment a.user:hover {   font-weight: bold; }

编译出来的CSS

.comment a.user:hover, .comment .user.hoverlink {   font-weight: bold; }

多个扩展

所设某个样式要继承多个地方的样式,那么可以使用 @extend 来继承多个选择器或占位符的样式,如:

.error {   border: 1px #f00;   background-color: #fdd; } .attention {   font-size: 3em;   background-color: #ff0; } .seriousError {   @extend .error;   @extend .attention;   border-width: 3px; }

编译出来的CSS

.error, .seriousError {   border: 1px #f00;   background-color: #fdd; }  .attention, .seriousError {   font-size: 3em;   background-color: #ff0; }  .seriousError {   border-width: 3px; }

扩展单一选择器

前面我们知道 %placeholder 不使用@extend显示调用是不会生成任何样式代码。那么在选择器中使用占位符一样。比如下面的代码:

#context a%extreme {   color: blue;   font-weight: bold;   font-size: 2em; }

这段代码在不调用之前不产生任何代码,只有能过@extend调用之后才生成代码:

.notice {   @extend %extreme; }

编译出来的CSS

#context a.notice {   color: blue;   font-weight: bold;   font-size: 2em; }
时间: 2024-12-19 06:10:55

sass的@规则的相关文章

sass @import 规则

@import 根据文件名引入. 默认情况下,它会寻找 Sass 文件并直接引入, 但是,在少数几种情况下,它会被编译成 CSS 的 @import 规则: 如果文件的扩展名是 .css. 如果文件名以 http:// 开头. 如果文件名是 url(). 如果 @import 包含了任何媒体查询(media queries). 如果上述情况都没有出现,并且扩展名是 .scss 或 .sass, 该名称的 Sass 或 SCSS 文件就会被引入. 如果没有扩展名, Sass 将试着找出具有 .sc

sass 第一天

一 .准备环节 1 .下载和安装ruby环境 2 .HBuilder(编辑器) 预编译器配置 如图有具体步骤:(此图上课安装时借鉴的其他博友的哦,在这就借用了) 二 .SCSS快速入门 1 .使用变量 sass 让人受益的一个重要特性就是它为 css 引入了变量.可以把反复使用的 css 属性值定义成变量,然后通过变量名引用它们,而无须重复使用这一属性值. 1-1 .变量声明 sass 变量的声明和 css 属性的声明很像,任何可以用作 css 都可以做 sass 的变量值 全局变量: eg:$

CSS预编译器:Sass(进阶),更快的前端开发

1.@if @if 指令是一个 SassScript,它可以根据条件来处理样式块,如果条件为 true 返回一个样式块,反之 false 返回另一个样式块 在 Sass 中除了 @if 之,还可以配合 @else if 和 @else 一起使用. 假设要控制一个元素隐藏或显示,我们就可以定义一个混合宏,通过 @[email protected] 来判断传进参数的值来控制 display 的值 [email protected]循环 在制作网格系统的时候,大家应该对 .col1~.col12 这样

sass、less、stylus的安装及使用

一.什么是CSS预处器 CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就 只要使用这种语言进行编码工作.通俗的说,CSS预处理器用一种专门的编程语言,进行web页面样式设计,然后再编译成正常的CSS文件,以供项目使用. CSS预处理器为CSS增加一些编程的特性,无需考虑浏览器的兼容性问题,例如你可以在CSS中使用变量.简单的逻辑程序.函数等等在编程语言中的一些基 本特性,可以让你的CSS更加简洁.适应性更强

Sass基础语法

Sass是CSS3语言的扩展,在CSS的基础之上添加了新特性和语法,能省事地写出更好的样式表.Sass引擎是基于Ruby的. 导入Sass文件: @import "colors" //colors.scss 注释: //这种注释不会出现在生成的css文件中 /*这种注释内容会出现在css文件中,当当出现在原生CSS不允许的未知,则这些注释会被抹掉*/ 变量>> -->变量声明 //注意:变量中下划线和中划线表示同一个变量$flower-color:#abcdef; /

sass、less和stylus的安装使用和入门实践

刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用css预处理器来合作,是一种很痛苦,即使不痛苦那也是需要花费非常多的时间来协调合作上的.对于预处 理器的态度,目前是本着学习新技术和推动css向前进的思想来学习新玩意.下面这篇文章来自w3cplus,这是一篇非常强大的文章,私以为互联网上介绍这方面知识的就属这篇文章是鼻祖了. 经过了这篇文章的学习,我

【Sass初级】开始使用Sass和Compass

转自:http://www.w3cplus.com/preprocessor/beginner/getting-started-with-sass-and-compass.html 如果你的朋友.同事或网友有跟你说过Sass或者Compass,或者两者,那太棒了.现在怎么办?在这篇初学者指南中,我首先带领大家使用Sass和Compass.我将告诉大家如何完成安装和创建一个测试项目.怎么使用Sass编译CSS,甚至还会告诉大家有关于Sass中的"mixin". 安装Sass和Compas

Sass学习笔记(三)

一.Sass的控制命令 二.Sass的函数功能 sass中除了可以定义变量,还自备了一系列函数功能,主要包括:字符串函数.数字函数.列表函数.颜色函数.Instrospection函数.三元函数等.当然,sass中也有自定义函数. 其中,最常使用的有:字符串函数.数字函数.列表函数.颜色函数. Map:Sass的map常常被称为数据地图,也有人称为数组,总是以 key:value 成对的出现,但其更像是一个 JSON 数据. 颜色函数:在Sass的官方文档中,Sass的颜色函数从大方面主要分为

09-移动端开发教程-Sass入门

1. 引言 CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量.函数.循环.分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CSS编程的扩展语言(CSS4也可以期待),有了像Sass这种预处理语言后,CSS的编程不再局限在枚举属性了,可以有更广阔的舞台. 2. Sass的原理 Sass本质就是在CSS的语法的基础上增加了自定义的变量.循环.分支.函数.mixin.继承.运算等功能,让CSS编程变得异常强大. 当然浏览器是不认识Sass语法.开发人员写完