首页 > 其他分享 >我为什么喜欢原子化CSS

我为什么喜欢原子化CSS

时间:2022-10-13 18:11:54浏览次数:78  
标签:自定义 样式 text 原子化 html 喜欢 CSS css

用Unocss已经有几个月了,从使用者的角度来说说我为什么喜欢上了原子化css。


类似“原子化css”的概念其实很早之前就有,比如Bootstrap的css工具类已经很接近现在的原子化css框架提供的功能,只不过这些css类一是随UI框架自带,二是覆盖的范围不够全面。现在的“原子化”实际上也并不是只对应单条的css属性,更像是一种功能上的原子化,比如truncate实际上包含了三条css属性:

{
  overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

这条规则可以实现单行文本长度超出部分显示成省略号。(当然也有单独的text-ellipsis,只包含了text-overflow: ellipsis属性)。


目前我感受到的原子化css优点有:

  1. 免去起名烦恼。用了Unocss后大部分情况下我都不用再去想class名。之前也尝试过各种css命名方法,包括BEM。然而当html层级嵌套比较深的情况下,BEM命名法也会有起名难、不直观的缺陷。当使用<style scoped>时,BEM除了表达语义外好像也起不到更多作用了,毕竟scoped就已经将不同作用域的样式隔离。
  2. 便于样式的统一。在传统css/scss/less中我们也可以通过自定义变量来达到统一全局样式的目的。但是在原子化css中可以有更简单的方式。通过自定义的presets等就可以实现。配合vscode插件,也能有更直观的显示。
  3. 减少代码量。主要是减少开发时的代码量,不用再写冗长的css。同时对于高频出现的css变量也可以自定义别名,用更短的缩写。同时对于打包后的css的体积,其实也会更小,相同的css类会被复用。

但原子化css也不是没有缺点的,目前我感受到的缺点有:

  1. 调试代码时不直观。毕竟样式全部写到html标签中,会造成标签很长。同时在调试时,不方便找到对应的html节点。以前可以直接通过类名在代码中找到对应html结构,现在需要花费一些时间才能找到。、
  2. 父组件对于子组件的样式难以修改。如果一个div样式全部是用原子化css写的,当你想在父组件中修改该div时,会更难修改。以前可以直接通过深度选择器进行修改,然而现在没有了类名,修改就成了一件难事。
  3. 增加记忆成本。这一点对我来说其实不算缺点,因为绝大部分的css类都是很符合直觉的,比如justify-content: space-between就可以很直观地想到justify-between。当然对于一些不常用的css属性,也可以直接到官网去查,基本上同一css用三遍之后就很难忘掉了。

原子化css,对我而言,利大于弊。对于上面缺点中的第2点,实际上也有相应的解决方案:@apply指令。然而使用@apply后,又会有class起名的问题,同时打包后的css体积会大那么一丢丢。但是对我而言仍然是利大于弊。

最后大家也可以看看托尼老师从开发者角度对于原子化css的一些思考重新构想原子化CSS - antfu

标签:自定义,样式,text,原子化,html,喜欢,CSS,css
From: https://www.cnblogs.com/bernanke/p/16789176.html

相关文章

  • css面试点总结2
    css面试点-@import与link的详解css面试点-position属性css面试点-CSS预处理器(Sass/Less/Postcss)css面试点-css3的filter详解......
  • css面试点总结一
    css面试点-css盒子模型css面试点-flex布局,css3弹性盒子模型css面试点-BFC(块级格式化上下文)与常见布局方案css面试点-css层叠上下文css面试点-div居中方法(共8种)css面试点-清......
  • css面试题大全(持续更新)
    介绍一下css的盒子模型?​css盒子模型详解css选择符有哪些?css3新增伪类有那些?​元素选择符与关系选择符属性选择符伪类选择符,CSS3新增伪类伪对象(伪元素)选择符css那些属性......
  • CSS——下拉菜单
    1.下拉菜单通常使用在鼠标过程中,当鼠标悬停是出现一个下拉的菜单。2.使用任何元素打开下拉菜单内容,例如<span>或<button>元素3.使用容器元素<如div>创建下拉内容,并在......
  • css面试点-css层叠上下文
    什么是层叠上下文层叠上下文(​​stackingcontext​​​),是​​HTML​​​中一个三维的概念。在​​CSS2.1​​规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴,Y轴以......
  • 浏览器滚动条css设置webkit-scrollbar样式方式
    样式代码示例body::-webkit-scrollbar{width:12px;height:12px;}body::-webkit-scrollbar:horizontal{border-top:1pxsolid#efefef;}......
  • 【CSS】必备的22个CSS小技巧
    大家好,今天我们将会介绍一些非常实用的CSS小技巧,让我们开始吧!混合模式之前Firefox和Safari浏览器已经开始支持类似Photoshop的混合模式,但是在Chrome和Opera浏览器中需要添加......
  • 【CSS】318- CSS实现宽高等比自适应容器
    点击上方“前端自习课”关注,学习起来~在最近开发移动端页面,遇到这么一个情况:当页面宽度100%时,高度为宽度一半,并随手机宽度变化依然是一半。于是我们就需要实现一个宽度自......
  • css3字体使用
    @font-face{font-family:'kaiti';src:url('../font/KaiTi.woff')format('woff'),url('../font/KaiTi.ttf')format('truetype'),url('../font/KaiTi.svg#GE_SS......
  • 【CSS】205-CSS的“层”峦“叠”翠
    本文作者:高峰,360奇舞团前端工程师,W3C性能工作组/WOT工作组成员。前言提起,z-index大家脑海里可能会立刻浮现这样的知识点:“z-index的值大小控制元素在Z轴上显示的层级,z-index......