语法嵌套规则

选择器嵌套

例如有这么一段css,正常CSS的写法

.container{width:1200px; margin: 0 auto;}
.container .header{height: 90px; line-height: 90px;}
.container .header .log{width:100px; height:60px;}
.container .center{height: 600px; background-color: #F00;}
.container .footer{font-size: 16px;text-align: center;}

改成写SASS的方法

.container{
    width: 1200px;
    margin: 0 auto;
    .header{
        height: 90px; line-height: 90px;
        .log{
            width:100px; height:60px;
        }
    }
    .center{
        height: 600px; background-color: #F00;
    }
    .footer{
        font-size: 16px;text-align: center;
    }
}

最终生成的格式:

避免了重复输入父选择器,复杂的 CSS 结构更易于管理

父选择器&

​ 在嵌套 CSS 规则时,有时也需要直接使用嵌套外层的父选择器,例如,当给某个元素设定 hover 样式时,或者当 body 元素有某个 classname 时,可以用 & 代表嵌套规则外层的父选择器。

​ 例如有这么一段样式:

.container{width: 1200px;margin: 0 auto;}
.container a{color: #333;}
.container a:hover{text-decoration: underline;color: #F00;}
.container .top{border:1px #f2f2f2 solid;}
.container .top-left{float: left; width: 200px;}

​ 用sass编写

.container{
    width: 1200px;
    margin: 0 auto;
    a{
        color: #333;
        &:hover{
            text-decoration: underline;color: #F00;
        }
    }
    .top{
        border:1px #f2f2f2 solid;
        &-left{
            float: left; width: 200px;
        }
    }
}

属性嵌套

​ 有些 CSS 属性遵循相同的命名空间 (namespace),比如 font-family, font-size, font-weight 都以 font 作为属性的命名空间。为了便于管理这样的属性,同时也为了避免了重复输入,Sass 允许将属性嵌套在命名空间中

​ 例如:

.container a{color: #333;font-size: 14px;font-family:sans-serif;font-weight: bold;}

​ 用SASS的方式写

.container{
    a{
        color: #333;
        font: {
            size: 14px;
            family:sans-serif;
            weight:bold;
        }
    }
}

注意font:后面要加一个空格

sass注释

Sass支持两种注释

  • 标准的css多行注释 /* ... */ 会编译到.css文件中
  • 单行注释 // 不会编译到.css文件

例如:

$version : "1.0.0";
/*
    首页相关css
    version:#{$version}
 */
.container{
    width: 1200px;
    .swiper{
        // 网站幻灯片相关css
        width: 100%;
        height: 260px;
        .dot{
            /*
                幻灯片指示点
                默认白色
                选中时蓝色
            */
            width: 10px;
            height: 10px;
            border-radius: 50%;
            background-color: #FFF;
            &.active{
                background-color: blue;
            }
        }
    }
}

编译后:

@charset "UTF-8";
/*  首页相关css version:1.0.0 */
.container { width: 1200px; } .container .swiper { width: 100%; height: 260px; } .container .swiper .dot { /*  幻灯片指示点 默认白色 选中时蓝色 */ width: 10px; height: 10px; border-radius: 50%; background-color: #FFF; } .container .swiper .dot.active { background-color: blue; }
/*# sourceMappingURL=index.css.map */

sass语法嵌套规则与注释讲解的更多相关文章

  1. css预处理器scss/sass语法以及使用

    scss scss在css基础语法上面增加了变量 (variables).嵌套 (nested rules).混合 (mixins).导入 (inline imports) 等高级功能,使用scss可 ...

  2. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  3. 1-3 Sass 语法、编译、调试

    Sass 语法格式 这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格.另外其不带有任何的分号和大括号.常常把这种格式称为 Sa ...

  4. SASS语法备忘

    sass语法 关于sass 3.3.0更新说明——3.3.0 sublime相关插件为:scss语法高亮,sass语法高亮,编译,保存即编译,格式化 文件后缀名 sass有两种后缀名文件:一种后缀名为 ...

  5. Sass 语法格式及编译

    一.sass语法格式 这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格.另外其不带有任何的分号和大括号.常常把这种格式称为 S ...

  6. 项目开发---使用node.js中sass语法

    前言:本文中所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. 一.sass插件的安装: gulp-sass-china //  ...

  7. SASS - 语法

    SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...

  8. 第2-4-3章 规则引擎Drools基础语法-业务规则管理系统-组件化-中台

    目录 4. Drools基础语法 4.1 规则文件构成 4.2 规则体语法结构 4.3 注释 4.4 Pattern模式匹配 4.5 比较操作符 4.5.1 语法 4.5.2 操作步骤 4.6 执行指 ...

  9. post-css/less/sass样式嵌套与命令之"&"符号—BEM

    看了< less 的 & 详解 https://www.jianshu.com/p/127b0974cfc3>,对于此文再做一别补充 常见用法: 直接嵌套写法 .a{   colo ...

  10. XHTML标签的嵌套规则分析

    在 XHTML 的语言里,我们都知道:ul 标签包含着 li.dl 标签包含着 dt 和 dd——这些固定标签的嵌套规则十分明确.但是,还有许多标签是独立的,它们没有被捆绑在一起,比如 h1.div. ...

随机推荐

  1. Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本

    前言: 最近的 Taurus.MVC 版本,对性能这一块有了不少优化,因此准备进行一下压测,来测试并记录一下 Taurus.MVC 框架的性能,以便后续持续优化改进. 今天先压测 .NET Core  ...

  2. docker 应用篇————日志、元数据、进程查看[五]

    前言 简单介绍一下dokcer的日志.元数据.进程查看 正文 查看日志命令: docker logs -f -t --tail 10 32ae 我这里的一个日志就是: 这个一直输出hello word ...

  3. 接口API用例自动转locust测试用例

    做接口测试是必要的,写完接口测试用例,再写locust压测脚本,其实差异不大: 写个简单的py,把接口测试脚本转为locust压测脚本,本例只是简单的示范: 原接口校验脚本: 1 # -*- codi ...

  4. web常见的攻击方式有哪些?如何防御?

    一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要 ...

  5. CF-938(C-E)

    CF-938 C 没啥好分析的,就记录一下我因为没有清空s[n+1].上取整写成了下取整卡了一个多小时(╬▔皿▔)╯ const int N=2e5+5; int a[N],p[N],s[N]; vo ...

  6. asyncio async和await列表推导式实现异步高并发执行

    import asyncio import random import time # 需求:有一个crontab调度器,每隔1秒,拉起1个job,要求这些job可以并发爬取网页 async def c ...

  7. 力扣1126(MySQL)-查询活跃业务(中等)

    题目: 事件表:Events 此表的主键是 (business_id, event_type). 表中的每一行记录了某种类型的事件在某些业务中多次发生的信息. 问题写一段 SQL 来查询所有活跃的业务 ...

  8. 力扣915(java&python)-分割数组(中等)

    题目: 给定一个数组 nums ,将其划分为两个连续子数组 left 和 right, 使得: left 中的每个元素都小于或等于 right 中的每个元素.left 和 right 都是非空的.le ...

  9. 使用AnalyticDB轻松实现以图搜图和人脸检索

    1. 背景 以图搜图在生活中有着广泛的应用, 当我们在电视上看到有人穿着一件美丽的裙子或者帅气的球鞋也想拥有时, 我们可以拍张照片然后打开淘宝然后上传照片就可以快速的找到这个商品. 我们看到一张电影截 ...

  10. [Go] golang 两个数组 list 的合并方式

    s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...