前言
原子CSS(Atomic CSS)是一种CSS编码方法,它将样式分解为最小的可重用单元,即“原子”。这种方法通常与BEM(Block Element Modifier)命名方法相结合使用,以创建高度模块化和可维护的CSS代码。
正文
原子CSS编程的介绍
- 最小化样式:原子CSS中的每个样式规则都是独立的,只包含一个或少数几个属性。例如,
.btn可能只定义了按钮的宽度和高度,而.btn--primary则定义了按钮的颜色和边框。 - 命名约定:原子CSS通常使用功能性的命名约定,如
.mr1(外边距右侧1个单位),.bg-red(背景颜色为红色)等,这些命名直观且易于理解。 - 可组合性:由于样式规则是独立的,它们可以很容易地组合在一起,以创建复杂的布局和组件,而不需要编写大量的定制CSS。
- 工具和库:原子CSS可以通过工具如Tachyons或Tailwind CSS实现,这些工具提供了一套预定义的原子类,可以快速地应用于HTML元素。
传统的CSS编程是这种形式的
<style lang="css" scoped>
.container{
min-height: 100vh;
background-color: #000000;
/* background-image: url('E:\VS code\thq-aigc\vue\weather\src\assets\IMG_0241.JPG');
background-size: cover; */
opacity: 0.7;
color: #f5f5f5;
}
.nav{
display: flex;
justify-content: space-between;
padding: 20px;
}
.city-info{
text-align: center;
}
p{
margin: 20px;
}
.temp{
font-size: 34px;
margin: 10px;
em{
font-size: 50px;
}
}
.future{
margin-top: 40px;
padding: 0 10px;
.group{
height: 44px;
line-height: 44px;
background-color: rgb(255, 255, 255,0.5);
padding: 0 10px;
margin-bottom: 10px;
border-radius: 20px;
}
}
.echarts-wrap{
width: 100%;
height: 50vh
}
</style>
这是原子化css编程
<div class="flex flex-col h-screen">
<div class="flex flex-nowrap fixed w-full
items-baseline top-0 px-6 py-4 bg-gray-100">
<div class="text-2xl font-bold">
Chatgpt
</div>
<div class="ml-4 text-sm text-gray-500">
基于OpenAI的ChatGPT自然语言模型人工智能对话
</div>
<div class="ml-auto px-4 py-2 text-sm cursor-pointer hover:bg-gray-200 rounded-md"
@click="clickConfig()">
设置
</div>
</div>
<div class="sticky bottom-0 w-full p-6 pb-8 bg-gray-100"> <!-- 粘连在底部 -->
<div class="mb-2 text-sm text-gray-500">
请输入API KEY
</div>
<div class="flex">
<input type="text" class="input flex-1"
placeholder="API KEY"
v-model="messageContent"
@keydown.enter="save()">
</input>
<button class="btn" @click="save()">保存</button>
</div>
</div>
</div>
分析优劣
对比一下可以分析出他们的优劣:
1、可维护性:
- 传统CSS:随着项目的增长,传统CSS可能会变得难以维护,特别是当样式依赖于嵌套选择器和复杂的继承结构时。
- 原子CSS:由于其模块化和功能性的类名,原子CSS更容易理解和维护。
2、 在开发速度上:
- 传统CSS:开发者可能需要花费时间编写和调试CSS代码,尤其是在创建复杂组件时。
- 原子CSS:预定义的类和组合性可以加快开发速度,因为开发者可以快速地应用和组合样式。
省去了大量的css样式的编写,在编写html时便一步到位了
<div class="ml-4 text-sm text-gray-500">
基于OpenAI的ChatGPT自然语言模型人工智能对话
</div>
3、 响应式设计:
- 传统CSS:实现响应式设计可能需要编写大量的媒体查询和条件样式,这可能增加代码的复杂性。
- 原子CSS:可以更容易地与媒体查询结合使用,实现响应式设计,因为样式是独立的,可以按需应用。
比如原子css编写的设置按钮
这个div是一个设置按钮,位于导航栏的右侧,具有悬停效果和点击事件。
<div class="ml-auto px-4 py-2 text-sm cursor-pointer hover:bg-gray-200 rounded-md"
@click="clickConfig()">
设置
</div>
4、 在代码重复的问题上上:
- 传统CSS:开发者可能会在多个地方重复相同的样式,导致代码冗余和不一致。
- 原子CSS:通过使用预定义的原子类,可以避免重复代码,提高代码的一致性。
5、 可扩展性:
- 传统CSS:扩展样式可能需要修改多个选择器,这可能导致难以追踪的依赖关系和意外的影响。
- 原子CSS:由于样式的独立性,扩展和修改样式更加直接和可控。
.future{
margin-top: 40px;
padding: 0 10px;
.group{
height: 44px;
line-height: 44px;
background-color: rgb(255, 255, 255,0.5);
padding: 0 10px;
margin-bottom: 10px;
border-radius: 20px;
}
}
6、 样式冲突:
- 传统CSS:CSS的选择器特异性和层叠规则可能导致样式冲突,尤其是在大型项目中。
- 原子CSS:由于样式的独立性,减少了特异性问题,使得样式冲突更易于管理和解决。
7、 在大型项目的团队协作中:
- 传统CSS:在团队中,不同的开发者可能有不同的编码风格和习惯,这可能导致代码不一致。
- 原子CSS:统一的命名约定和编码风格可以减少团队协作中的不一致性。
8、 在性能方面:
- 传统CSS:大型的CSS文件可能会影响页面加载速度,尤其是在没有适当优化的情况下。
- 原子CSS:由于样式的精简和模块化,生成的CSS文件通常更小,有助于提高页面性能。
9、 学习曲线上:
- 传统CSS:对于新手开发者来说,理解CSS的选择器、继承和层叠规则可能需要一定的时间。
- 原子CSS:虽然需要记忆大量的类名,但其直观的命名和组合性可能更容易上手。
使用Tailwind CSS
Tailwind CSS 就是一个原子CSS 框架,它提供了一套丰富的实用工具类,允许开发者快速构建自定义设计,而不受预定义组件的限制。
Tailwind CSS - 只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站。 | TailwindCSS中文文档 | TailwindCSS中文网
1、安装和初始化Tailwind CSS
- 安装:在终端中输入
npm install -D tailwindcss postcss autoprefixer - 初始化:在终端中输入
npx tailwindcss init -p
2、配置模板文件的路径
在 tailwind.config.js 配置文件中添加所有模板文件的路径。
**/:这是一个通配符,表示任何深度的子目录。这意味着任何在src目录下的文件,无论嵌套多深,都将被包含
*.{js,vue,jsx,tsx}:这指定了文件扩展名。*表示任何文件名,而{js,vue,jsx,tsx}是一个扩展名的列表。这意味着所有.js、.vue、.jsx和.tsx文件都将被处理
3、将加载 Tailwind 的指令添加到你的 CSS 文件中
在你的主 CSS 文件中通过 @tailwind 指令添加每一个 Tailwind 功能模块。
@tailwind base;
@tailwind components;
@tailwind utilities;
在main.js中引入该样式
import './assets/tailwind.css'
4、 接下来就可以开始在代码中使用原子化css啦
结语
原子CSS的优势
- 提高开发速度:由于样式是预定义的,开发者可以快速地应用样式,而不需要编写新的CSS代码。
- 增强可读性和可维护性:原子CSS的命名约定直观,使得代码易于理解和维护。
- 促进代码重用:由于样式是独立的,它们可以在不同的组件和项目中重用,减少了重复代码。
- 减少CSS体积:由于每个样式规则只包含必要的属性,生成的CSS文件通常比传统的CSS文件更小。
- 易于定制:原子CSS允许开发者轻松地覆盖或扩展预定义的样式,以适应特定的设计需求。
- 支持响应式设计:原子CSS可以很容易地与媒体查询结合使用,以实现响应式设计。
- 避免CSS特异性问题:由于样式是独立的,开发者可以更好地控制样式的层叠和特异性,避免CSS的继承和层叠导致的意外结果。
原子CSS是一种现代的CSS开发方法,尤其适用于大型项目和团队协作,它通过简化样式的应用和维护,提高了开发效率和代码质量。然而,它也可能带来一些挑战,如需要记忆大量的类名,以及在初期可能需要更多的时间来适应这种编程风格。