写点什么

Sass 3 兼容 CSS3,支持选择器继承

  • 2010-05-25
  • 本文字数:1110 字

    阅读完需:约 4 分钟

当 InfoQ 上一次在网站上发表 Sass 样式表语言访谈的时候,项目维护者 Nathan Weizenbaum 就已经承诺未来的 Sass 将会在当前语法的基础上增加对类 CSS 的括号语法的支持。现在,Haml/Sass 3已经基本完成,预期发布时间是五月十号,其主要特性便是在 Sass 语法上的改变:

毫无疑问第三版的焦点将会集中在 Sass 上。但是我们也会将部分精力放在 Haml 上。不过考虑到兼容性,当前我们肯定会继续使用代码稳定的 2.4 版。

新 Sass 语法叫做 SCSS(Sassy CSS),它是 CSS3 的一个超集

这就是说它 100% 兼容 CSS3:每一个有效的 CSS3 文件也是有效的 SCSS 文件。不仅如此,它还支持我们能够找到的所有扩展,甚至包括一些非标准语法,例如微软的 expression() 函数和 filter 属性。

Sass 使用变量、操作、嵌套选择器(selector)和 Mixin 来增强样式表,这些基本功能在新版本没有任何改变。 Sass 修改后的语法希望能够尽量减少和 CSS 语法的差异,以吸引更多的用户使用。修改语法的另一个好处是可以使得 CSS 工具更容易支持 Sass。 Sass 的旧有语法将会继续存在并且能够为旧版本用户提供良好兼容性。但是,将 SCSS 和 CSS3 强制兼容付出的一个代价就是不得不废弃 Sass 的一些句法特性:变量前缀的“!”号(现在使用的是“$”号)以及赋值时候的“=”号(现在是使用“:”号)。处理引号中用于显示的字符串的语法也改变了。

另外一个 Sass 的新特性是 @extend 指令,这个指令允许一个选择器继承任意选择器的所有样式

设计网页的时候经常会遇到这样的情况:一个类可能除了自己的样式外,还需要其他类的所有样式。处理这种情况最常用的办法是在 HTML 中使用一个泛化的类和一个特化的类。

不幸的是,这就意味着我们不得不一直牢记同时使用(例如).error 和.seriousError。这将会导致沉重的维护负担,诡异的 bug 以及无效样式。

@extend 是通过插入扩展选择器(例如.seriousError)发挥作用的,无论这个扩展选择器(例如.error)在样式表的何处出现。

迄今为止, xCSS 是所有 CSS 编译器中对选择器完全继承特性支持最好的。但是,完全继承中最重要的一块仍然不被 xCSS 支持:.seriousError 只能选择器恰好是.error 的时候才能继承,而选择器是.error.instrusion 或者.admin.error 则无法继承。

Sass 3 同样也支持源文件在 CSS、Sass 和 SCSS 之间相互转换,并且支持将 Sass 2 语法转换为 Sass 3 语法。

Sass::Plugin 是一个在 Sass 文件更改时候自动更新 CSS 文件的工具,在新版本中性能会做出巨大提升。不仅如此,使用–watch 参数,在 sass 命令行中可以启用自动升级功能。

Haml 的改变包括 HTML5 自定义数据属性的生成和多行语法的简化。

查看英文原文: Sass 3 Delivers CSS Compatibility, Selector Inheritance

2010-05-25 20:542329
用户头像

发布了 90 篇内容, 共 39.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

python学习笔记:day1——python入门了解

秦时明月

Python编程

你是一名技术管理者还是项目管理者?

菜根老谭

项目管理 技术管理

linux之dd命令

入门小站

Linux

网络攻防学习笔记 Day143

穿过生命散发芬芳

9月日更 虚拟化技术

高可用延迟队列设计与实现

万俊峰Kevin

微服务 延迟队列 microservice Go 语言 定时队列

架构实战营模块8作业

zlz

中秋晴朗夜,我们与星月相见

脑极体

产品分析:如何给出解决方案?

石云升

产品经理 产品思维 9月日更

TCP/IP参考模型与标准协议

Regan Yue

TCP/IP 9月日更

JVM启动参数学习笔记三

风翱

JVM 9月日更

模块四作业

Geek_fc100d

「架构实战营」

SpringMVC源码分析-HandlerAdapter(2)-RequestMappingHandlerAdapter的初始化

Brave

源码 springmvc 9月日更

架构实战营 模块八 作业

脉醉

#架构实战营

中秋晴朗夜,我们与星月相见

白洞计划

【LeetCode】最后一个单词的长度Java题解

Albert

算法 LeetCode 9月日更

JavaScript进阶(六)继承

Augus

JavaScript 9月日更

在线SQL(Insert/Update)语句转JSON工具

入门小站

工具

架构训练营模块八作业

喻高咏        

架构训练营

【架构设计模块八】:设计消息队列存储消息数据的 MySQL 表格

Ryoma

架构实战营-模块八作业

老实人Honey

架构实战营-模块八作业

以吻封笺

机场做好这道题,才能万户千家共婵娟

脑极体

Elasticsearch 源码学习(1)源码编译调试

Se7en

模块8作业

Geek_ywh40v

手机测试岗位常见面试问题汇总(持续更新中)

IT蜗壳-Tango

9月日更

模块八作业

河马先生

架构实战营

数据仓库的数据从哪来?

奔向架构师

数据仓库 9月日更

zookeeper迁移实践

小江

zookeeper 迁移数据

架构训练营-模块八作业

hello

架构训练营

Ember.js 项目开发之 Ember Data

devpoint

ember.js 9月日更

技术圈的【多肉小达人】,一篇文章你就能做到

梦想橡皮擦

9月日更

Sass 3兼容CSS3,支持选择器继承_Ruby_Paul Blair_InfoQ精选文章