【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

使用 Restyle.js 简化 CSS 预处理

  • 2014-02-19
  • 本文字数:1306 字

    阅读完需:约 4 分钟

Andrea Giammarchi 的 restyle.js 是一个新的,基于 JavaScript 的 CSS 预处理器,能够运行在服务端(通过 Node.js)或者浏览器中。它宣称自己是“一种简化的 CSS 方法”,能够生成 CSS 规则和属性的所有前缀变化,如果合适的话,自动插入到 DOM 中。

关于 CSS 预处理器基本没有什么不足之处,但 Andrea 表示还没有哪种轻量级的预处理器能够同时适用于服务端和客户端:

在你认为“又一个 CSS 预处理器”之前,我想告诉你,我问过周围一些常见的、知名的 CSS 或者普通 Web 开发人员,似乎还没有这样的小脚本……一旦你了解它,你也许会想“怎么之前没人做这个呢?”我的想法是可能人有做了,但我不确定它能小到 0.8KB 而且同时兼容服务端和甚至 IE 6 这样的客户端……因此,我们正在谈论的是 restyle。

该库暴露了一个单独的方法 restyle(),它有两个参数。第一个参数是 JavaScript 对象,其语法接近于 CSS 和 DOM 样式编辑。示例如下:

复制代码
restyle({
'body > div.my-div': {
backgroundColor: 'goldenrod',
backgroundImage: 'url(mybg.png)'
}
});

它将生成以下 CSS:

复制代码
body > div.my-div {
background-color: goldenrod;
background-url: url(mybg.png);
}

我们也可以用不同的方式指定 JavaScript 对象,达到相同的结果:

复制代码
restyle({
'body > div.my-div': {
background: {
color: 'goldenrod',
image: 'url(mybg.png)'
}
}
});

当然,到目前为止,这没什么特别的而且也没有减少标记,即使有,也很细微。但是当你在处理更繁琐的 CSS 时,例如供应商前缀,restyle 将发挥其强大功能。第二个参数允许你指定供应商前缀,用于生成结果,示例如下:

复制代码
restyle({
'.my-div': {
transition: 'background-color 500ms ease';
backgroundColor: '#00f';
}
}, ['moz', 'webkit']);

将生成以下 CSS:

复制代码
.my-div {
-webkit-transition: background-color 500ms ease;
-moz-transition: background-color 500ms ease;
transition: background-color 500ms ease;
background-color: #00f;
}

在编写动画规则时,这就显得非常方便。少量代码就能转换成大量包含供应商前缀的规则和 CSS 属性代码,而这只需要很少的付出。在服务端,省略第二个参数将不生成前缀。而在客户端,不论当前执行代码的是哪种客户端,restyle.js 都将生成所有常见供应商前缀。

根据不同的环境,restyle() 方法将返回不同的结果。在 Node.js 中,它返回包含 CSS 结果的字符串。而在浏览器中,会将 CSS 自动插入到 DOM 中,让其立即生效,返回值是一个方便的小对象,包括属性结点(结果样式元素)、CSS(包括 CSS 结果的字符串)和一个单独的方法 remove(),该方法用于从 DOM 中删除已经插入的样式。

这个简单的示例网页,让你能够编写代码并通过restyle.js 生成结果。正如Andrea 的博客中一些评论所指出的,restyle.js 与类似的库 AbsurdJS 基于相同的思想,但后者更大且功能更全。Restyle.js 只有十分之一的大小,真的是一个轻量级,有趣的 CSS 预处理器,值得一看。你可以查看 readme 开始学习如何使用。

原文英文链接: Simplified CSS Preprocessing with restyle.js

2014-02-19 04:131548

评论

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

前车之鉴:聊聊钉钉 Flutter 落地桌面端踩过的“坑” | Dutter

阿里巴巴终端技术

flutter 钉钉 移动端 跨端框架 桌面端

实战攻略:企业如何一步步建立自己的数字孪生

WorkPlus

京东面试题:ElasticSearch深度分页解决方案

爱好编程进阶

Java 程序员 后端开发

戴尔赋能科创小企业,共塑科创大时代

科创人

龙蜥开源内核追踪利器 Surftrace:协议包解析效率提升 10 倍! | 龙蜥技术

OpenAnolis小助手

Linux 网络协议 系统运维 龙蜥社区 Surftrace

Chrome Devtools调试小技巧

百度Geek说

后端

Authing 宣布推出云原生「多租户」身份解决方案

Authing

身份云 数字化转型 SaaS 多租户

​对 Jenkins 和 CloudBees CI 的 UI 改进

龙智—DevSecOps解决方案

CloudBees

2022-05微软漏洞通告

火绒安全

微软 终端安全 安全漏洞

多家波卡生态项目招聘开发者,高薪职位等你来 Pick!

One Block Community

区块链 招聘 波卡生态

Klocwork 2022.1推出Kotlin分析引擎

龙智—DevSecOps解决方案

klocwork perforce

【国产】分布式批量作业调度平台TASKCTL产品验证的几种方式

TASKCTL

程序员 DevOps 分布式 ETL任务 自动化运维

突破疫情限制,WorkPlus助力企业打开远程高效办公新模式

WorkPlus

关于数据一致性解决方案

穿过生命散发芬芳

数据一致性 5月月更

Nebula Graph|信息图谱在携程酒店的应用

NebulaGraph

图数据库 知识图谱 NebulaGraph

全渠道CRM系统解决方案

低代码小观

低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

2022 开源之夏 | Curve 邀你与中国存储软件共成长,赢万元奖金

网易数帆

分布式 云原生 存储 Ceph curve

案例成果展 | 一朵“航空云”为国航APP核心业务保驾护航

York

云原生 敏捷实践 应用现代化

客户体验和客户服务的区别

龙国富

客户服务 客户体验管理

直播可以使用 https 了,快来试试吧

CRMEB

Spark离线开发框架设计与实现

百度Geek说

后端

密钥管理系统-为你的天翼云资产上把“锁

天翼云开发者社区

数据 数据安全 密码管理

技术干货| MongoDB时间序列集合

MongoDB中文社区

mongodb

最佳实践 | 用腾讯云AI文字识别从0到1实现通信行程卡识别

牵着蜗牛去散步

腾讯 文字识别 技术实践 腾讯云AI 疫情防控

2022年国内外好用的10大甘特图软件(团队使用)

PingCode

项目管理 Worktile 研发管理 甘特图 PingCode

游戏美术和设计师的福音,Helix DAM 测试版来了!

龙智—DevSecOps解决方案

perforce Helix DAM

自助洗车怎么洗?来看看洗车教程

共享电单车厂家

自助洗车加盟 自助洗车怎么洗 自助洗车机使用

云计算平台与传统平台的区别是什么?怎么理解?

行云管家

云计算 云服务 IDC

疫情期间,IT运维人员远程办公软件有哪些?

行云管家

远程办公 IT运维 服务器运维 居家办公 运维软件

初识DevOps

天翼云开发者社区

DevOps 运维 前端开发

架构训练 模块五

小马

「架构实战营」

使用Restyle.js简化CSS预处理_JavaScript_Andy Earnshaw_InfoQ精选文章