CSS で順序付けされていないリスト内のアイテムの数を取得しようとしているようです (兄弟の数に応じてサイズを変更するためでしょうか?)。
実際、data-attribute を Sass 変数として使用することはできません。ただし、parent 内のアイテムの数を指定して、条件付きスタイルを適用する純粋な CSS の方法があります。さらに、Sass で非常に簡単に記述できます。
リスト内のアイテムの最大数が 10 で、リスト内の li タグの数に基づいて li タグのサイズを計算するとします。
@for $i from 1 through 10 {
li:first-child:nth-last-child(#{$i}),
li:first-child:nth-last-child(#{$i}) ~ li {
width: (100%/$i);
}
}
これにより、次の CSS が出力されます。
li:first-child:nth-last-child(1),
li:first-child:nth-last-child(1) ~ li {
width: 100%;
}
li:first-child:nth-last-child(2),
li:first-child:nth-last-child(2) ~ li {
width: 50%;
}
li:first-child:nth-last-child(3),
li:first-child:nth-last-child(3) ~ li {
width: 33.33333%;
}
li:first-child:nth-last-child(4),
li:first-child:nth-last-child(4) ~ li {
width: 25%;
}
li:first-child:nth-last-child(5),
li:first-child:nth-last-child(5) ~ li {
width: 20%;
}
li:first-child:nth-last-child(6),
li:first-child:nth-last-child(6) ~ li {
width: 16.66667%;
}
li:first-child:nth-last-child(7),
li:first-child:nth-last-child(7) ~ li {
width: 14.28571%;
}
li:first-child:nth-last-child(8),
li:first-child:nth-last-child(8) ~ li {
width: 12.5%;
}
li:first-child:nth-last-child(9),
li:first-child:nth-last-child(9) ~ li {
width: 11.11111%;
}
li:first-child:nth-last-child(10),
li:first-child:nth-last-child(10) ~ li {
width: 10%;
}
基本的に、これにより li タグに次の幅が与えられます。
100.0%
li タグが 1 つしかない場合
50.00%
liタグが2つある場合
33.33%
liタグが3つある場合
25.00%
liタグが4つある場合
20.00%
liタグが5個の場合
16.66%
liタグが6個の場合
14.28%
liタグが7個の場合
12.50%
liタグが8個の場合
11.11%
liタグが9個の場合
10.00%
liタグが10個ある場合
実際の例については、同じトリックを使用して行ったこのデモを参照してください。お役に立てば幸いです。