I am creating some mixins to make me easier to convert px to rem values in margin which has 4 parameters top, right, bottom and left. In my code below, I make 16 mixins which is checking whether if the parameter is pixel or not.
// 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;
}
I have a problem when passing auto
or not-a-number
type of variables but it works with number
and number with unit
like px, rem, em, etc.
and when I see in developer mode it looks like this
Is there a better way to make my code clearer and not make a much junk in compiled css?
UPDATE
I forgot that I used ,
instead of and
Thank you, and sorry for my English