首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CSS-in-JS,向Web组件化再迈一大步 | 洞见

命名混乱 - 因为怕全局污染,所以日常起class名称时会尽量加长,这样不容易重复,但当项目由多人维护时,很容易导致命名风格不统一。...但是对于命名混乱问题效果不大。...BEM (.block__element--modifier) - 比较流行class命名规则,部分解决了命名混乱和全局污染问题,但class定义起来还是不太方便,比较冗长,而且和第三方库命名还是有可能冲突...可以看一个简单CSS Modules例子了解一下: 生成dom结构如下图,基于css文件中class名称生成了唯一class名称,样式定义到生成class上。...优劣势总结 看了这些框架后,可以发现CSS-in-JS优势还是挺多: 因为有了生成唯一class名称,避免了全局污染问题 唯一class名称也解决了命名规则混乱问题 JavaScript和CSS

98380
您找到你想要的搜索结果了吗?
是的
没有找到

React 进阶 - 模块化 CSS

# 模块化 CSS 作用 随着 React 项目日益复杂化、繁重化,React 中 css 面临很多问题,比如样式类名全局污染、命名混乱、样式覆盖等。这时, css 模块化就显得格外重要。...important 或者 行内样式 来解决 Web Components 标准中 Shadow DOM 能彻底解决这个问题,但它做法有点极端,样式彻底局部化,造成外部无法重写样式,损失了灵活性 解决命名混乱...,有很多相似的样式代码,如果没有用到 css 模块化,构建打包上线时候全部打包在一起,那么无疑增加项目的体积 React 使用 css 模块化思路: css module ,依赖于 webpack...js 模块一样加载 css ,本质上通过一定自定义命名规则生成唯一性 css 类名,从根本上解决 css 全局污染,样式覆盖问题。...Modules 类名都有自己私有域,可以避免类名重复/覆盖,全局污染问题 引入 css 更加灵活,css 模块之间可以互相组合 class 类名生成规则配置灵活,方便压缩 class 名 注意事项

1.6K10

CSS编写规范

2、目前我司在编写CSS样式时存在编写混乱、多页面的样式写在同一CSS文件、不方便阅读等几乎毫无原则现象,产生诸多弊端,罗列如下: 1)多个页面的样式写在同一个CSS文件中: 加载一个页面同时把其他页面的...4、每一个页面都应用一个独立CSS文件,常用页面应该做成CSS文件模板 每一个页面都应用一个独立CSS文件,而不能出现多个页面的样式放到同一个CSS文件中,这样延长加载时间,也会使得命名更加困难。...10、用于编写js选择class名称应与一般样式class名称有所区别 例如一般样式类名:.content-wrapper;而用于js选择类名:.content_wrapper_hook。...输入时候少按一个shift键; 浏览器兼容问题 (比如使用_tips选择器命名,在IE6 是无效) 能良好区分JavaScript变量命名(JS变量命名“_”) ③用字母、_号、-号、数字组成...,必须以字母开头,不能为纯数字

2.6K30

CSS Modules使用详解

CSS Modules CSS 模块化 不管是jquery还是react开发,都会遇到一系列 CSS 问题: 全局污染 命名混乱 依赖引入复杂 无法共享变量 代码冗余 通过 JS 来管理 CSS..., } CSS Modules 对 CSS class 名都做了处理,使用对象来保存原 class 和定制处理后 class 对应关系。...Modules时定义规则localIdentName=[name]__[local]-[hash:base64:5]控制对class处理, [hash:base64:5]定义hash计算能保证类名唯一性...当类名经过编译生成新随机类名后,可以解决命名冲突,但因为无法预知最终 class 名,不能通过一般选择器覆盖。...现在一般给出项目中实践是可以给组件关键节点加上 data-role 属性,然后通过属性选择器来覆盖样式。 前端项目不可避免引入 normalize.css 或其它一类全局 css 文件。

1.8K10

CSS Modules使用详解

CSS Modules CSS 模块化 不管是jquery还是react开发,都会遇到一系列 CSS 问题: 全局污染 命名混乱 依赖引入复杂 无法共享变量 代码冗余 通过 JS 来管理 CSS..., } CSS Modules 对 CSS class 名都做了处理,使用对象来保存原 class 和定制处理后 class 对应关系。...Modules时定义规则localIdentName=[name]__[local]-[hash:base64:5]控制对class处理, [hash:base64:5]定义hash计算能保证类名唯一性...当类名经过编译生成新随机类名后,可以解决命名冲突,但因为无法预知最终 class 名,不能通过一般选择器覆盖。...现在一般给出项目中实践是可以给组件关键节点加上 data-role 属性,然后通过属性选择器来覆盖样式。 前端项目不可避免引入 normalize.css 或其它一类全局 css 文件。

1.5K50

CSS Modules入门教程

