postcss安装和使用(详细)

1,安装postcss:

在此之前需要安装有node.js 

第一步 命令:cnpm install postcss-cli -g

   第二步 命令:cnpm install postcss –g

推荐内容

2,下载autoprefixer插件,并创建postcss.config.js文件并写入配置代码

autoprefixer插件:自动给兼容性差 的属性增加浏览器前缀,提高代码兼容性

这里的方法任意选择一种即可

方法一:将postcss.config.js中的browsers值设置为[“>0%”]

传服务器时,这里的node_modules文件夹不需要上传,存在依赖文件package.json,则使用命令:cnpm i   即可下载所需要的所有模块,自动生成node_modules文件夹

  postcss.config.js文件代码:

// 自动补齐前缀

// autoprefixer 插件

let autoprefixer = require("autoprefixer");



module.exports = {

    plugins: [

        autoprefixer({

            //兼容市面所有版本浏览器

            browsers: ["> 0% "]

        })

    ]

}

方法二:在package.json文件中配置,而package.json文件中只需要挂载一下插件名

postcss.config.js文件代码:

// 自动补齐前缀

// autoprefixer 插件

let autoprefixer = require("autoprefixer");



module.exports = {

    plugins: [

        // 方法二

        // 这里必须挂上插件

        autoprefixer

    ]

}

package.json中需要添加的代码
   "browserslist": [

        "last 5 version",

        ">1%",

        "ie>=8"

    ]

 last 5 version 表示最新五代浏览器

>1% 表示兼容市面上百分之九十九的浏览器

方法三:  创建.browserslistrc文件并写入代码

  这种方法就是把方法二中,package.json中需要添加的代码去掉””,然后放入.browserslistrc文件中

   第一步,先创建一个txt文件,然后另存为所有文件类型的  .browserslistrc文件,文件名就叫.lbrowserslistrc  不要做任何更改

  postcss.config.js文件代码还和第二种方法一样

// 自动补齐前缀

// autoprefixer 插件

let autoprefixer = require("autoprefixer");



module.exports = {

    plugins: [

        autoprefixer

    ]

}

保存类型  这里选 所有文件

        

第二步,在创建好的.browserslistrc文件中输入以下代码 保存

  last 5 version

        >1%

        ie>=8

3,创建package.json文件。并保存相关依赖

第一步,创建package.json文件

         命令:cnpm init

        

第二步,下载postcss.config.js中需要的模块并自动记录在依赖文件package.json中,

命令:cnpm 模块名称  -D  或者cnpm 模块名称  -S

这里的D或者S必须大写

  下载autoprefixer 模块

  下载 postcss模块

   package.json中的显示

4,使用postcss进行转化

 选其中一种即可1)或2)

1)转化:postcss 目标文件 –o目录及新文件名

        

每次保存一次,都需要使用命令手动转化一次

2)实时监听:postcss -w 目标文件 –o目录及新文件名 

         

用这个命令可以实现,只要保存就转化

效果展示

src中的demo.css文件写法

css文件夹demo.css中的代码:

可以看到自动添加了前缀

注意:postcss插件不能直接用于less和sass,只能作用于css文件

   可以先用sass或者less,再将编译好的css文件使用postcss转化

配合postcss使用的插件

一、postcss-import插件的使用

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

  由于postcss转化时不会将导入的css文件一起转化生成新的css文件或者代码,所以需要配合使用postcss-inport插件合并代码

如图:

reset.css文件是demo.css中导入的文件,通过postcss转化后并没有在同级目录生成新的reset.css文件,代码依旧是@impor”./reset.css”

node安装postcss-import 并保存在package.js文件中

命令:cnpm i postcss-import -D

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

// 自动补齐前缀

// autoprefixer 插件 不能直接用于less和sass

let autoprefixer = require("autoprefixer");

// postcss-import 插件  合并代码

let postcssImport = require("postcss-import");

module.exports = {

    plugins: [

        // 这里必须挂上插件

//自动加前缀

        autoprefixer,

 //合并css代码

        postcssImport

    ]

}

使用postcss转化之后引入的reset.css文件也被转化并合并到新的css文件中

如图:

 

2、cssnano插件 用来压缩代码,提高运行速度

1,安装 命令:cnpm i cssnano -S

   2, 使用:

psotcss.config.js中:

// autoprefixer 插件 不能直接用于less和sass

let autoprefixer = require("autoprefixer");

// postcss-import 插件  合并代码

let postcssImport = require("postcss-import");

// vssnano 插件 压缩,提高代码运行速度

