用指南针获取元素宽度

时间:2012-01-18 13:21:49

标签: compass-sass sass

有没有办法用罗盘(CSS Framework)获取预定义的元素?

让我们说:

<ul>
    <li class="class-1">foo</li>
    <li class="class-2">foo</li>
    <li class="class-3">foo</li>
</ul>

我想输出的是:

ul > li {
    position: absolute;
    top: 0; left: 50%;
}

ul > li.class-1 { width: 20px; margin-left: -10px; }
ul > li.class-2 { width: 26px; margin-left: -8px; }
ul > li.class-3 { width: 24px; margin-left: -12px; }

如果可能的话,我想我必须做类似的事情:

ul > li {
    position: absolute;
    top: 0; left: 50%;

    &.class-1 { width: 20px; }
    &.class-2 { width: 16px; }
    &.class-3 { width: 24px; }        

    @for $i from 1 through 3 {
        .class-#{$i} { margin-left: $item-width / 2; }
    }
}

$item-width自然没有被定义。在上述情况下有没有办法计算它?

1 个答案:

答案 0 :(得分:1)

我认为不可能引用预定义的元素,因为没有预定义的元素......换句话说,所有元素都是由您定义的。

所以最简单的方法就是创建一个包含如下的mixin

@mixin counter($num) {
    width: $num+px; margin-left: - $num/2+px; 
}

ul < li {
    position: absolute;
    top: 0; left: 50%;

    &.class-1 { @include counter(20); }
    &.class-2 { @include counter(16); }
    &.class-3 { @include counter(24); }
}

希望这对某些人有帮助,因为我发现它已经很老了。