CSS-in-JS vs 传统CSS:现代样式方案选择指南(面向零基础前端学习者)

木木在敲代码
2025-06-15 22:07
阅读 552

开篇:什么是CSS与CSS-in-JS?

开篇:什么是CSS与CSS-in-JS?

我们每天上网浏览的网页,比如微博、知乎、淘宝等,其实都由三大部分组成

  • HTML:网页的“骨架”,负责展示内容结构(比如标题、段落、图片);
  • CSS:网页的“衣服”,负责控制外观(比如颜色、字体大小、排版);
  • JavaScript:网页的“行为”,让网页动起来(比如按钮点击后变化)。

而我们要讲的主角之一 —— CSS(层叠样式表),是我们美化网页最传统的手段;另一个则是今天要了解的新趋势:CSS-in-JS,即用 JavaScript 来写 CSS 样式!

🌟 你将学到什么?

  • 传统 CSS 是怎么工作的?
  • CSS-in-JS 有什么不同和优势?
  • 初学者应该选哪种方式来开始写样式?
  • 实战演示:从零搭建一个漂亮的按钮界面
  • 常见问题解答:初学者常问的问题

环境准备:开发环境怎么搭?

现代网页界面设计示例-1

环境准备:开发环境怎么搭?

在开始之前,我们需要准备好基本的开发工具。

🔧 工具清单:

  1. 代码编辑器:推荐使用 VS Code
  2. 浏览器:建议使用 Google Chrome 或 Microsoft Edge
  3. Node.js + npm(可选):如果你要用 CSS-in-JS 框架,比如 styled-components

📌 小提示:新手不需要安装 Node.js 和 npm,除非你要用 React 等框架。我们可以先学基础 CSS 再拓展!

✅ 第一步:创建项目文件夹

打开你的电脑桌面,创建一个新文件夹叫 my-first-style-project。这个就是我们的项目根目录。

my-first-style-project/
│
├── index.html
└── style.css

✅ 第二步:编写 HTML 文件

在文件夹里新建一个文件 index.html,里面写上最基本的 HTML 结构:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8" />
  <title>我的第一个样式页面</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <h1>欢迎来到我的页面!</h1>
  <p>这是一段简单的文本。</p>
  <button>我是按钮</button>
</body>
</html>

别担心看不懂这段代码,只要知道它是在加载我们接下来要写的 CSS 文件即可。

现在你可以双击 index.html 打开它,在浏览器中看到效果了!但目前还没有任何样式,文字是默认样式的。


核心概念:传统 CSS vs CSS-in-JS

核心概念:传统 CSS vs CSS-in-JS

让我们用最简单的方式来理解这两个技术的区别。

💡 传统 CSS 是什么?

  • 它是一个独立的 .css 文件。
  • 在 HTML 中通过 <link> 标签引入。
  • 专门用于描述 HTML 元素的样式。

举个例子:

/* style.css */
h1 {
  color: red;
}
button {
  background-color: blue;
  color: white;
  padding: 10px 20px;
  border-radius: 5px;
  border: none;
}

刷新一下页面,看看是不是标题变红了,按钮也变好看啦?

👩‍🏫 老师小结:传统 CSS 的优点是简单易学,适合新手入门


💡 CSS-in-JS 是什么呢?

随着前端框架(如 React)的流行,人们开始尝试把 CSS 直接写进 JavaScript 文件中。这种写法叫做 CSS-in-JS

代表工具包括:

  • styled-components
  • emotion
  • JSS

✨ 举个例:使用 styled-components 来写样式

⚠️ 注意:如果你想运行这段代码,需要安装 React + styled-components。这部分我们会在实战项目讲解。

示例代码(简化):

// Button.jsx
import styled from 'styled-components';

const MyButton = styled.button`
  background-color: green;
  color: white;
  padding: 10px 20px;
  border-radius: 5px;
`;

export default function App() {
  return (
    <div>
      <MyButton>绿色按钮</MyButton>
    </div>
  );
}

✅ 可以看到:CSS 样式直接嵌入在 JS 文件中,看起来就像写 JavaScript!


对比表格:传统 CSS vs CSS-in-JS

特性 传统 CSS CSS-in-JS
是否需要外部文件 ✅ 需要单独 .css 文件 ❌ 通常写在 JS 文件中
是否支持变量 ❌ 不支持(除非使用 Sass/Less) ✅ 支持 JavaScript 变量
是否容易作用域管理 ❌ 可能有全局冲突 ✅ 默认局部作用域
学习曲线 🟢 平缓,适合初学者 🟠 略陡峭,需掌握 JS/React 基础
适合项目类型 简单网站、静态页面 复杂应用、组件化项目

实战项目:做一个按钮列表页面

