首页 web前端 css教程 您不需要 CSS 预处理器

您不需要 CSS 预处理器

Nov 01, 2024 am 08:56 AM

You don

原生 CSS 在最近几个月/几年里取得了长足的进步。在这篇文章中,我将回顾人们使用 SASS、LESS 和 Stylus 等 css 预处理器的主要原因,并向您展示如何使用原生 CSS 完成这些相同的事情。

分隔文件

分离文件是人们使用预处理器的主要原因之一。尽管您已经能够将另一个文件导入到 CSS 文件中已经有一段时间了。看起来像这样。

@import url("./utils.css");
登录后复制
登录后复制

您可以使用相对或绝对路径,就像锚标记或任何其他资源上的 href 一样。

这个预处理器之间的主要区别在于,虽然预处理器会在编译时组合 then,但 CSS 将在运行时发出 http 请求。

嵌套规则

好吧,这是使用预处理器的主要原因。至少这是我过去使用它的主要原因。

但是 CSS 现在支持嵌套,并且它的工作方式主要是您习惯使用预处理器的方式。

header {
  h1 {
    font-weight: bold;
  }

  h2 {
    font-weight: normal;
  }
}

登录后复制
登录后复制

太棒了,像我们几十年来编写 CSS 的巨大优势。

header h1 {
  font-weight: bold;
}

header h2 {
  font-weight: normal;
}
登录后复制
登录后复制

须藤选择器

Sudo 选择器在本机 CSS 中的工作方式与您可能习惯的预处理器相同。

button {
  color: blue;

  &:hover {
    color: purple;
  }
}
登录后复制

您可以在 MDN 上阅读有关嵌套的更多信息。

变量

预处理器长期以来的一个原因是变量。您可以将所有颜色、间距等保存在一个文件中,并在各处进行全局更新。

现在你可以在原生 CSS 中做到这一点,一段时间。事实上,它在很多方面都比预处理器更好。

全局变量

全局变量包含在 :root 规则中。这些可以在任何地方引用。

:root {
  --bg-color: #333;
}
登录后复制

要使用变量,必须使用 var 标签引用

button {
  background-color: var(--bg-color);
}
登录后复制

作用域变量

您还可以在选择器上设置变量的范围,例如...

header {
  --bg-color: #999;
}
登录后复制

所以在这种情况下,引用 var(--bg-color);在标头选择器中将导致 #999;

在运行时重新赋值

因此,CSS 变量相对于预处理器的主要优点是它们可以在运行时被覆盖,而预处理器一旦编译,它就是永久性的。

例如,如果您有一个网站想要支持浅色和深色模式。使用 css 变量可以非常轻松地实现这一点。

:root {
  --bg-color: white;
}

body {
  background-color: var(--bg-color);
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg-color: black;
  }
}
登录后复制

要使用预处理器实现类似的功能,您需要使用 Javascript 在主体上切换类,并使用 .dark 类或类似内容覆盖所有规则。

计算

大多数预处理器(例如 LESS、Stylus 或 SASS)都可以让您对事物进行数学运算。就像你想把一个变量分成两半等等。

您可以在原生 CSS 中使用 calc 函数来完成此操作。

@import url("./utils.css");
登录后复制
登录后复制

这有多酷?

变换颜色

所以另一个流行的功能(至少对我来说)是在CSS预处理器中使颜色变亮和变暗。您现在可以在本机 CSS 中执行此操作,也可以使用颜色混合。

header {
  h1 {
    font-weight: bold;
  }

  h2 {
    font-weight: normal;
  }
}

登录后复制
登录后复制

上面的内容相当于您在预处理器中使用 lighten(red, 50%) 所做的事情。

要变暗,只需与黑色混合而不是白色

header h1 {
  font-weight: bold;
}

header h2 {
  font-weight: normal;
}
登录后复制
登录后复制

我希望下次你选择在项目中使用什么工具时,你会尝试一下原生 CSS。已经走过了很长一段路。

以上是您不需要 CSS 预处理器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

如何通过CSS选择第一个类名为item的子元素? 如何通过CSS选择第一个类名为item的子元素? Apr 05, 2025 pm 11:24 PM

在元素个数不固定的情况下如何通过CSS选择第一个指定类名的子元素在处理HTML结构时,常常会遇到元素个数不�...

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? 在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? Apr 05, 2025 pm 10:21 PM

在前端开发中如何实现类似Windows...

我们如何创建一个在SVG中生成格子呢模式的静态站点 我们如何创建一个在SVG中生成格子呢模式的静态站点 Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

See all articles