首页 > 其他分享 >还记得PostCSS吗,看这一篇文章就够了!!!

还记得PostCSS吗,看这一篇文章就够了!!!

时间:2024-03-29 16:30:59浏览次数:23  
标签:插件 一篇 color PostCSS 就够 处理器 postcss css

背景

由于项目中的使用,又想深入了解,想着写一篇博客,以此监督自我学习 ~

那么首先,让我们带着几个问题来了解一下,PostCSS

  • PostCSS 是什么
  • PostCSS 有什么用
  • 如何使用 PostCSS

一、是什么

官方:用 JavaScript 代码来处理 CSS

那么我们根据官方的这一段话,就可以得知一些相关信息。

文档:PostCSS中文网

1.1 痛点

相较于CSS,我们经常用的less, sass和stylus这些预处理器,虽然很便利,解决了部分痛点(更具灵活性,维护性

但以下还有一些痛点困扰着我们开发者

  1. 不兼容css标准:每个预处理器都有自己的标准,并不是W3C标准,这意味着不一定兼容新的W3C标准。
  2. 不能扩展:无论哪种预处理器,都会被限制设定。
  3. 不能按需导入:如sass的@extend 功能,当你不使用它们,包的体积没有任何变化

那么在其痛点上,就延伸出例如PostCSS后处理器的插件。

1.2 处理器

以上,我们提到了预处理器,以及PostCSS后处理器,那么这又是什么?

1.2.1 预处理器(less/sass/stylus)

含义:最终生成css为目标的领域特定语言(有自己的语法)

举个栗子(less):

.sameColor(@color: '#333'){
   color: @color;
   border-color: @color;
}

.tag {
  .sameColor('#66ccff');
}

编译后

.tag {
  color: '#66ccff';
  border-color: '#66ccff';
}
  • 优点:语言级逻辑处理,动态特性,改善项目结构
  • 缺点:采用特殊语法,框架耦合度高,复杂度高

1.2.2 后处理器(PostCSS)

含义:对css进行处理,生成css的预处理器

PostCSS 使用 Autoprefixer 插件(浏览器兼容):

 #content {
   display: flex;
 }

编译后

 #content {
   display: -webkit-box;
   display: -webkit-flex;
   display: -ms-flexbox;
   display: flex;
 }
  • 优点:css原生语法,容易模块化贴近css的未来标准
  • 缺点:逻辑处理有限

二、怎么用

好了,现在我们了解到,PostCSS是后处理器,可以与预处理器并存结合使用,并不冲突。

2.1 安装

首先,我们来安装一下PostCSS

npm install -g postcss-cli
npm install -g postcss

2.2 配置

其次,我们再创建一个postcss.config.js文件,将需要的插件,写入该文件中,这里我们就安装autoprefixer插件

那么下面就具体介绍的几个方法的使用,使用其中一种即可

2.2.1 方法1 (postcss.config.js )

postcss.config.js 里直接设置browsers:

module.exports = {
  plugins: [
    require('autoprefixer')({
      // 就h5使用
      remove: process.env.UNI_PLATFORM !== 'h5',
      //兼容市面所有版本浏览器
      browsers: ["> 0% "]
    }),
  ],
};

2.2.2 方法2(package.json)

package.json设置browserslist

前提,要在postcss.config.js上挂载上autoprefixer插件

"browserslist": [
   "last 2 version",
   "> 1%",
   "ie >= 8"
]
  • last 5 version:表示最新五代浏览器
  • 大于1%: 表示兼容市面上百分之九十九的浏览器

2.2.3 方法3(.browserslistrc)

实际上,这种方法与方法2(package.json),大差不差,
就是将package.json文件里的代码转移到.browserslistrc文件中。

但也前提需要先行挂载autoprefixer插件,然后在.browserslistrc文件中写入:

last 2 versions 
> 1% 
ie >= 8

2.3 命令转化

我们还可以通过PostCSS单独将代码转化一番,这里有2个方法,也是一样,选择其一即可。

2.3.1 一次性

postcss [转化的文件] -o [生成的文件]

postcss src/index.css -o css/index.css

命令执行就只执行一次,多次保存,需多次转化

2.3.2 实时监听

postcss -w [转化的文件] -o [生成的文件]

post -w src/index.css -o css/index.css

实时监听目标转化文件,进行变动转化。

注意:PostCSS不能直接转化lesssass,只能转化css,因此可将lesssass先编译为css,再进行PostCSS转化

2.4 插件使用

基于PostCSS的框架上,扩展了很多工具和插件,我们可以按需使用,进行对css进行最佳的后处理

2.4.1 autoprefixer

其实上文,我们已经了解过 autoprefixer,其作用是为 CSS 中的属性添加浏览器特定的前缀,实现各个浏览器的兼容性。