我们现在要做一个带多个样式的按钮页面,对比两种方式如何实现。


🧱 方案一:传统 CSS(无框架)

第一步:修改 HTML

<!-- index.html -->
<body>
  <h1>我的按钮库</h1>
  <button class="btn primary">主按钮</button>
  <button class="btn secondary">次按钮</button>
  <button class="btn danger">危险按钮</button>
</body>

第二步:写 CSS 样式

/* style.css */

.btn {
  font-size: 16px;
  margin: 5px;
  padding: 10px 20px;
  border: none;
  cursor: pointer;
}

.primary {
  background-color: #007bff;
  color: white;
  border-radius: 4px;
}

.secondary {
  background-color: #6c757d;
  color: white;
}

.danger {
  background-color: #dc3545;
  color: white;
}

保存后刷新页面,你应该会看到三种风格不同的按钮!

🎉 成功完成传统 CSS 的按钮样式设计!


🧩 方案二:CSS-in-JS(使用 styled-components)

这部分我们假设你在使用 React + styled-components

第一步:确保你安装了必要工具

npx create-react-app my-styled-button
cd my-styled-button
npm install styled-components

第二步:修改 App.jsx

// src/App.jsx
import styled from 'styled-components';

const Button = styled.button`
  font-size: 16px;
  margin: 5px;
  padding: 10px 20px;
  border: none;
  cursor: pointer;
  color: white;
`;

const PrimaryButton = styled(Button)`
  background-color: #007bff;
`;

const SecondaryButton = styled(Button)`
  background-color: #6c757d;
`;

const DangerButton = styled(Button)`
  background-color: #dc3545;
`;

function App() {
  return (
    <div>
      <h1>我的按钮库</h1>
      <PrimaryButton>主按钮</PrimaryButton>
      <SecondaryButton>次按钮</SecondaryButton>
      <DangerButton>危险按钮</DangerButton>
    </div>
  );
}

export default App;

运行命令启动项目:

npm start

你会看到同样的三个按钮出现,只不过这次是用 JavaScript 编写的样式!


常见问题解答(Q&A)


Q1:我刚学前端,应该先学 CSS 还是 CSS-in-JS?

👉 如果你是完全的新手,建议先学传统 CSS。因为:

  • 它不依赖框架,更简单直观;
  • 所有网页都离不开它;
  • 有了基础之后再学 CSS-in-JS 会更轻松。

CSS-in-JS 更适合在学习完基础 HTML/CSS/JS 后再进阶使用。


Q2:CSS-in-JS 会取代传统 CSS 吗?

👉 不会完全取代。

  • 传统 CSS 依然适用于大多数静态网站。
  • CSS-in-JS 更适合组件化开发(如 React),尤其在大型项目中更容易维护。

两者可以共存,根据需求灵活选用。


Q3:为什么我的 CSS 样式没生效?

常见原因包括:

  1. 路径错误:CSS 文件没有正确引入;
  2. 优先级问题:多个 CSS 样式冲突;
  3. 语法错误:漏写括号或冒号;
  4. 浏览器未刷新:记得每次改完刷新页面!

你可以按 F12 打开浏览器开发者工具(DevTools),查看元素是否应用了预期的样式。


Q4:我该怎样调试 CSS?

✅ 使用浏览器的开发者工具:

  1. 右键页面 → “检查”(或按 F12);
  2. 选择“Elements”标签;
  3. 找到你写的 HTML 元素,右边能看到应用的样式;
  4. 可以临时更改样式看效果!

学习建议:下一步该学什么?

🛤 初学者路线图(适合未来想做前端开发的同学)

  1. 第一步:打好 HTML/CSS 基础

    • 能写出结构清晰、有样式的基本网页
    • 掌握盒子模型、浮动、Flexbox 等布局知识
  2. 第二步:学习 JavaScript 基础

    • 操作 DOM 元素,让网页“动起来”
    • 掌握事件(如点击、鼠标悬停)交互
  3. 第三步:接触前端框架(如 React / Vue)

    • 组件化思想
    • 使用 CSS-in-JS 技术(如 styled-components)
  4. 第四步:深入构建完整项目

    • 做一个博客、商城前台、个人简历页等真实项目
    • 学会响应式布局、媒体查询、动画

总结:该怎么选?

场景 推荐方式
刚学前端 传统 CSS
构建静态网页/作品集 传统 CSS
用 React/Vue 等框架做项目 CSS-in-JS
需要动态样式计算或主题切换 CSS-in-JS

📌 记住一句话:适合自己的才是最好的。 不必纠结技术选择,关键是动手实践!


📚 推荐资料 & 学习资源


🎉 恭喜你完成了这篇教程!希望你现在对 CSS 世界有了一点新的认识。继续加油,未来的前端大神就是你!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