写点什么

你需要知道的 CSS-in-JS

  • 2017-11-26
  • 本文字数:5209 字

    阅读完需:约 17 分钟

什么是 CSS-in-JS?直接在.css 文件里写 CSS(CSS-in-CSS)不是挺好的吗,为什么还需要 CSS-in-JS?

说到这里,不得不提到组件化。因为有了组件化概念,就不再需要维护一大堆杂乱的样式。CSS-in-JS 在组件层面(而不是文档层面)对 CSS 进行了抽象。在项目中维护一个巨大的样式文件夹实在是一件让人感到头疼的事情,很多人不禁感叹,是否还有其他更好的办法?不用说,CSS-in-JS 在目前看来就是一个最佳解决方案。

当然,要继续使用 CSS-in-CSS 还是转向 CSS-in-JS 完全取决于开发者自己,最关键的是选择合适的工具来改进开发工作流,在提升生产力的同时也让开发变得更有趣。

什么是 CSS-in-JS

JSS 对 CSS 进行了抽象,使用了 JavaScript,以声明和可维护的方式来描述样式。它是一个高性能、运行在服务器端的运行时 JS 到 CSS 编译器。它的核心部分与框架无关,经过压缩后只有 6KB,并可以通过插件 API 的方式进行扩展。

需要注意的是,内联样式和 CSS-in-JS 是完全不一样的!

内联样式

复制代码
const textStyles = {
复制代码
   color: white,
复制代码
   backgroundColor: black
}
<p style={textStyles}>inline style!</p>

在浏览器里,样式属性会被附加到 DOM 节点上:

复制代码
<p style="color: white; backgrond-color: black;">inline style!</p>

CSS-in-JS

复制代码
import styled from 'styled-components';
const Text = styled.div`
复制代码
   color: white,
复制代码
   background: black
`
<Text>Hello CSS-in-JS</Text>

在浏览器里,样式类会被附加到 DOM 节点上:

复制代码
<style>
.hash136s21 {
复制代码
   background-color: black;
复制代码
   color: white;
}
</style>
<p class="hash136s21">Hello CSS-in-JS</p>

可以看出,CSS-in-JS 会附加整个

2017-11-26 18:004807
用户头像

发布了 322 篇内容, 共 158.2 次阅读, 收获喜欢 148 次。

关注

评论

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

手把手教你爬取优酷电影信息-1

happlyfox

学习 爬虫 28天写作 2月春节不断更

手把手教你爬取优酷电影信息-2

happlyfox

学习 28天写作 2月春节不断更

一文带你了解GaussDB(DWS) 的Roach逻辑备份实现原理

华为云开发者联盟

容灾 备份 GaussDB(DWS) 逻辑备份 Roach

敏捷技术实践之TDD

Teobler

敏捷 敏捷开发 TDD 极限编程 测试驱动开发

微信小程序开发笔记(一)

陈飞

小程序

【Python】关于 Type Hints 你应该知道这些

zhujun

Python

视频号直播和 PageRank 算法 [待完善]

小匚

机器学习

(28DW-S8-Day6)区块链如何解决双重支付及防篡改

mtfelix

比特币 区块链 防篡改 28天写作 双重支付

山东区块链赋能农产品溯源平台解决方案

源中瑞-龙先生

关于个人认知的一些碎碎念「Day 6」

道伟

心理学 认知 28天写作

Kafka.08 - 消息交付可靠性保障

insight

kafak 2月春节不断更

基于SpringBoot实现文件的上传下载

Java鱼仔

springboot

为您收录的操作系统系列 - 线程小常识

鲁米

线程

只有两颗糖,什么时候给——再谈峰终定律

Justin

心理学 28天写作 游戏设计

话题讨论 | 各地都有什么特别的元宵节活动?

happlyfox

社会话题 话题讨论 28天写作 2月春节不断更 话题王者

当深度学习遇上图: 图神经网络的兴起!

博文视点Broadview

爬虫知识记录之一

头号摄影师

爬虫

Elasticsearch 一个 field 两个索引

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

让听见炮火的人来做决策,做决策的要好好听听炮火

数列科技杨德华

28天写作

水墨屏开发设备,旧 Kindle 改造而成

HelloGitHub

开源 硬件 kindle

Linux入门篇 —— Linux软件安装(YUM & RPM & 源码)

若尘

Linux 源码 RPM安装 rpm yum

我凭借这份“2021全网最全Java面试清单”彻底征服阿里面试官

比伯

Java 编程 程序员 架构 面试

敏捷团队实践

Teobler

项目管理 敏捷 敏捷开发 工程实践 敏捷开发管理

使用 Tye 辅助开发 k8s 应用竟如此简单(六)

newbe36524

Docker Kubernetes 微服务 dotnet

Selenium 自动化前的补充知识,Frame操作、多窗口切换、模糊定位、复合定位

梦想橡皮擦

Python 28天写作 2月春节不断更

28天瞎写的第二百四十四天:冥想的种类

树上

冥想 28天写作 正念

克服云安全挑战的5种方法

云计算

泰康和百度智能云为何相互需要?

吴俊宇

百度 保险数字化 泰康

1.2 Go语言从入门到精通:编写第一个Go程序

xcbeyond

28天写作 Go 语言

“定义”

Nydia

前端HTML5面试官和应试者一问一答

我是哪吒

html 程序员 大前端 28天写作 2月春节不断更

你需要知道的CSS-in-JS_语言 & 开发_Indrek Lasn_InfoQ精选文章