写点什么

Google Closure Stylesheets 让我们更易于使用 CSS

2011 年 11 月 19 日

Google 已经基于 Apache License 2.0 把 Closure Stylesheets 开源,这种工具属于 Closure Tools 包之内,在处理 CSS 的时候很有用。Closure Stylesheets 是一个 Java 程序,它向 CSS 中添加了变量、函数、条件语句以及混合类型,使得我们更易于处理大型的 CSS 文件。开发者可以使用 Google stylesheets (GSS) 这种工具来生成 web 应用程序或者网站所使用的真正的 CSS 文件。

变量

变量是使用“@def”来定义的。下面的代码示例展示了如何使用变量:

复制代码
@def BG_COLOR rgb(235, 239, 249);<br></br>@def DIALOG_BG_COLOR BG_COLOR;
body {<br></br> background-color: BG_COLOR;<br></br>}<p>.dialog {</p><br></br> background-color: DIALOG_BG_COLOR;<br></br>}

得到的 CSS 如下:

复制代码
body {<br></br> background-color: #ebeff9;<br></br>}<br></br>.dialog {<br></br> background-color: #ebeff9;<br></br>}

函数

Closure Stylesheets 引入了大量数学函数,使用它们你可以对数字型的值——比方说像素——进行以下操作: add()、 sub()、mult()、 div()、 min() 以及 max()。使用这些函数的示例如下:

复制代码
@def LEFT_WIDTH 100px;<br></br>@def LEFT_PADDING 5px;<br></br>@def RIGHT_PADDING 5px;
.content {<br></br> position: absolute;<br></br> margin-left: add(LEFT_PADDING,<br></br> LEFT_WIDTH,<br></br> RIGHT_PADDING,<br></br> px);<br></br>

得到的 CSS 如下所示:

复制代码
.content {<br></br> position: absolute;<br></br> margin-left: 110px;<br></br>}

条件语句

Closure Stylesheets 让我们可以使用 @if、@elseif 和 @else,从而基于某些变量的值来创建条件语句的分支。

混合类型

混合类型是为了重用带有参数的对结构体的声明,如下示例所示:

复制代码
@defmixin size(WIDTH, HEIGHT) {<br></br> width: WIDTH;<br></br> height: HEIGHT;<br></br>}<p>.image {</p><br></br> @mixin size(200px, 300px);<br></br>}

当解决跨浏览器的问题时,混合类型会更有用:

复制代码
@defmixin gradient(POS, HSL1, HSL2, HSL3, COLOR, FALLBACK_COLOR) {<br></br> background-color: FALLBACK_COLOR; /* fallback color if gradients are not supported */<br></br> background-image: -webkit-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* Chrome 10+,Safari 5.1+ */<br></br> /* @alternate */ background-image: -moz-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* FF3.6+ */<br></br> /* @alternate */ background-image: -ms-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* IE10 */<br></br> /* @alternate */ background-image: -o-linear-gradient(POS, hsl(HSL1, HSL2, HSL3), COLOR); /* Opera 11.10+ */<br></br>}<p>.header {</p><br></br> @mixin gradient(top, 0%, 50%, 70%, #cc0000, #f07575);<br></br>}

结果如下:

复制代码
.header {<br></br> background-color: #f07575;<br></br> background-image: -webkit-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000);<br></br> background-image: -moz-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000);<br></br> background-image: -ms-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000);<br></br> background-image: -o-linear-gradient(top,hsl(0%,50%,70%) ,#cc0000);<br></br>}

我们还可以使用 Closure Stylesheets 把多个 CSS 文件合并成一个,以减少代码的规模,它会针对语法执行静态检查,并且知道如何交换左右两边的值(RTL flipping),以及如何对类进行重命名。

Closure Tools 是一组工具,其中包括编译器程序库模板,它原本是Google 为GMail、GDocs 和Maps 内部使用,后来在2009 年开源。我们可以使用它来处理大型JavaScript 应用程序。

查看英文原文: Google Closure Stylesheets Makes It Easier to Work with CSS

2011 年 11 月 19 日 20:292599
用户头像

发布了 340 篇内容, 共 111.5 次阅读, 收获喜欢 2 次。

关注

评论

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

算法有多重要,看字节腾讯等公司面试多重视就行了

小Q

Java 学习 架构 面试 算法

架构师训练营 - 第七周 - 作业一

行者

非线性声学回声如何破解?华为云硬核技术为你解决

华为云开发者社区

算法 音视频 音视频算法

Pulsar Summit Asia 2020 中文专场议题出炉!

Apache Pulsar

大数据 开源 Apache Pulsar

《精进:如何成为一个很厉害的人》阅读心得

Jesse Xing

读书笔记 个人成长 精进

一不小心画了 24 张图剖析计网应用层协议!

cxuan

计算机网络 计算机 协议

不会这些mysql得面试题,那可能说明你要回炉了

小Q

Java MySQL 数据库 学习 面试

搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

yi念之间

《乌合之众——群体心理研究》读书笔记

Jesse Xing

读书笔记 心理学 乌合之众 群体心理学

Java垃圾回收GC概览

Java JVM GC

完美!阿里P8都赞不绝口的世界独一份489页SQL优化笔记

马士兵老师

Java 数据库 程序员 架构师 SQL优化

Redis基础—了解Redis是如何做数据持久化的

云流

数据库 redis 编程 计算机

神经网络之dropout总述

Dreamer

学习

接口测试的时候如何生成随机数据进行测试

测试人生路

接口测试

京东技术中台Flutter实践之路(二)

京东智联云开发者

开源 中台 大前端 Web UI

anyRTC Flutter SDK :全面实现跨平台音视频互动

anyRTC开发者

音视频 WebRTC RTC sdk 安卓

TCP性能分析与调优策略

云流

程序员 计算机网络 网络协议

18张图,揭开阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密

沉默王二

Java slf4j 日志系统

JMeter100个线程竟然只模拟出1个并发

dongfanger

软件测试 Jmeter 性能测试 压力测试 测试工具

把最新JAVA面试真题(阿里/字节跳动/美团)整理出来,却被自己菜哭了,赶紧去刷题了

Java架构追梦

Java 阿里巴巴 架构 面试 面试题

IPFS云算力挖矿系统开发技术

薇電13242772558

区块链 IPFS

面试前不陪女朋友也要看完这套spring源码面试题(附答案)

小Q

Java 学习 编程 架构 面试

Android网络性能监控方案

应用研发平台EMAS

android 性能 监控 移动开发 应用

jdk 源码系列之ReentrantLock

sinsy

源码 jdk ReentrantLock 公平锁 非公平锁

音像协呼吁保护音乐版权:短视频平台成为侵权重灾区

石头IT视角

马士兵老师首推Java七条自学路线,自学到底能不能行?自学也能拿到40W年薪?

Java架构追梦

Java 架构 面试 马士兵 项目实战

《迅雷链精品课》第二课:区块链核心技术框架

迅雷链

区块链

《TED TALKS演讲的力量》阅读笔记

Jesse Xing

读书笔记 演讲 TED

从接口异常说说线上问题排查流程

QiyihaoLabs

线上排障 指标监控 链路监控 日志监控 排障流程

数字货币交易所开发源码,场外币币交易平台搭建

WX13823153201

数字货币交易所开发

当代开发者的六大真实现状,你被哪一个场景“戳中”了?

华为云开发者社区

开发者 调研 报告

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

Google Closure Stylesheets让我们更易于使用CSS-InfoQ