写点什么

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:542341
用户头像

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

关注

评论

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

List 如何一边遍历一边删除

Bruce Duan

List删除元素

POI内存溢出故障排查

Season

JVM POI jvm调优

读《我们为什么要去火星》随笔

Jackchang234987

产品 人生 读书 随笔杂谈

BIGO技术:全球时钟同步服务建设

InfoQ_3597a20b53cc

互联网

SpreadJS 纯前端表格控件应用案例:雷鸟365在线文档系统

葡萄城技术团队

大前端 SpreadJS 在线文档

性能优化

独孤魂

揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇

vivo互联网技术

vue.js 中台 Vue 业务中台

架构师Week7作业2

Nan Jiang

【架构训练 Week07 作业】

Rex

B站新一代golang规则引擎的设计与实现

calo

B站 高并发 AST 规则引擎 Go 语言

信创舆情一线--两部门发文加强对数字货币等新型权益的保护

统小信uos

22种超全用户触点采集,易观方舟SDK又更新了

易观大数据

程序设计的一种思路:DDD

再见小飞侠

方法论 DDD 软件设计

云上自动化 vs 云上编排

华为云开发者联盟

云计算 云原生 云服务 云主机 华为云

余生很贵,请别浪费

程一初

Python

多云架构下,JAVA微服务技术选型实例解析

华为云开发者联盟

Java 开源 微服务 云服务

眼见为实,华为鲲鹏架构服务器生态大揭秘

华为云开发者联盟

华为 鲲鹏920 服务器 云服务 华为云

PromiseKit 源码阅读

fuyoufang

压测工具试验

独孤魂

Redis系列(六):你说要看Redis线程模型?安排

z小赵

redis 高并发

1. 初识Jackson -- 世界上最好的JSON库

YourBatman

json Jackson Fastjson

性能优化概述

superman

Python Kafka 报错:ImportError: cannot import name 'KafkaConsumer'

BigYoung

Python kafka importerror 报错

Docker网络学习第四篇-Namespace通信实战

Lazy

Docker Linux 网络

四十个鹏城春夏,一场数字繁花

脑极体

GitHub宣布已将所有代码永久封存于北极地底1000年!网友炸锅了:我写的bug终于能流传永世了!

程序员生活志

GitHub 程序员

我的 20 条工作原则

霍太稳@极客邦科技

成长 知识管理 职场成长

干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动

华为云开发者联盟

人工智能 物联网 IoT 智能设备 华为云

阿里取消周报,打击低效加班!HR透露6大原因!

程序员生活志

阿里 周报

架构师Week7作业1

Nan Jiang

如何优雅的实现一个过滤器

废材姑娘

spring

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