let cssnano=require("cssnano");

module.exports = {

    plugins: [

        // 这里必须挂上插件

        autoprefixer,

        postcssImport,

        cssnano

    ]

}

 然后就是使用postcss转化,照着上面步骤操作即可

postcss常用插件

1.postcss-cssnext

在css中用新的样式、新语法时,需要用到postcss-cssnext插件来兼容

在根路径定变零--color变量后,在不使用postcss-cssnext插件时,postcss转化后的css文件中p标签里面的背景色的值还是变量形式,这就需要用到postcss-cssnext插件

功能:使用新的样式

下载:

        

使用:

psotcss.config.js中:

// 自动补齐前缀

// autoprefixer 插件 不能直接用于less和sass

let autoprefixer = require("autoprefixer");

// postcss-import 插件  合并代码

let postcssImport = require("postcss-import");

// vssnano 插件 压缩,提高代码运行速度

let cssnano = require("cssnano");

// postcss-cssnext 使用新的css样式

let postcssCssnext = require("postcss-cssnext");

module.exports = {

    plugins: [

        // 这里必须挂上插件

        autoprefixer,

        postcssImport,

        cssnano,

        postcssCssnext

    ]

}

运行postcss

运行postcss时报这段代码,大概意思为:postcss-cssnext插件包含autoprefixer插件,请删除plugins中的autoprefixer

css效果图:

 

可以看到,转化后的css中p标签中的背景色值变为了red

注意:postcss-cssnext插件包含autoprefixer插件,所以使用了postcss-cssnext插件后不需要再安装、引入、使用autoprefixer插件

postcss-cssnext配置方法和autoprefixer一样:

在创建好的.browserslistrc文件中输入以下代码 保存

  last 5 version

        >1%

        ie>=8

已经使用了autoprefixer,这里在psotcss.config.js中将其注释,

// 自动补齐前缀

// autoprefixer 插件 不能直接用于less和sass

//let autoprefixer = require("autoprefixer");

// postcss-import 插件  合并代码

let postcssImport = require("postcss-import");

// vssnano 插件 压缩,提高代码运行速度

let cssnano = require("cssnano");

// postcss-cssnext 使用新的css样式

let postcssCssnext = require("postcss-cssnext");

module.exports = {

    plugins: [

        // 这里必须挂上插件

        // autoprefixer,

        postcssImport,

        cssnano,

        postcssCssnext

    ]

}

注释后再次运行postcss

css效果图:

和上面一样转化后的p标签中的背景色值为red

2, stylelint插件 检测规范内容

可以提供很多css检测规则,可以去npm看对应文档

下载:

引入:

 建立规范 不能使用十六进制数作为color值

运行postcss后,这里报错了,stylelint检测到第20行代码不符合规范

3 postcss-sprites插件  把多张图片整合成一张大图(雪碧图)

     api较多 ,可以上npm官网上看

下载:

postcss.config.js中的引入并配置:

spritePath中写整合后路径,这里会自动创建文件夹并放置整合的大图(雪碧图)

运行postcss

转化后的css代码效果图:

转化后的css中自动定位了.div1,.div2图片位置

原本的images文件夹中的两张图

两张图被整合后dist文件夹中的一张大图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/504303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息素养和社会责任

1.信息素养: 信息素养是一种了解、收集、评估、和利用信息的知识结构能力。 信息素养的四个要素:信息意识,信息知识,信息能力,信息道德 信息意识是先导(前提),是对关键信息具有持…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第七、八章

概述 本文主要提供《C语言程序设计》(浙大版) 第七、八章的课后习题解析,以方便同学们完成题目后作为参考对照。后续将更新第九、十章节的课后习题解析,如想了解更多,请持续关注该专栏。 专栏直达链接:《C语言程序设计》(浙大版)…

【OceanBase实战之路】第3篇:多租户架构实现资源隔离

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 一、什么是OceanBase的多租户二、兼容模式2.1 MySQL 模式2.2 Oracle 模式三、租户介绍3.1 系统租户3.2 用户租户3.3 Meta 租…

STLExporter 是用于将 Three.js 场景中的几何体数据导出为 STL 格式的类。

demo案例 STLExporter 是用于将 Three.js 场景中的几何体数据导出为 STL 格式的类。下面是关于 STLExporter 的入参、出参、方法和属性的讲解: 入参 (Parameters): scene: THREE.Scene 类型的参数,表示要导出为 STL 格式的 Three.js 场景对象。 出参…

Python API(happybase)操作Hbase案例