针对以往我写网页样式经验,具体来说可以归纳为以下几点: 全局样式冲突 过程是这样:你现在有两个模块,分别为A、B,你可能单独针对这两个模块编写自己样式,例如a.css、b.css,看一下代码 /...增加了不必要字节开销 语义混乱,当文档中出现过多content、title以及item这些通用类名时,你可能要花上老半天才知道它们到底是用在哪个元素上 可扩展性不好,约束越多,扩展性越差 【注】CSS...渲染规则可以参看这篇文章探究 CSS 解析原理 带来代码冗余 由于CSS不能使用类似于js模块化功能,可能你在一个css文件中写了一个公共样式类,而你在另外一个css也需要这样一个样式,这时候...CSS预处理器最大好处就是可以支持模块引入,js方式来编写CSS,解决了部分scope混乱以及代码冗余问题,但是也不能完全避免。...BEM解决了模块复用、全局命名冲突等问题,配合预处理CSS使用时,也能得到一定程度扩展,但是它依然有它问题: 对于嵌套过深层次在命名上会给需要语义化体现元素造成很大困难 对于多人协作上,需要统一命名规范

2.5K40

前端代码标准最佳实践:HTML篇

(1)HTML代码基本规范 1. HTML命名和格式 任何代码混乱都是从命名和格式混乱开始,所以一定要有统一和规范命名和格式,以下是一些基本规范。...给所有的关键元素定义元素id和class,便于和CSS,JavaScript交互;id名称中关键词下划线(_)连接,class关键词中划线(-)连接,根据实际意义和Dom树层级关系定义合适名称... 2 CSS代码和HTML代码分离 样式可以直接写在标签style属性里面,也可以写在页面...CSS文件在前,JavaScript文件在后,JavaScript代码放到页面底部 JavaScript文件下载和解析阻塞页面的加载,所以在head部分,CSS引用写在前面,而JavaScript...谨慎使用iframe iframe有两个缺点:1,iframe阻塞主页面的Onload事件;2,iframe和主页面共享连接池,而浏览器对相同域连接有限制,所以影响页面的并行加载。

1.5K90

精读《css-in-js 杀鸡牛刀》

本期精读文章是:css-in-js 杀鸡牛刀 1 引言 继 精读《请停止 css-in-js 行为》 这篇文章之后,我们又读了一篇抵制 css-in-js 文章,虽然大部分观点都有道理,但部分存在可商榷之处...,让我们分析一下这篇文章,了解 css 还做了哪些努力,以及 css-in-js 如何发展。...这样好处在于避免了 class 之间冗余,让我们更容易创建可复用 class,也不会在命名上纠结。...,即便产生了样式冲突、混乱问题,但我们仍要记住,在模块化开发今天,仍要保持网站风格整体性,即便使用了 css-in-js 开发方式。...是个不错选择 :p 讨论地址是:精读《css-in-js 杀鸡牛刀》 · Issue #38 · dt-fe/weekly

71220

Facebook 重构:抛弃 Sass u002F Less ,迎接原子化 CSS 时代

> 海量实用工具类(utility classes)组成样式表,让我们可以在网页里大显身手。...一个专案或计划至少失去若干关键成员参与(“被巴士撞了”,指代职业和生活方式变动、婚育、意外伤亡等任意导致缺席缘由)即导致专案陷入混乱、瘫痪而无法存续时,这些成员数量即为巴士系数。...Facebook 分享了具体数字: 旧网站仅仅首页就用了 413Kb CSS网站整个站点只用了 74Kb,包括暗黑模式 源码和输出 这两个库 API 看起来很相似,但也很难说,因为我们对...; } 可以看出,虽然标签上类名变多了,但是 CSS 输出体积随着功能增多而减缓增长,因为出现过一次 CSS Rule 就不会再重复出现了。...甚至可以 TS 来避免错别字。 结论 这就是我要说关于原子 CSS-in-JS 所有内容。 我从来没有在任何大型生产部署中使用过原子 CSS、原子 CSS-in-JS 或 Tailwind。

3.4K50

CSS团队协作规范

class class name 禁止在非特殊情况下写 !important CSS本身有权重设计,任意地使用 !important 造成权重混乱而无法维护。...不可轻易限定宽高 用户可以自行设定自己浏览器,例如 Android 手机可以设定显示字体大小,写死高度让字体相互重叠。 RWD失效 移动设备高度是无限,宽度是有限。 请不要把宽写死。...不可直接 over write 或在原本框架 class 增加内容 class class 设计RWD网站,请遵循移动设备优先原则 HTML/CSS 手机开启网页很吃手机效能和网络状况,前端工程师一开始就以手机版为优先...定位,例如 position: absolute; 不要随意 none 掉画面上 tag 或行为 none reset.css class reset.css 常见 a tag 不要有 underline...list 消除原有样式 请在 reset.css 上定义,并且设为第一载入次序 有JavaScript行为 class 可以为命名加入 name space #js-project-show {}

54630

css模块化及CSS Modules使用详解

