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 相关文章推荐
实例:用 JavaScript 来操作字符串(一些字符串函数)
Feb 15 Javascript
js输入框邮箱自动提示功能代码实现
Dec 10 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 Javascript
js实现文章目录索引导航(table of content)
May 10 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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 已经成熟
2006/12/04 PHP
Cakephp 执行主要流程
2010/03/24 PHP
PHP session会话的安全性分析
2011/09/08 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
js表格分页实现代码
2009/09/18 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Python3基础之条件与循环控制实例解析
2014/08/13 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
Python os库常用操作代码汇总
2020/11/03 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
校运会入场式解说词
2014/02/10 职场文书
安全生产演讲稿
2014/05/09 职场文书
运动会加油稿50字
2015/07/21 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
Vue监视数据的原理详解
2022/02/24 Vue.js