一、Windows下安装Python库:happybase pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple 二、 开启HBase的Thrift服务 想要使用Python API连接HBase,需要开启HBase的Thrift服务。所以,在Linux服务器上,执行如…

2024/3/31 蜂鸣器(1)

蜂鸣器分为有源蜂鸣器和无源蜂鸣器。有源内部自带振荡源,接上直流电压即可发声。无源则需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲频率可以发出不同频率的声音。(好想用stm32做个电子琴) 驱动方式(由于蜂鸣器所…

基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍+lw)

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

企微获客助手到底有哪些价值?

获客助手作为企业微信官方提供的获客工具,在私域布局中确实展现了其强大的引流效率和便利性。这一工具通过简化传统引流过程中的复杂步骤,使得企业能够更高效地吸引和转化潜在客户。此外,获客助手还能实现不同渠道的无缝链接,进一…

【研发日记】Matlab/Simulink开箱报告(十一)——Requirements Toolbox

目录 前言 Requirements Toolbox 编写需求 需求联接设计 需求跟踪开发进度 追溯性矩阵 分析和应用 总结 前言 见《开箱报告,Simulink Toolbox库模块使用指南(六)——S-Fuction模块(TLC)》 见《开箱报告&#x…

Kafka开发实录

前言 最近我总是在做大胆的事情,莫不是少年也需要冲冲冲,明明我不是这样的人啊,难不成这就是命运,来自命运石之门的选择!废话不多说,本次是Kafka的实战篇,为什么这篇这么快呢?看了开…

网络——协议定制

目录 再谈协议 结构化数据 计算器 封装socket 封装TcpServer服务器 协议定制 问题 解决方法 守护进程 setsid 守护进程函数 json库 序列化和反序列化 再谈协议 原来不是说过什么是协议吗,协议不就是通信双方必须遵守的约定吗,那这就完了吗&…

大语言模型---强化学习

本文章参考,原文链接:https://blog.csdn.net/qq_35812205/article/details/133563158 SFT使用交叉熵损失函数,目标是调整参数使模型输出与标准答案一致,不能从整体把控output质量 RLHF(分为奖励模型训练、近端策略优化…

Vue系列——数据对象

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>el:挂载点</title> </head> <body&g…

在国内如何给Chrome浏览器安装Vue Devtools插件

Vue Devtools是一个强大的Chrome浏览器插件&#xff0c;为Vue.js开发者提供了丰富的调试和性能优化功能。然而&#xff0c;在国内由于无法访问Google Chrome Web Store&#xff0c;安装Vue Devtools需要使用其他方法。以下是安装步骤&#xff1a; 步骤一&#xff1a;下载Vue D…

逆向分析之antibot

现在太卷了&#xff0c;没资源&#xff0c;很难接到好活&#xff0c;今天群里看到个单子&#xff0c;分析了下能做&#xff0c;结果忙活了一小会&#xff0c;幸好问了下&#xff0c;人家同时有多个人再做&#xff0c;直接就拒绝再继续了。就这次忘了收定金了&#xff0c;所以原…

输出1到10的阶乘--C语言

#include<stdio.h> int fac(int n){if(n<1){return 1;}elsereturn fac(n-1)*n; } int main(){int i, result;for(i1;i<10;i){resultfac(i);printf("%d!%d\n",i,result);}} 输出结果&#xff1a;

AI跟踪报道第35期-新加坡内哥谈技术-本周AI新闻:终于打败ChatGPT的机器人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

二维码门楼牌管理应用平台:创新管理与服务的全新方式

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、二维码门楼牌管理应用平台的功能特点三、切换功能在城市管理中的应用四、二维码门楼牌管理应用平台的未来展望 前言 在数字化时代的浪潮中&#xff0c;二维码技术以其便捷、高效的特点&#xff0c;正逐渐渗透到我们生…

C语言每日一题

1.题目 二.分析 本题有两点需要注意的&#xff1a; do-while循环 &#xff1a;在判断while条件前先执行一次do循环static变量 &#xff1a;程序再次调用时static变量的值不会重新初始化&#xff0c;而是在上一次退出时的基础上继续执行。for( i 1; i < 3; i )将调用两次…

容器四(Map 接口)

目录 HashMap 和 HashTable Map 接口中的常用方法 HashMap 底层实现 Hashmap 基本结构 存储数据过程 put(key,value) 取数据过程 get(key) 扩容问题 JDK8 将链表在大于 8 情况下变为红黑二叉树 Map 就是用来存储“键(key)&#xff0d;值(value) 对”的。 Map 类中存储的…