Sass の `map-get`
例えば、
<div class="object object_01"><amp-img src=""></amp-img></div>
<div class="object object_02"><amp-img src=""></amp-img></div>
<div class="object object_03"><amp-img src=""></amp-img></div>
<div class="object object_04"><amp-img src=""></amp-img></div>
<div class="object object_05"><amp-img src=""></amp-img></div>
...
のような HTML があって、
.object {
&.object_01 {
top: 240px;
bottom: 120px;
width: 80px;
height: 40px;
amp-img {
width: 80px;
height: 40px;
}
}
&.object_02 {
...
}
のような CSS を書きたいとき、SCSS で map-get を用いると、
.object {
$objectList: (
object_01: (
object-top: 240px,
object-right: 120px,
object-width: 80px,
object-height: 40px
),
object_02: (
object-top: 160px,
object-right: 220px,
object-width: 20px,
object-height: 100px
),
...
);
@each $objectNum, $property in $objectList {
&.#{$objectNum} {
top: map-get($property, object-top);
right: map-get($property, object-right);
bottom: map-get($property, object-bottom);
left: map-get($property, object-left);
width: map-get($property, object-width);
height: map-get($property, object-height);
amp-img {
width: map-get($property, object-width);
height: map-get($property, object-height);
}
}
}
}
とすると連想配列的な配列を処理できる。
少し冗長な気もしますが、、
参考