命名混乱 由于全局污染问题,多人协同开发时为了避免样式冲突,选择器越来越复杂,容易形成不同命名风格,很难统一。样式变多后,命名将更加混乱。...; /* ... */ } 但直接使用这两个关键字编程太麻烦,实际项目中很少直接使用它们,我们需要 JS 来管理 CSS 能力。...通过这些简单处理,CSS Modules 实现了以下几点: 所有样式都是 local ,解决了命名冲突和全局污染问题 class 名生成规则配置灵活,可以此来压缩 class 名 只需引用组件 JS...class 命名技巧 CSS Modules 命名规范是从 BEM 扩展而来。...外部如何覆盖局部样式 当生成混淆 class 名后,可以解决命名冲突,但因为无法预知最终 class 名,不能通过一般选择器覆盖。

6.5K100

HTML5 & CSS3初学者指南(2) – 样式化第一个网页

不要以数字开头一个 ID 名称 ID 名称应该是一个页面内唯一 如果想要对页面中单个元素使用样式时,可以使用 ID 选择器 类选择器 类似地,每个 HTML 标签都有一个class属性...,这种在 HTML 标签中内嵌 CSS 也导致了内容呈现混乱,不利于 CSS 引进。...样式表优先级 不难想象,一个 HTML 元素具有内联、内部和外部样式这三种样式情形。在这种情况下,其风格应该是混乱。...CSS属性 在前面的例子中,我们已经使用了“color”和“ text-align" 属性。它们只是众多 CSS 属性中2个。CSS 属性名称是相当直观,也就是说,它们起到它们名称作用。...以下是常见几种 font-family 属性风格名称。字体列表逗号分隔。

2.1K70

Facebook 重构:抛弃 Sass Less ,迎接原子化 CSS 时代

> 复制代码 海量实用工具类(utility classes)组成样式表,让我们可以在网页里大显身手。...一个专案或计划至少失去若干关键成员参与(“被巴士撞了”,指代职业和生活方式变动、婚育、意外伤亡等任意导致缺席缘由)即导致专案陷入混乱、瘫痪而无法存续时,这些成员数量即为巴士系数。...Facebook 分享了具体数字: 旧网站仅仅首页就用了 413Kb CSS网站整个站点只用了 74Kb,包括暗黑模式 ?...以这张图为例,我们期望是书写在后 blue 类覆盖前面的类,但实际上 CSS 以样式表中顺序来决定优先级,最后我们看到是红色文字。...甚至可以 TS 来避免错别字。 结论 这就是我要说关于原子 CSS-in-JS 所有内容。 我从来没有在任何大型生产部署中使用过原子 CSS、原子 CSS-in-JS 或 Tailwind。

3K10

被尤雨溪dissNative CSS Modules是什么

CSS Modules是一套开源规范,用以解决CSS以下问题: 命名冲突 没有模块化 依赖关系不明(样式覆盖问题) 该规范需要打包工具实现。...我们一个例子来简要了解他实现细节: 将CSS文件style.css引入为style对象后,通过style.title方式使用title class: import style from '....首选,通过对比可以发现: 该标准命名与现有开源方案冲突 标准语法与现有开源方案语法相同 第一点,假设在未来一个初学者搜索CSS Modules,那么结果可能让他困惑,我搜到是谁?...如果未来需要实现Native CSS Modulespolyfill,轻则造成重复工作、重则遇到两种方案更迭造成混乱(想想社区从CJS过渡到ES Modules遇到多少问题)。...并且,由于Native CSS Modules需要在所属JS模块加载后再异步加载,可能产生很多碎片化CSS文件请求。

50220

大型项目中结构化CSS

Peergrade.io处理CSS方式 规则1: 使用前缀 (class类名) 在Peergrade.io中我们在所有样式名中使用前缀 .pg。 在你CSS代码中如果不使用前缀可能带来些麻烦。...在很长一段时间内字体是不会在类名中用前缀, 那意味着你经常会遇到.icon-*之类为前缀命名冲突(现在他们 .fa前缀)。...当你写它时候,你也许会想这里仅有一个.profile-description列表命名,但一两个月后, 你必须要增改另一个列表时,混乱结构已经超出你能想到范围。...规则3: 构建组件时边界元法(BEM)命名 尽可能试着BEM命名去创建独立组件,我们不必完全按照BEM规范 - 只是用命名组合,这意味着类名以如下方式命名: .block__element--...(事后我们碰到类似的CSS时,自然提及到Harry这个命名体系) 向前看 看来没有人真正找到CSS最好解决方案, 并且当看到Hacker News最新文章 -- 那些差点要变成(替代)CSS语言

1.1K40

推荐CSS书写顺序、规范

写了这么一些时间CSS,有时候觉得有些混乱,尤其是做样式修改时候。后来觉得遵循一些书写规范和顺序来的话,一来让自己思路很清晰,二来修改时候很明确,不容易被冗余样式影响。...定位属性修改导致reflow,改变文字颜色、背景等会使得浏览器repaint,都会影响浏览器渲染性能。...简写命名 简写命名也要让别人能读懂 连字符CSS选择器命名规范 输入时候少按一个shift键; 浏览器兼容问题 (比如使用_tips选择器命名,在IE6是无效); 能良好区分...JavaScript变量命名(JS变量命名“_”)....css命名规范 常用CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体佈局宽度

61010
领券