ecomfe / est

EFE Styling Toolkit based on Less
http://ecomfe.github.io/est
MIT License
397 stars 70 forks source link

Flex 很多属性前缀冗余 #19

Closed yisibl closed 9 years ago

yisibl commented 10 years ago

比如最明显的 -moz-flex-wrap 属性,Firefox并未实现带有前缀版本。

也就是说所有多行相关的属性, Firefox 28 之前均为实现带有前缀版本。

.flex-wrap(@wrap) {
    @ms-wrap: ~`"@{wrap}".replace(/nowrap/ig, "none")`;
    -webkit-flex-wrap: @wrap;
       -moz-flex-wrap: @wrap;
        -ms-flex-wrap: @ms-wrap;
            flex-wrap: @wrap; 
}
Justineo commented 10 years ago

是确认 Firefox 没有实现过 -moz-flex-wrap 属性的意思吗?

Justineo commented 9 years ago

Fixed in f92dd7bd2b6c72517b0d8ea093a0a7f827d826b3

Megasu commented 9 years ago

关于加前缀/属性前缀冗余的问题,我一直都想找能autoprefixe自动完成添加前缀的,而不是把实现方式都写到less库里面,不然维护起来显得麻烦。

如果坚决要这样写到est库,建议参考autoprefixer项目标准,分担一部分est的维护成本。

Less有一个叫LessHat的库,也挺好使,如.size()方法,可接受多总参数,有默认单位(px),可参考,但不支持rem。

// 如:

.test1{.lh-size(50);}
.test2{.lh-size(50,60) ;}
.test3{.lh-size(50,60em);}
// 编译后:

.test1 {
  width: 50px;
  height: 50px;
}
.test2 {
  width: 50px;
  height: 60px;
}
.test3 {
  width: 50px;
  height: 60em;
}

最后建议还有2个建议:

Justineo commented 9 years ago

est 2.0 以后已经建议不使用处理前缀的 mixin 了,都已经声明建议使用 Autoprefixer。不过这些 mixin 还是都留着,来兼容以前写的代码。

LessHat 在做的事也主要是处理前缀,我知道他们有提供带前缀的版本。同时用几个 mixin 基础库的项目很少见。而且目前还没有遇到这个问题,所以暂时没加前缀,像 Preboot 应该也是不加前缀的。.size() 啥的几个 mixin 库都差不多。

移动端的优化的确可以考虑做一下。