【发布时间】:2017-12-07 17:22:56
【问题描述】:
我正在创建一些 mixins,以使我更容易将 px 转换为边距中的 rem 值,其中有 4 个参数 top、right、bottom 和 left。在下面的代码中,我制作了 16 个 mixin,用于检查参数是否为像素。
// TODO --> margin
// T T T T
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right)), (ispixel(@bottom)), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem unit(@right)/@base-font*1rem unit(@bottom)/@base-font*1rem unit(@left)/@base-font*1rem;
}
// T F T T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right) = false), (ispixel(@bottom)), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem @right unit(@bottom)/@base-font*1rem unit(@left)/@base-font*1rem;
}
// T T F T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right)), (ispixel(@bottom) = false), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem unit(@right)/@base-font*1rem @bottom unit(@left)/@base-font*1rem;
}
// T F F T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right) = false), (ispixel(@bottom) = false), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem @right @bottom unit(@left)/@base-font*1rem;
}
// T T T F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right)), (ispixel(@bottom)), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem unit(@right)/@base-font*1rem unit(@bottom)/@base-font*1rem @left;
}
// T F T F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right) = false), (ispixel(@bottom)), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem @right unit(@bottom)/@base-font*1rem @left;
}
// T T F F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right)), (ispixel(@bottom) = false), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem unit(@right)/@base-font*1rem @bottom @left;
}
// T F F F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top)), (ispixel(@right) = false), (ispixel(@bottom) = false), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: unit(@top)/@base-font*1rem @right @bottom @left;
}
// F T T T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right)), (ispixel(@bottom)), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: @top unit(@right)/@base-font*1rem unit(@bottom)/@base-font*1rem unit(@left)/@base-font*1rem;
}
// F F T T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right) = false), (ispixel(@bottom)), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: @top @right unit(@bottom)/@base-font*1rem unit(@left)/@base-font*1rem;
}
// F T F T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right)), (ispixel(@bottom) = false), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: @top unit(@right)/@base-font*1rem @bottom unit(@left)/@base-font*1rem;
}
// F F F T
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right) = false), (ispixel(@bottom) = false), (ispixel(@left)){
margin: @top @right @bottom @left;
margin: @top @right @bottom unit(@left)/@base-font*1rem;
}
// F T T F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right)), (ispixel(@bottom)), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: @top unit(@right)/@base-font*1rem unit(@bottom)/@base-font*1rem @left;
}
// F F T F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right) = false), (ispixel(@bottom)), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: @top @right unit(@bottom)/@base-font*1rem @left;
}
// F T F F
//noinspection CssOverwrittenProperties
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right)), (ispixel(@bottom) = false), (ispixel(@left) = false){
margin: @top @right @bottom @left;
margin: @top unit(@right)/@base-font*1rem @bottom @left;
}
// F F F F
.margin(@top,@right,@bottom,@left) when (ispixel(@top) = false), (ispixel(@right) = false), (ispixel(@bottom) = false), (ispixel(@left) = false){
margin: @top @right @bottom @left;
}
我在传递 auto 或 not-a-number 类型的变量时遇到问题,但它适用于 number 和 number with unit,如 px、rem、em 等。
当我在开发者模式下看到它看起来像这样
有没有更好的方法让我的代码更清晰,并且不会在编译后的 css 中产生太多垃圾?
更新
我忘了我用的是,而不是and
谢谢你,对不起我的英语
【问题讨论】:
-
最佳实践是使用 sass :p