写点什么

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

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

关注

评论

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

BNBDao三三复制公排dapp系统开发

开发微hkkf5566

使用Vmware创建Centos7虚拟机(安装和配置网络环境、xshell连接、防火墙、yum仓库、磁盘挂载、重启命令)

A-刘晨阳

Linux 运维 vmware 11月月更

JavaScript刷LeetCode拿offer-双指针技巧

Geek_07a724

JavaScript LeetCode

融云通信云服务,助力医疗招聘平台构建行业护城河

融云 RongCloud

通信 医疗 融云

TOGAF架构框架3-ADM架构开发技术

Marvin

架构 TOGAF ADM架构开发方法

TOGAF企业架构框架4-内容框架

Marvin

架构 TOGAF 企业架构框架 内容框架

Baklib经验分享 | 一些搭建帮助中心的攻略

Baklib

帮助中心

Baklib知识分享|企业知识管理难,该如何解决?

Baklib

真正的高效能RPC框架Focus

dinstone

json RPC 高性能 protobuf 跨语言

发布自己的第一个npm包

格斗家不爱在外太空沉思

npm nodejs 11月月更

Go语言入门11—接口

良猿

Go golang 后端 11月月更

云渲染是CG的最后一道工序,四个特性让你的渲染更高效

Finovy Cloud

云渲染 云渲染农场

Nginx配置中root和alias分不清?本文3分钟帮你解惑!

wljslmz

nginx 服务器 root 11月月更 alias

软件测试面试真题 | 讲讲 OSI 七层模型,每层模型具体干嘛的?

测试人

Linux常用基础命令(巨全)

A-刘晨阳

Linux 运维 11月月更 基础命令

前端工程师leetcode算法面试必备-二分搜索算法(下)

js2030code

JavaScript LeetCode

云原生生态 我们选择了哪些

Rayzh

Docker Kubernetes, 云原生, eBPF

Java | IO流介绍

陌上

Java 编程 11月月更

基于 Grafana LGTM 可观测性平台的快速构建

Grafana 爱好者

可观测性 Observability

JavaScript刷LeetCode拿offer-滑动窗口

Geek_07a724

JavaScript LeetCode

FFmpeg-ffplay播放器分析(1).md

Changing Lin

音视频 ffmpeg 安卓

如何写成高性能的代码(三):巧用稀疏矩阵节省内存占用

葡萄城技术团队

前端 稀疏矩阵

物联网数据分析(上篇)——业务系统架构类

阿里云AIoT

阿里云 数据分析 物联网 业务架构 数据存储

一个非常常见的问题:var、let和const

肥晨

11月月更 js6 js基础

Vue基础知识整理【建议收藏】

何极光

Vue 基础

JavaScript刷LeetCode拿offer-双指针技巧Medium篇

Geek_07a724

JavaScript LeetCode

透过关键基础设施安全事件谈SBOM

安势信息

Gartner SCA 软件物料清单 SBOM 清源CleanSource SCA

云栖大会,一场边缘云计算的「超前瞻」之约

阿里云CloudImagine

云栖大会 边缘云

如何构建并提高自己的核心竞争力?

老张

核心竞争力

前端工程师leetcode算法面试必备-二分搜索算法(上)

js2030code

JavaScript LeetCode

前端工程师leetcode算法面试必备-二分搜索算法(中)

js2030code

JavaScript LeetCode

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