それらを「グループ化」するには、ネストされたグループ化された mixin を作成する必要があります。以下は、グループ化されたミックスイン関数で、マージン設定のために「合理化」されています。
- 1 ~ 8 個のパラメーターを使用できます。
position
常にthenのペアになりvalue
ます (以下に示す場合を除きます。任意の順序の位置とauto
orの値を受け入れることができますinherit
)。
- 単一の「位置」を渡すと、
0px
その位置にマージンが設定されます。
- 非単位数のデフォルト
px
は に設定されますが、明示的に設定された単位は渡されたままになります。
- 数値である単一のパラメーターを渡すと、すべてのマージンがその数値に等しく設定されます。
LESS ミックスイン
.setMargins(@s1: ~'', @v1: 0, @s2: ~'', @v2: 0, @s3: ~'', @v3: 0, @s4: ~'', @v4: 0) {
.setPos(top, @T) {
.setNum() when (isnumber(@T)) {
margin-top: @T * 1px;
}
.setNum() when not (isnumber(@T)){
margin-top: @T;
}
.setNum();
}
.setPos(right, @R) {
.setNum() when (isnumber(@R)) {
margin-right: @R * 1px;
}
.setNum() when not (isnumber(@R)) {
margin-right: @R;
}
.setNum();
}
.setPos(bottom, @B) {
.setNum() when (isnumber(@B)) {
margin-bottom: @B * 1px;
}
.setNum() when not(isnumber(@B)) {
margin-bottom: @B;
}
.setNum();
}
.setPos(left, @L) {
.setNum() when (isnumber(@L)) {
margin-left: @L * 1px;
}
.setNum() when not (isnumber(@L)) {
margin-left: @L;
}
.setNum();
}
//allows all to be called with one number or value
.setPos(@A, 0) when (isnumber(@A)) {
margin: @A * 1px;
}
.setPos(auto, 0) {
margin: auto;
}
.setPos(inherit, 0) {
margin: inherit;
}
//default null if no valid side given
.setPos(@other, 0) {}
//call all possible positions
.setPos(@s1, @v1);
.setPos(@s2, @v2);
.setPos(@s3, @v3);
.setPos(@s4, @v4);
}
例
.setMargins(right);
生産するmargin-right: 0px;
.setMargins(right, 15);
生産するmargin-right: 15px;
.setMargins(left, 10em);
生産するmargin-left: 10em;
.setMargins(top, 12, right, 10);
生成:margin-top: 12px; margin-right: 10px;
.setMargins(25);
生成:margin: 25px;
.setMargins(auto);
生成:margin: auto;
したがって、セレクターで使用します。
以下
#testfeature {
.setMargins(left, 10, right, 10);
}
CSS出力
#testfeature {
margin-left: 10px;
margin-right: 10px;
}