原生CSS终于支持嵌套了,Sass和Less还香吗

更新日期: 2026-03-31 阅读: 13 标签: css

最近前端圈子里,好像到处都在说Tailwind CSS。走到哪都能听到“原子化CSS真香”、“不用起类名太爽了”。

Tailwind确实火,但千万别以为原生CSS已经被淘汰了。

实际上,在这个各种框架满天飞的时代,还有很多人在用原生CSS。大量老项目跑在上面,也有不少开发者就是喜欢原生,不想加一堆工具链。

而就在最近,原生CSS放了一个大招。


CSS嵌套正式成为标准

MDN官方发了一条消息:CSS嵌套现在已经是基线支持了。

什么意思?就是说从今往后,你不需要Sass,也不需要Less,直接用原生CSS就能写嵌套了。

以前写原生CSS,最烦的就是重复写选择器:

/* 以前这么写 */
.card { color: black; }
.card:hover { color: blue; }
.card .title { font-weight: bold; }

现在可以这么写:

/* 现在这么写 */
.card {
  color: black;

  &:hover { 
    color: blue; 
  }

  .title { 
    font-weight: bold; 
  }
}

是不是清爽多了?


&符号是什么

上面代码里的&就是嵌套选择器。它代表父级选择器,也就是外面的.card。你可以拿它跟:hover、:focus这些伪类搭配,代码结构一下子就清晰了。

除了&,CSS嵌套也支持直接写子选择器,像上面.title那样,默认就是嵌套在里面。


跟Sass/Less有什么区别

以前用Sass或Less,主要图的就是嵌套和变量。现在原生CSS有了嵌套,变量的支持也挺好了,那预处理器还有必要吗?

区别还是有的。Sass和Less能做的远不止这些:

  • 函数和混入:写复杂的样式逻辑,循环、条件判断这些,原生CSS暂时还不行

  • 模块化:Sass的@use和@import比原生管理得更好

  • 兼容性:老浏览器需要兼容的时候,预处理器能帮忙处理

但如果你项目不复杂,不想装一堆依赖,原生CSS现在确实够用了。


Tailwind用户需要在意吗

有人可能会说,我用Tailwind,原生CSS支不支持嵌套跟我有什么关系?

关系不大,但有一点值得想一下:Tailwind本质上是工具集,帮你快速写样式。但复杂组件里的特殊样式,或者那些Tailwind不好处理的地方,你可能还是得写原生CSS。这时候嵌套就有用了。

另外,如果你在做一个很小的页面,为了写几行样式去配一套Tailwind,确实有点重。这时候原生CSS就挺合适。


浏览器支持怎么样

MDN说的“基线支持”,意思是最新版本的主流浏览器基本都支持了。Chrome、Firefox、Safari、Edge的新版本都能跑。但如果你要兼容老浏览器,还是得用预处理器处理一下。


要不要换

分情况看。

如果你现在用Sass或Less用得好好的,项目也没啥问题,没必要急着换。预处理器能干的事比原生多不少。

如果你项目本身就不依赖预处理器,或者新项目比较轻量,可以试试原生CSS。少装一层工具链,开发体验确实更直接。

如果你是Tailwind用户,这个更新对你影响不大,但多了解一点也没坏处。


写在最后

CSS这么多年,一直在慢慢进步。嵌套这件事,开发者喊了很多年,现在终于原生支持了。

前端工具一直在变,今天火的框架,过几年可能就不流行了。但原生标准不一样,它走得慢,但走得稳。这次嵌套的加入,确实是原生CSS补上的一块短板。

不管你用不用,了解一下总没坏处。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13532

相关推荐

css完美解决网页在iphoneX的头部刘海显示问题

css完美解决iphonX白条,网站扩展到整个屏幕,CSS Shapes中有个CSS属性名为shape-outside实现元素滚动自动环绕iPhone X刘海

HTML/CSS中的空格处理_如何保留页面中的空格

在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了,同时内容前后的空格也会被清除。HTML空格保留的方式、CSS空格保留的方式。

css自动省略号...,通过css实现单行、多行文本溢出显示省略号

网页开发过程中经常会遇到需要把多行文字溢出显示省略号,这篇文章将总结通过多种方法实现文本末尾省略号显示。

css中 出现height为100%失效的原因及解决方案

我们都知道需要给html和body标签设置了高度height:100%之后,再给内部的div设置height:100%的时候,内部div的高度100%才会起到作用。这是由于:%是一个相对父元素计算得来的高度,要想使他有效,我们需要设置父元素的height。

工作中常用且容易遗忘的css样式整理,建议收藏

单行文本的溢出显示省略号(一定要有宽度),中英文自动换行,设置placeholder的字体样式,不固定高宽 div 垂直居中的方法,IOS 页面滑动卡顿,设置滚动条样式

深入理解letter-spacing,word-spacing的对比区别

word-spacing 属性增加或减少单词间的空白(即字间隔)。 letter-spacing 属性增加或减少字符间的空白(字符间距)。

你知道我们平时在CSS中写的%都是相对于谁吗?

编写CSS的时候,经常会用到百分比赋值(%)实现自适应。像我们最常使用的流式布局设计模式,基本所有的column的宽度都是通过%来取值的。或者比如经常会遇到的元素水平垂直居中问题

CSS3 clip-path 用法介绍

clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的URL定义的路径或者外部svg的路径,或者作为一个形状例如circle().。clip-path属性代替了现在已经弃用的剪切 clip属性。

css禁止选中文本_兼容实现禁用选择功能

有时候,我们需要使页面内容不可选择。首先想到的是一个css属性:user-select。user-select有两个值:none:用户不能选择文本 ,text:用户可以选择文本

react中使用css的7种方式

react中使用css的7种方式:在组件中直接使用style、在组件中引入[name].css文件、在组件中引入[name].scss文件、在组件中引入[name].module.css文件、在组件中引入 [name].module.scss文件、使用styled-components

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!