通过前缀兼容浏览器的属性一定要连在一起写才能正常么?


抱歉时间..先不放 Demo.. 先描述一下我遇到的问题:
我有一段 CSS 代码, 是这样的:


 .it-is-flex {
  display: -webkit-flex;
  -webkit-flex-direction: row;

  display: -ms-flexbox;
  -ms-flex-direction: row;

  display: flex;
  flex-direction: row;
}

这个在 OS X 的 Safari, Firefox, Chrome 都能正常跑的.
但是我跟其他的代码放在一起 cssmin 以后, 发现不生效了.
三个浏览器都能识别到属性, 显示在 Devtools, 但是就是不生效.
我回去看没有 cssmin 的版本, 依然很正常,,,

搞了好久好久, 按网上 Opera 文档某个例子改了一下顺序, 结果 cssmin 就正常了...


 .it-is-flex {  
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;

  -webkit-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
}

难以理解... 有同学遇到过或者知道原因的么?


添加一个测试:

两个 CSS 文件内容一样, 顺序不一样, 都通过 cleancss by-p.css 命令压缩:

flexbox 成功:
http://repo.tiye.me/flexbox-bug/by-prop.css
http://repo.tiye.me/flexbox-bug/by-prop.html

flexbox 失败:
http://repo.tiye.me/flexbox-bug/by-prefix.css
http://repo.tiye.me/flexbox-bug/by-prefix.html

cleancss 是 Grunt 的 cssmin 插件用的模块:
https://github.com/GoalSmashers/clean-css

文件目测是没有压缩损坏的.
另外调试过程中感觉是 display 只有最后一个能生效, 但是连在一起写又是对的.

浏览器兼容性 css flexbox

上反而减少 11 years, 4 months ago

首先,肯定是不需要连在一起写才能正常的。
所以最值得怀疑的就是楼主用的CSS压缩工具。
我帮你看了下,失败的那个文件,#box的display属性被你用的压缩工具删掉了两个,只剩下了display:-ms-flexbox。

我的身体我的心 answered 11 years, 4 months ago

Your Answer