CSS压缩后样式错乱,怎么解决?
我用Webpack打包项目时启用了CSS压缩,结果上线后发现有些按钮的hover效果没了,还有布局也错位了。本地开发环境一切正常,但构建后的CSS好像被过度压缩了。
我试过用css-minimizer-webpack-plugin,也试过调整minimize选项,但问题依旧。是不是压缩插件把一些关键的CSS规则删掉了?比如伪类或者媒体查询?
这是我的配置片段:
optimization: {
minimizer: [
new CssMinimizerPlugin({
minimizerOptions: {
preset: ['default', { discardComments: { removeAll: true } }]
}
})
]
}
有时候压缩插件太狠,这些选项能救你。
问题在于你的 preset 配置里缺少 autoprefixer,这会导致带前缀的样式丢失,布局就容易出问题。另外 default 预设有时候压缩过于激进。
改一下配置:
safe: true这个参数很关键,它会让 cssnano 跳过一些可能危险的优化,避免把伪类、媒体查询这些关键规则误删。另外提醒一下,检查你的 CSS 源文件里那些出问题的选择器是不是用了比较特殊的写法,比如嵌套太深或者用了一些不太常见的语法,有时候压缩工具对这类写法的容忍度比较低。
如果加了 safe 模式还是有问题,可以尝试把 preset 改成
'safe'试试,或者直接禁用压缩先确认是不是压缩导致的:先这样调一下,大概率能解决 hover 效果和布局问题。