/*注意:定义的变量若是没有使用则不会编译到css文件中。*/
/*1)sass的局部变量*/
$font:14px;//定义
$font:12px !default; //没有default时是重新赋值,有了它则先取12再重新赋值为14
$maps:(color:black,border-color: blue);//maps定义多值变量
$className:main;//定义类名(此处修改了类名则使用该类名的地方也会相应改变)
body{
/*局部变量*/
$color:red;
/*2)全局变量*/
$color: yellow !global;
color: $color;
}
footer{
font-size: $font;
color: $color;
background-color: map-get($maps,color);
border-color: map-get($maps,border-color);
}

/*3)使用定义好的类*/
.#{$className}{
color: map-get($maps,color);
}
/*4)中横线和下划线的效果一致*/

$text-info:blue;
$text_info:green;
h1{
color: $text-info; //结果为green,因为重新赋值了
}

/*5)样式导入:@import 文件名
1、部分文件(约定:文件名以下划线开头,不会编译成对应的css文件)
2、嵌套导入
3、css原生导入(以.css结尾;导入地址是url:http://xx/css.css;
文件名是css的url()值)
4、scss导入:@import scss文件名(可以不写后缀名或下划线)
*/

/*6)样式书写步骤
1、根据布局html文件的布局来书写样式嵌套的层级关系如:
body{
header{
.logo{
img{}
}
.nav{

}
}
}

*/

/*属性嵌套*/
body{
footer {
background:{
color: red;
size: 100% 100%;
}
}
a{
color: yellow;
&:hover{
color:blue;
}
span{
color: lightgreen;
}
.content{
color: lightgrey;
}
/*引用父选择器a*/
&.box{
color: lightpink;
}
@at-root .container{
width: 1920px;
}
/*跳出嵌套后的效果不再是body和a下面的了,而是独立出来的一个选择器

.container {
width: 1920px;
}

*/
}
}
/*属性嵌套编译结果
body footer {
background-color: red;
background-size: 100% 100%;
}
body a {
color: yellow;
}

body a:hover {
color: blue;
}

body a span {
color: lightgreen;
}
body a .content {
color: lightgrey;
}
body a.box {
color: lightpink;
}
*/

/*7)跳出嵌套
@at-root跳出选择器嵌套,不能跳出@media或@support,若要跳出这两种
则需要使用@at-root(without:midia),@at-root(without:support),

语法关键词:@at-root(@at-root(without:rule)常规css);
:all (表所有)
:rule(表常规)
:media(表media)
:support;(表support)

*/

/*跳出media*/
header{

.danger{
color: #f00;
}
.warning{
color: pink;
}
.info{
color: blue;
}

/*未跳出media*/
@meida screen and (max-width: 600px){
@at-root .danger{
color: #f0f;
}
}

/*已跳出midia但是header还在
header .warning {
color: #00f;
}

*/
@media screen and(max-width: 600px){
@at-root(without: media){
.warning{
color: #00f;
}
}
}

/*真正跳出media嵌套
.info {
color: #f00;
}

*/
@media screen and(max-width: 600px){
@at-root(without: media rule){
.info{
color: #f00;
}
}
}

/*使用all也可以跳出所有

.warning{

color:#00f;

}

*/
@media screen and(max-width: 600px){
@at-root(without: media  all){
.warning{
color: #00f;
}
}
}
}

/*实现跳出header,nav下面也有一个text-danger,此时不需要再次跳出,就是跳出了就违背要在nav下的原则了:
.text-danger{
color:#ddd;
}
nav .text-danger{
color:#ccc;
}
*/
@at-root .text-danger{
color: #ddd;
nav &{
color: #ccc;
}
}

}

sass基础—属性嵌套以及跳出嵌套 @at-root的更多相关文章

  1. 基础语法-for循环的嵌套

    基础语法-for循环的嵌套 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环嵌套概述 说白了就是在for循环中再嵌套一层for循环. 二.for循环嵌套案例 1> ...

  2. #WEB安全基础 : HTML/CSS | 0x4.1嵌套列表

    如果你认为列表只有ul和ol那你就错了 我要为你展示新的列表 这次只有一个index.html文件 这是它的效果 以下是它的代码 <html> <head> <title ...

  3. Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域

    函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...

  4. python基础之函数参数、嵌套、返回值、对象、命名空间和作用域

    函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...

  5. sass基础用法

    嵌套: 1.选择器嵌套: 2.属性嵌套; .box {     border-top: 1px solid red;     border-bottom: 1px solid green; } .bo ...

  6. Sass基础语法

    Sass是CSS3语言的扩展,在CSS的基础之上添加了新特性和语法,能省事地写出更好的样式表.Sass引擎是基于Ruby的. 导入Sass文件: @import "colors" ...

  7. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  8. Sass 基础教程

    0. Sass 文件后缀名 sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 scss 文件,这种和我们平时写的 css 文件格式差不多,使用大括号和分 ...

  9. sass基础学习

    2015.6.281.安装ruby2.运行gem安装sass-->gem install sass3.编译命令行sass --watch 文件路径/test.scss:编译后文件路径/test. ...

随机推荐

  1. lcx工具使用

    0x01 为什么要作端口转发? 如果外网服务器,我们直接连接其端口就能进行访问,不需要进行端口转发.所以端口转发常用于穿透防火墙. 0x02 快速使用 前提:你的计算机处于公网,被控制的计算机能访问外 ...

  2. 如何预览Github上的页面

    参考链接:https://www.jianshu.com/p/46ddd926f005

  3. 20165231 2017-2018-2 《Java程序设计》第3周学习总结

    教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制 从类看对象:类定义可以视 ...

  4. wchar_t*转换string

    场景 wchar[]转换string 实现代码 #include "stdafx.h" #include <iostream> #include <windows ...

  5. Linux内存带宽的一些测试笔记【转】

    转自:https://blog.csdn.net/subfate/article/details/40343497 版权声明:本文为迟思堂主人李迟原创文章,版权所有.可随便任意使用(包括学习研究商用) ...

  6. python异步编程模块asyncio学习(二)

    尽管asyncio应用通常作为单线程运行,不过仍被构建为并发应用.由于I/O以及其他外部事件的延迟和中断,每个协程或任务可能按一种不可预知的顺序执行.为了支持安全的并发执行,asyncio包含了thr ...

  7. python3+selenium入门15-执行JavaScript

    有时有些功能需要通过js来执行,比如拖动浏览器的滚动条.通过execute_script()方法可以执行js的代码 window.scrollTo()可以传两个参数,第一个参数是下方滚动条的位置,第二 ...

  8. 【转】Java HashMap的死循环

    问题的症状 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题.后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现 ...

  9. linux快速将磁盘额外空间扩展到某一挂载点

    由于之前在创建用户时,为该用户目录分配的空间只有5G,在后续的开发,存放的东西越来越多,空间眼看就不够用了,网上查了一下,很多都是教我们将其余挂载点分配过多的空间分配到空间不足的挂载点,步骤还不算太复 ...

  10. HBase的replication原理及部署

    一.hbase replication原理 hbase 的复制方式是 master-push 方式,即主集群推的方式,主要是因为每个rs都有自己的WAL. 一个master集群可以复制给多个从集群,复 ...