OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

你需要知道的 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:004146
用户头像

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

关注

评论

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

模块四作业(试卷存储设计)

天琪实刚亮

使用PIL.Image库极简生成含冬奥会元素头像

芝士味的椒盐

Python 冬奥会 5月月更

Kubernetes 如何将 Pod 分配给节点

玄月九

Kubernetes 污点 亲和 反亲和 容忍

今天是第几周

入门小站

工具

2022必会的前端手写面试题

buchila11

前端面试

一、何为应用系统高可用

穿过生命散发芬芳

5月月更

nginx配置系列(四)请求限制

乌龟哥哥

5月月更

Kotlin 中的泛型:协变与逆变

如浴春风

5月月更

千万级学生管理系统的考试试卷存储方案

CityAnimal

架构实战营 #架构实战营 架构师实战营 「架构实战营」

前端食堂技术周刊第 35 期:Vitest v0.10.0、Jest 28、Ant Design v4.20.0、Lerna 官宣停止维护、UnoCSS 交互式

童欧巴

JavaScript web前端 前端工程师

[Day32-02]-[二叉树]在二叉树中增加一行

方勇(gopher)

LeetCode 二叉树 数据结构和算法

软件架构的23个基本原则

俞凡

架构

DDD实战(9):冲刺1战术之服务设计(上)

深清秋

DDD 软件架构 生鲜电商系统

[Day32-03]-[二叉树]不同的二叉搜索树

方勇(gopher)

LeetCode 二叉树 动态规划 数据结构和算法 卡特兰数

【愚公系列】2022 年 05月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)

愚公搬代码

5月月更

网站开发进阶(二)阿里云将80端口请求转发到其他端口

No Silver Bullet

5月月更 端口转发 端口映射

关于“运放“这些知识点

謓泽

5月月更

[Day32-05]-[BST] BST最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

千万级学生管理系统的考试试卷存储方案

鱼恨水

运营好公众号需要具备的能力/技能

源字节1号

软件开发

Hadoop全分布式部署

芝士味的椒盐

Java 大数据 hadoop 5月月更

在线Excel转XML工具

入门小站

工具

设计千万级学生管理系统的考试试卷存储方案

唐诗宋词

Java-进阶:多线程2

爱好编程进阶

Java 程序员 后端开发

面向快速反应的工程团队--QRF团队模型

俞凡

管理 研发效能

这个页面效果看起来真恶心,怎么解?

石云升

团队管理 项目管理 职场经验 5月月更

linux之登录式shell和非登录式shell

入门小站

Linux

这是一篇关于哈希表的爽文

武师叔

5月月更

M4: 设计千万级学生管理系统的考试试卷存储方案

Jadedev

架构实战营

maven构建docker镜像三部曲之一:准备环境

程序员欣宸

Java Docker 5月月更

[Day32-04]-[二叉树]二叉树的最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

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