导入使用,上文已作说明,这里就不写了(见2.2配置

2.4.2 postcss-import

postcss-import插件整合其他css代码,实现css模块化。

因为PostCSS转化时不会将导入的css文件转化,所以需要配合使用postcss-import插件合并代码。

postcss.config.js中引入postcss-import,并在pluings中添加:

module.exports = {
  plugins: [
    require("postcss-import"),
    require('autoprefixer'),
  ],
};

2.4.3 postcss-cssnext:

cssnext,你可以理解为css4,里面有许多css3没有的特性(非正式标准),我们可以借助PostCSS降级到低版本css

postcss.config.js中引入postcss-cssnext,并在pluings中添加:

module.exports = {
  plugins: [
    require("postcss-cssnext"),
    require("postcss-import"),
    require('autoprefixer'),
  ],
};

转化效果:

:root {
   --text-default: #333;  
}

body {
   color: var(--text-default);
}

转化:

body {
   color: #333;
}

cssnext具体的相关使用,这里就不阐述了。

2.4.4 其他插件

  • cssnano:用来压缩代码,提高运行速度。
  • postcss-stylelint:用来检查 CSS 中可能存在的格式问题
  • postcss-font-magician:用来生成 CSS 中的 @font-face 声明
  • precss:允许在 CSS 中使用类似 SASS 的语法

还有其他更多,详细见官网:PostCSS plugins


三、感悟

PostCSS,为css开创了一条新的思路,庞大的插件体系,可以随心所欲地DIV自己的css。

而这些都是css领域的皮毛,我了解的越多越不懂,由衷地感叹互联网的技术发展迅速。

一门传世的技术,都是前人解决众多致命的痛点,创作出来的。实质上,是为了提效,解放开发人员,俗称合法偷懒。

所以为了跟上这个快节奏的社会,我们不断地奋斗躺平,奋斗躺平,我们一生都在,由简入繁,由繁入简罢了。

所以,在躺平的过程中,我们更要积攒知识,就如弓箭一般,蓄势待发。

相信在不久的将来,我们将会离开大海,去往更为广阔的天空

标签:插件,一篇,color,PostCSS,就够,处理器,postcss,css
From: https://blog.csdn.net/weixin_43759645/article/details/137140635

相关文章

  • 黑客零基础入门教程及方法,从零开始学习黑客技术,看这一篇就够了
    黑客,对于很多人来说,是一个神秘的代名词,加之影视作品夸张的艺术表现,使得黑客这个本来只专注于技术的群体,散发出亦正亦邪的神秘色彩。黑客源自英文hacker一词,最初曾指热心于计算机技术、水平高超的电脑高手,尤其是程序设计人员,逐渐区分为白帽、灰帽、黑帽等。其中,白帽黑客被......
  • 我的第一篇随笔之web3 投资认知
    币圈牛市投资认知1:眼光要长远,现在比特币和美国经济强绑定的;而美国依赖的是美元霸权,如果美国蹦盘将导致世界秩序重组,所以比特币不可能崩盘,只会越来越贵2:相信经济周期趋势的,不管是什么黑天鹅事件都不能阻挡大的趋势的改变,大趋势大周期一旦形成,不肯定因为某件事情而改变;3:现实世界......
  • 第一篇博客
    沈阳航空航天大学软件工程第一次作业院(系):计算机学院专业:计算机科学与技术班级:计科2102学号:213401010220姓名:霍洪达带队教师:张翼飞2024年3月28日请阅读北航陈彦吉同学的这篇博客中(地址:https://www.cnblogs.com/ChildishChange/p/7363123.html)的各......
  • 这是一篇废物的毕设过程(1)
    其实自己四年了啥技术也没学会,毕设需要开发一个个性化推荐交流系统,现在刚刚开始,为了自己后来答辩的时候有点印象,决定记录一下毕设的过程我做的是springboot+VUE项目,今天才新建了一个idea项目,之前各种课设都是水的,从来没有自己开发过,所以甚至连前后端应该在哪写都不知道,准备用......
  • 零拷贝看这一篇就够了(详细图解)
    目录​编辑前言为什么要有DMA技术?传统的文件传输有多糟糕?如何优化文件传输的性能?如何实现零拷贝?mmapwritesendfile使用零拷贝技术的项目PageCache有什么作用?大文件传输用什么方式实现?总结前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存10倍......
  • word批量添加后缀名的方法有哪些?看这里就够了
    在日常办公和学习中,我们经常需要处理大量的Word文档。有时候,为了更好地组织和管理这些文档,或者为了满足特定的需求,我们可能需要给这些Word文档批量添加后缀。当我们拥有大量的Word文档时,如何有效地分类和管理这些文档成为了一个重要的问题。通过给Word文档批量添加后缀,我们可以......
  • python入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
    本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。01.python由来与发展介绍02.项目开发流程第一章markdown编辑器01.markdown基本语法02.Typora简介与安装03.Windows上gitee+Typora设置图床04.macOS上gitee+Typora设置图床第二章计算机......
  • 零基础如何自学编程?用这6种方法就够了!
    前言自学编程的过程中,一部分程序员遇到冰冷的英语字母,枯燥的编程教程,果断选择了放弃。但其实自学编程不是那么难,只要是理工科生、逻辑思维还行的小伙伴,编程入门完全可以。对于初学者来说,可以采用视频+书籍的方式进行学习。这两种方式形成互补关系。编程教学视频可以让......
  • 工作中总结的30个常用Linux指令,实在记不住就别硬记了,看这篇就够了
    写在开头最近发现自己记忆力严重下滑,很多sql命令,linux命令都记不住,特别是linux命令,很多命令参数很多,一段时间不用,再去使用就需要从网上重查了,很烦人,为此花了一些时间把之前笔记中的Linux命令给整理了一下,汇总出30个常用的分享出来,下次再想不起来直接看这篇文章就行了。1、Linux......
  • js数组遍历方法及应用,看这篇就够了
    背景:日常开发中处理数组常用到的遍历方法,看这篇就够了目录数组遍历方法forforEachfor...ofmapfilterfor...inreduce求和、求积数组去重计算数组中每个元素出现的次数将二维数组转化为一维将多维数组转化为一维对象里的属性求和按对象属性给数组分组简单对比数组......