Webpack打包css后z-index被重新计算的解决方法


Posted in Javascript onJune 18, 2017

发现问题

最近在使用 Webpack 打包 css 文件时,发现了一个问题,发现打包后的 z-index 值跟源文件 z-index 不一致。

如下图,左侧是源文件,右侧是打包后的文件:

Webpack打包css后z-index被重新计算的解决方法

即使加上 !important,经过 OptimizeCssAssetsPlugin 调用 cssProcessor cssnano 处理之后也是 z-index: 2。

因此,很可能是 cssnano 进行了重新计算(cssnano 称为 rebase),而且这种计算是不够准确的。

Webpack打包css后z-index被重新计算的解决方法

因为打包后的文件有两处 z-index,这里是第二处,所以此处 z-index 是 2。

解决方法

cssnano 将 z-index rebase 归类为 unsafe,而不是 bug,只有在单个网页的 css 全部写入一个 css 文件,并且不通过 JavaScript 进行改动时是 safe。

参考:http://cssnano.co/optimisations/zindex/

项目中提取了公共的 css,已经对 layout 设置了很小的 z-index,因此受到 cssnano z-index rebase 的影响。

cssnano 默认进行 z-index rebase。

unsafe (potential bug) 优化项默认不开启应该比较友好。

new OptimizeCssAssetsPlugin({
 cssProcessor: require('cssnano'),
 cssProcessorOptions: {
 discardComments: {removeAll: true},
 // 避免 cssnano 重新计算 z-index
 safe: true
 },
 canPrint: false
})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
Javascript下的keyCode键码值表
Apr 10 Javascript
JavaScript 三种不同位置代码的写法
Oct 25 Javascript
模拟多级复选框效果的jquery代码
Aug 13 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
Apr 16 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
react的hooks的用法详解
Oct 12 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 #Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 #Javascript
jquery DataTable实现前后台动态分页
Jun 17 #jQuery
jQuery Jsonp跨域模拟搜索引擎
Jun 17 #jQuery
vue router路由嵌套不显示问题的解决方法
Jun 17 #Javascript
详解vue+vueRouter+webpack的简单实例
Jun 17 #Javascript
js轮播图无缝滚动效果
Jun 17 #Javascript
You might like
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
基于python plotly交互式图表大全
2019/12/07 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Python里面如何实现tuple和list的转换
2012/06/13 面试题
物理研修随笔感言
2014/02/14 职场文书
2015年药房工作总结
2015/04/25 职场文书
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python