当前位置: 首页 > Web前端 > CSS

说说CSS预处理器

时间:2023-03-31 11:36:58 CSS

完整高频题库地址:https://github.com/hzfe/awesome-interview完整高频题库阅读地址:https://febook.hzfe.org/相关问题CSS主要有哪些预处理器?为什么需要使用预处理器?各预处理器优缺点答重点SassLessStylusPostCSS工程化提升效率CSS本身不是可编程语言,随着前端项目越大,CSS维护难度越大。CSS预处理器的作用本质上是为CSS添加一些可编程的特性。通过变量、嵌套、简单的程序逻辑、计算、函数等特性,让CSS更易于维护,通过工程手段提高开发效率。目前主流的CSS预处理器主要有Sass、Less、Stylus、PostCSS。深入知识点1.PostCSS[1]PostCSS是目前最流行的CSS前/后处理器。PostCSS本体功能比较简单,提供了一种用JavaScript处理CSS的方法。PostCSS会将CSS解析成AST(AbstractSyntaxTree抽象语法树),其他插件会有不同的处理方式。FunctionPostCSS主体功能比较简单,大部分CSS处理功能都是由插件提供的,以下是一些常用的插件:Autoprefixer为CSS中的属性添加浏览器特定的前缀。postcss-preset-env根据browserslist指定的目标浏览器,将一些新的CSS特性转换成目标浏览器支持的语法。cssnano提供CSS压缩。postcss-nested提供CSS嵌套功能。postcss-px-to-viewport提供pxtovw功能。postcss-custom-properties支持CSS自定义属性。优点插件系统完善,可扩展。插件功能齐全。生态优良。缺点配置相对复杂。2.Sass[2]在完全兼容CSS语法的前提下,Sass为CSS提供了变量、嵌套、混合、运算符、自定义函数等可编程能力。特性Sass中有几个常用的特性:变量:颜色、字体或任何CSS值都可以存储在变量中。嵌套:CSS选择器可以嵌套,提供清晰的层次结构。混合:可以定义和重用代码块。扩展/集成:可以在另一个选择器中继承一个选择器。运算符:您可以在CSS中使用运算符来执行计算。条件/循环语句:您可以循环/有条件地生成CSS。自定义函数:可以自定义复杂操作的函数。优点是用途广泛。功能支持很完善。可编程性强。缺点CSS的复杂度不可控。node-sass在国内不太好安装(不是sass本身的缺点,dart-sass可以替代)。3.Less[3]Less类似于Sass,完全兼容CSS语法,为CSS提供变量、嵌套、混合、计算等可编程能力。Less是用JavaScript实现的,可以直接在浏览器中使用。在Less中有几个常用的功能:变量:颜色、字体或任何CSS值都可以存储在变量中。嵌套:CSS选择器可以嵌套,提供清晰的层次结构。Mixins:可以定义和重用的代码块。扩展/集成:可以在另一个选择器中继承一个选择器。计算:可以在CSS中执行计算。条件/循环语句:您可以循环/有条件地生成CSS。优点是用途广泛。可在浏览器中运行,轻松实现主题定制功能。缺点是不支持自定义函数(简单的逻辑可以通过mixins实现)。编程能力比较弱。4.Stylus[4]Stylus的基本功能与Sass/Less非常相似。Stylus的特点是冒号、分号、逗号和括号都是可选的,所以你可以写出非常简洁的CSS,例如:bodybackground-color:#000body::aftercontent:'HZFEStudio'color:#ffffont-size:20px延伸阅读1.CSSModules[5]CSSModules不同于上面介绍的预处理器。它不是可编程的CSS,只是在CSS文件中增加作用域和模块依赖,主要解决CSS全局污染的痛点和嵌套太深的问题,解决全局污染。使用示例如下:/*style.css*/.hzfeTitle{color:#666;font-size:20px;}从“./style.css”导入样式;document.body.innerHTML=`HZFEStudio`;2.CSS-in-JS顾名思义,CSS-in-JS是一种在JavaScript中编写CSS的方法。利用JS的优势可以实现非常灵活和可扩展的样式。CSS-in-JS有很多实现,最流行的是Styled-components。通过Styled-components编写CSS的例子如下:importReactfrom"react";importstyledfrom"styled-components";functionhzfe(){constTitle=styled.h1`font-size:1.5em;文本对齐:居中;颜色:#666;`;returnHZFEStudio;}3.Tailwind和Utility-firstCSS随着近几年Tailwind的流行,utility-firstCSS的概念也重新流行起来。这里简单介绍一下TailwindCSS。3.1Tailwind[6]TailwindCSS是功能类优先的CSS框架,通过组合不同的类名来实现页面设计。Tailwind的主要优点如下:无需考虑类命名。CSS文件大小增长是可控的,purge可以生成非常小的CSS文件。统一设计体系下的风格和布局。IDE集成非常好。参考资料PostCSS-一个用JavaScript转换CSS的工具Sass-拥有超能力的CSSLess-就是CSS,只是多了一点Stylus-远见从未如此重要CSSModulesTailwindCSS