问题合集更更更之cssnano配置导致打包重新计算z-index

前言

👏问题合集更更更之cssnano配置导致打包重新计算z-index~

🥇记得点赞+关注+收藏!

1.问题描述

代码中写了样式代码,z-index层级关系

z-index:2029;

进行打包之后,发布到环境中,发现层级变了

z-index:4;

2.问题原因

首先排查打包配置,发现有引入cssnano(版本5.x),并有如下配置

css: {
    postcss: {
      plugins: [
        cssnano({
          preset: "advanced",
        }),
      ],
    },
  },

preset表示传递一个预设以选择一组预先配置的优化,advanced则是应用一系列高级优化。cssnano的预设为advanced,在优化时就会重新计算和重新排序 z-index 值,导致z-index数值超出预期。

3.解决步骤

注:cssnano版本不同,配置项存在变化

在保留advanced高级优化的前提下,单独设置zindex: false ,不进行重新计算和重新排序;

vite.config.js:

export default defineConfig({
  css: {
    postcss: {
      plugins: [
        cssnano({
          preset: ["cssnano-preset-advanced", {
              // 打包不修改zIndex
              zindex: false ,
              // ... 其他配置
          }],
        }),
      ],
    },
  },
});

4.cssnano了解

介绍

‌cssnano是一个基于PostCSS的CSS优化工具。

cssnano的主要功能是对CSS文件进行多方面的优化,以确保最终生成的文件对生产环境来说体积是最小的。它通过采用格式良好的CSS并通过许多优化措施,来确保最终的生产环境中的文件尽可能小。

cssnano的优化措施可能包括但不限于压缩CSS代码、合并选择器、删除未使用的样式等,从而减小文件大小,提高网页加载速度。这种优化对于大型且杂乱的CSS文档尤为重要,因为如果CSS文档大且杂乱,网站的加载时间就会变长。通过使用cssnano,可以有效地管理和优化CSS,使得网站的性能得到提升‌12。

此外,cssnano作为PostCSS的一个插件,可以集成到构建过程中,自动化地处理CSS文件,无需手动进行复杂的优化操作。这对于开发人员来说,不仅提高了工作效率,也确保了网站的性能和用户体验‌

相关地址:

github地址:

https://github.com/cssnano/cssnano

npm地址:

https://www.npmjs.com/package/cssnano

文档地址:

https://cssnano.github.io/cssnano/

安装

cssnano是一个PostCSS插件,所以运行cssnano还需要安装PostCSS。

npm install --save-dev postcss-cli

preset支持类型:

  1. default

默认预设,提供基本的 CSS 优化。

  1. advanced

提供更加激进的优化,可能会更改 CSS 的样式,但可能会破坏某些依赖于特定布局的网页。

默认情况下,高级转换没有与cssnano捆绑在一起,所以需要安装预设

npm install cssnano-preset-advanced --save-dev

preset支持多种配置方式:

在这里插入图片描述

转换策略

根据配置的预设cssnano,优化是不同的;使用默认预设,我们只提供安全转换。
具体支持如下(更多详情参考文档

Optimisationdefaultadvancedlite
autoprefixer
cssDeclarationSorter
calc
colormin
convertValues
discardComments
discardDuplicates
discardEmpty
discardOverridden
discardUnused
mergeIdents
mergeLonghand
mergeRules
minifyFontValues
minifyGradients
minifyParams
minifySelectors
normalizeCharset
normalizeDisplayValues
normalizePositions
normalizeRepeatStyle
normalizeString
normalizeTimingFunctions
normalizeUnicode
normalizeUrl
normalizeWhitespace
orderedValues
reduceIdents
reduceInitial
reduceTransforms
svgo
uniqueSelectors
zindex

配置

可以在项目的根目录下创建postcss.config.js文件来配置cssnano或者在打包配置文件中出来(如vite.config.js)

postcss.config.js:

module.exports = {
  plugins: [
    cssnano({
     preset: ['default', {
        // 在这里配置或覆盖默认预设中的选项
        // 例如,你可以启用或禁用某些特定的插件
        // 打包不修改zIndex
        { zindex: false }
        // ... 其他配置
      }],
    })
  ],
};

vite.config.js:

export default defineConfig({
  css: {
    postcss: {
      plugins: [
        cssnano({
          preset: ["cssnano-preset-advanced", {
              // 打包不修改zIndex
              zindex: false ,
              // ... 其他配置
          }],
        }),
      ],
    },
  },
});

5.写在最后🍒

看完本文如果觉得对你有一丢丢帮助,记得点赞+关注+收藏鸭 🍕
更多相关内容,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值