为了账号安全,请及时绑定邮箱和手机立即绑定
  • [Sass]嵌套-属性嵌套 Sass 中还提供属性嵌套,CSS 有一些属性前缀相同,只是后缀不一样,比如:border-top/border-right,与这个类似的还有 margin、padding、font 等属性。假设你的样式中用到了: .box { border-top: 1px solid red; border-bottom: 1px solid green; } 在 Sass 中我们可以这样写: .box { border: { top: 1px solid red; bottom: 1px solid green; } }
    查看全部
  • [Sass]嵌套-选择器嵌套 Sass 中还提供了选择器嵌套功能,但这也并不意味着你在 Sass 中的嵌套是无节制的,因为你嵌套的层级越深,编译出来的 CSS 代码的选择器层级将越深,这往往是大家不愿意看到的一点。这个特性现在正被众多开发者滥用。 选择器嵌套为样式表的作者提供了一个通过局部选择器相互嵌套实现全局选择的方法,Sass 的嵌套分为三种: 选择器嵌套 属性嵌套 伪类嵌套 1、选择器嵌套 假设我们有一段这样的结构: <header> <nav> <a href=“##”>Home</a> <a href=“##”>About</a> <a href=“##”>Blog</a> </nav> <header> 想选中 header 中的 a 标签,在写 CSS 会这样写: nav a { color:red; } header nav a { color:green; } 那么在 Sass 中,就可以使用选择器的嵌套来实现: nav { a { color: red; header & { color:green; } } }
    查看全部
  • 什么时候声明变量? 我的建议,创建变量只适用于感觉确有必要的情况下。不要为了某些骇客行为而声明新变量,这丝毫没有作用。只有满足所有下述标准时方可创建新变量: 该值至少重复出现了两次; 该值至少可能会被更新一次; 该值所有的表现都与变量有关(非巧合)。 基本上,没有理由声明一个永远不需要更新或者只在单一地方使用变量。 温馨小提示:您在学习 sass 时,除了在我们网页上可以做练习,还有一个便利在线编辑器网址如下: http://sassmeister.com/
    查看全部
  • [Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变。直到最近,规则集和其他范围内声明变量的作用域才默认为本地。如果已经存在同名的全局变量,从 3.4 版本开始,Sass 已经可以正确处理作用域的概念,并通过创建一个新的局部变量来代替。 全局变量与局部变量 先来看一下代码例子: //SCSS $color: orange !default;//定义全局变量(在选择器、函数、混合宏...的外面定义的变量为全局变量) .block { color: $color;//调用全局变量 } em { $color: red;//定义局部变量 a { color: $color;//调用局部变量 } } span { color: $color;//调用全局变量 } css 的结果: //CSS .block { color: orange; } em a { color: red; } span { color: orange; } 上面的示例演示可以得知,在元素内部定义的变量不会影响其他元素。如此可以简单的理解成,全局变量就是定义在元素外面的变量,如下代码: $color:orange !default; $color 就是一个全局变量,而定义在元素内部的变量,比如 $color:red; 是一个局部变量。 除此之外,Sass 现在还提供一个 !global 参数。!global 和 !default 对于定义变量都是很有帮助的。我们之后将会详细介绍这两个参数的使用以及其功能。 全局变量的影子 当在局部范围(选择器内、函数内、混合宏内...)声明一个已经存在于全局范围内的变量时,局部变量就成为了全局变量的影子。基本上,局部变量只会在局部范围内覆盖全局变量。 上面例子中的 em 选择器内的变量 $color 就是一个全局变量的影子。 //SCSS $color: orange !default;//定义全局变量 .block { color: $color;//调用全局变量 } em { $color: red;//定义局部变量(全局变量 $color 的影子) a { color: $color;//调用局部变量 } }
    查看全部
  • [Sass]变量的调用 在 Sass 中声明了变量之后,就可以在需要的地方调用变量。调用变量的方法也非常的简单。 比如在定义了变量 $brand-primary : darken(#428bca, 6.5%) !default; // #337ab7 $btn-primary-color: #fff !default; $btn-primary-bg : $brand-primary !default; $btn-primary-border : darken($btn-primary-bg, 5%) !default; 在按钮 button 中调用,可以按下面的方式调用 .btn-primary { background-color: $btn-primary-bg; color: $btn-primary-color; border: 1px solid $btn-primary-border; } 编译出来的CSS: .btn-primary { background-color: #337ab7; color: #fff; border: 1px solid #2e6da4; }
    查看全部
  • [Sass]普通变量与默认变量 普通变量 定义之后可以在全局范围内使用。 $fontSize: 12px; body{ font-size:$fontSize; } 编译后的css代码: body{ font-size:12px; } 默认变量 sass 的默认变量仅需要在值后面加上 !default 即可。 $baseLineHeight:1.5 !default; body{ line-height: $baseLineHeight; } 编译后的css代码: body{ line-height:1.5; } sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可。 $baseLineHeight: 2; $baseLineHeight: 1.5 !default; body{ line-height: $baseLineHeight; } 编译后的css代码: body{ line-height:2; } 可以看出现在编译后的 line-height 为 2,而不是我们默认的 1.5。默认变量的价值在进行组件化开发的时候会非常有用。
    查看全部
  • Sass 的变量包括三个部分: 声明变量的符号“$” 变量名称 赋予变量的值
    查看全部
    0 采集 收起 来源:[Sass]声明变量

    2016-11-21

  • 其实伪类嵌套和属性嵌套非常类似,只不过他需要借助`&`符号一起配合使用。我们就拿经典的“clearfix”为例吧: .clearfix{ &:before, &:after { content:""; display: table; } &:after { clear:both; overflow: hidden; } } 编译出来的 CSS: clearfix:before, .clearfix:after { content: ""; display: table; } .clearfix:after { clear: both; overflow: hidden; } 避免选择器嵌套: 选择器嵌套最大的问题是将使最终的代码难以阅读。开发者需要花费巨大精力计算不同缩进级别下的选择器具体的表现效果。 选择器越具体则声明语句越冗长,而且对最近选择器的引用(&)也越频繁。在某些时候,出现混淆选择器路径和探索下一级选择器的错误率很高,这非常不值得。 为了防止此类情况,我们应该尽可能避免选择器嵌套。然而,显然只有少数情况适应这一措施。
    查看全部
  • 1.在 chrome://flags/ 中启用 Developer Tools Experiments (开发者工具实验) 2.在 Developer tools 设置 Experiments 选项下开启File system folders in Sources Panel,再重启Developer tools,就会多出Workspace选项。 3.在Workspace中把你的资源目录添加到File systems即可,如果CSS,JS链的是URL可以使用Mappings来设置路由(注意:结尾千万不要加上\,他逻辑只判断了是否以/结尾,否则就会变成path\/,略坑啊~~) 4. 需要安装2个插接件:grunt-contrib-watch、connect-livereload ⑴执行命令:npm install --save-dev grunt-contrib-watch connect-livereload ⑵. 安装浏览器插件:Chrome LiveReload ⑶. 配置一个Web服务器(IIS/Apache),LiveReload需要在本地服务器环境下运行(对file:///文件路径支持并不是很好),需要127.0.0.1:8080这种的。 ⑷. 修改Gruntfile.js文件: watch: { css: { files: '**/*.scss', tasks: ['sass'], options: { livereload: true } } }
    查看全部
    0 采集 收起 来源:Sass 的调试

    2016-11-21

  • [Sass]值列表 所谓值列表 (lists) 是指 Sass 如何处理 CSS 中: margin: 10px 15px 0 0 或者: font-face: Helvetica, Arial, sans-serif 像上面这样通过空格或者逗号分隔的一系列的值。 事实上,独立的值也被视为值列表——只包含一个值的值列表。 Sass列表函数(Sass list functions)赋予了值列表更多功能(Sass进级会有讲解): nth函数(nth function) 可以直接访问值列表中的某一项; join函数(join function) 可以将多个值列表连结在一起; append函数(append function) 可以在值列表中添加值; @each规则(@each rule) 则能够给值列表中的每个项目添加样式。 值列表中可以再包含值列表,比如 1px 2px, 5px 6px 是包含 1px 2px 与 5px 6px 两个值列表的值列表。如果内外两层值列表使用相同的分隔方式,要用圆括号包裹内层,所以也可以写成 (1px 2px) (5px 6px)。当值列表被编译为 CSS 时,Sass 不会添加任何圆括号,因为 CSS 不允许这样做。(1px 2px) (5px 6px)与 1px 2px 5px 6px 在编译后的 CSS 文件中是一样的,但是它们在 Sass 文件中却有不同的意义,前者是包含两个值列表的值列表,而后者是包含四个值的值列表。 可以用 () 表示空的列表,这样不可以直接编译成 CSS,比如编译 font-family: ()时,Sass 将会报错。如果值列表中包含空的值列表或空值,编译时将清除空值,比如 1px 2px () 3px 或 1px 2px null 3px。
    查看全部
    0 采集 收起 来源:[Sass]值列表

    2016-11-20

  • [Sass]数据类型 Sass 和 JavaScript 语言类似,也具有自己的数据类型,在 Sass 中包含以下几种数据类型: 数字: 如,1、 2、 13、 10px; 字符串:有引号字符串或无引号字符串,如,"foo"、 'bar'、 baz; 颜色:如,blue、 #04a3f9、 rgba(255,0,0,0.5); 布尔型:如,true、 false; 空值:如,null; 值列表:用空格或者逗号分开,如,1.5em 1em 0 2em 、 Helvetica, Arial, sans-serif。 SassScript 也支持其他 CSS 属性值(property value),比如 Unicode 范围,或 !important 声明。然而,Sass 不会特殊对待这些属性值,一律视为无引号字符串 (unquoted strings)。 后两个小节详细讲解字符串和值列表数据类型,其它类型与JavaScript中的用法一致。
    查看全部
    0 采集 收起 来源:[Sass]数据类型

    2018-03-22

  • [Sass]注释 注释对于一名程序员来说,是极其重要,良好的注释能帮助自己或者别人阅读源码。在 Sass 中注释有两种方式,我暂且将其命名为: 1、类似 CSS 的注释方式,使用 ”/* ”开头,结属使用 ”*/ ” 2、类似 JavaScript 的注释方式,使用“//” 两者区别,前者会在编译出来的 CSS 显示,后者在编译出来的 CSS 中不会显示,来看一个示例: //定义一个占位符 %mt5 { margin-top: 5px; } /*调用一个占位符*/ .box { @extend %mt5; } 编译出来的CSS .box { margin-top: 5px; } /*调用一个占位符*/
    查看全部
    0 采集 收起 来源:[Sass]注释

    2016-11-20

  • 使用 CSS 预处理器语言的一个主要原因是想使用 Sass 获得一个更好的结构体系。比如说你想写更干净的、高效的和面向对象的 CSS。Sass 中的插值(Interpolation)就是重要的一部分。让我们看一下下面的例子: $properties: (margin, padding); @mixin set-value($side, $value) { @each $prop in $properties { #{$prop}-#{$side}: $value; } } .login-box { @include set-value(top, 14px); } @each...in...语句会在《Sass进级篇》中 1-6 @each循环 中讲解。 它可以让变量和属性工作的很完美,上面的代码编译成 CSS: .login-box { margin-top: 14px; padding-top: 14px; } 这是 Sass 插值中一个简单的实例。当你想设置属性值的时候你可以使用字符串插入进来。另一个有用的用法是构建一个选择器。可以这样使用: @mixin generate-sizes($class, $small, $medium, $big) { .#{$class}-small { font-size: $small; } .#{$class}-medium { font-size: $medium; } .#{$class}-big { font-size: $big; } } @include generate-sizes("header-text", 12px, 20px, 40px); 编译出来的 CSS: .header-text-small { font-size: 12px; } .header-text-medium { font-size: 20px; } .header-text-big { font-size: 40px; }
    查看全部
    0 采集 收起 来源:[Sass]插值#{}

    2018-03-22

  • [Sass]混合宏 VS 继承 VS 占位符 初学者都常常纠结于这个问题“什么时候用混合宏,什么时候用继承,什么时候使用占位符?”其实他们各有各的优点与缺点,先来看看他们使用效果: a) Sass 中的混合宏使用 举例代码见右侧 2-24 行 编译出来的 CSS 见右侧结果窗口。 总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同的样式代码,如果在样式文件中调用同一个混合宏,会产生多个对应的样式代码,造成代码的冗余,这也是 CSSer 无法忍受的一件事情。不过他并不是一无事处,他可以传参数。 个人建议:如果你的代码块中涉及到变量,建议使用混合宏来创建相同的代码块。 b) Sass 中继承 同样的,将上面代码中的混合宏,使用类名来表示,然后通过继承来调用: 代码见右侧 26-48 行 总结:使用继承后,编译出来的 CSS 会将使用继承的代码块合并到一起,通过组合选择器的方式向大家展现,比如 .mt, .block, .block span, .header, .header span。这样编译出来的代码相对于混合宏来说要干净的多,也是 CSSer 期望看到。但是他不能传变量参数。 个人建议:如果你的代码块不需要专任何变量参数,而且有一个基类已在文件中存在,那么建议使用 Sass 的继承。 c) 占位符 最后来看占位符,将上面代码中的基类 .mt 换成 Sass 的占位符格式: 代码见右侧 50-72 行 总结:编译出来的 CSS 代码和使用继承基本上是相同,只是不会在代码中生成占位符 mt 的选择器。那么占位符和继承的主要区别的,“占位符是独立定义,不调用的时候是不会在 CSS 中产生任何代码;继承是首先有一个基类存在,不管调用与不调用,基类的样式都将会出现在编译出来的 CSS 代码中。” 来看一个表格:
    查看全部
  • [Sass]占位符 %placeholder Sass 中的占位符 %placeholder 功能是一个很强大,很实用的一个功能,这也是我非常喜欢的功能。他可以取代以前 CSS 中的基类造成的代码冗余的情形。因为 %placeholder 声明的代码,如果不被 @extend 调用的话,不会产生任何代码。来看一个演示: %mt5 { margin-top: 5px; } %pt5{ padding-top: 5px; } 这段代码没有被 @extend 调用,他并没有产生任何代码块,只是静静的躺在你的某个 SCSS 文件中。只有通过 @extend 调用才会产生代码: //SCSS %mt5 { margin-top: 5px; } %pt5{ padding-top: 5px; } .btn { @extend %mt5; @extend %pt5; } .block { @extend %mt5; span { @extend %pt5; } } 编译出来的CSS //CSS .btn, .block { margin-top: 5px; } .btn, .block span { padding-top: 5px; } 从编译出来的 CSS 代码可以看出,通过 @extend 调用的占位符,编译出来的代码会将相同的代码合并在一起。这也是我们希望看到的效果,也让你的代码变得更为干净。
    查看全部

举报

0/150
提交
取消
课程须知
对CSS有一定的了解,才可以更好的学习本课程。
老师告诉你能学到什么?
1、Sass是什么?他有什么功能? 2、Sass需要什么样的环境才能顺利运行 3、Sass语法格式和CSS有什么不一样? 4、Sass要如何编译 5、你要怎么调试Sass 6、Sass有哪些基本特性 7、Sass的控制命令能做些什么事情 8、Sass有哪些数据类型 9、Sass的函数功能

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!