首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减去CSS -函数中的不同元素

减去CSS -函数中的不同元素
EN

Stack Overflow用户
提问于 2013-02-22 14:32:27
回答 1查看 644关注 0票数 2

我用的CSS较少。我的代码看起来是这样的。

可重复模式

你看到我的代码中的模式了吗?唯一不同的地方是填充值和类名。

问题

在较少的CSS中,是否可以使用许多不同的元素对进行函数/混合?

减CSS

代码语言:javascript
复制
&.pad-10 > [class*='cols-'] {
    background: #ccc;
    padding: 10px;

    &:first-child {
        padding-left: 0;
    }

    &:last-child {
        padding-right: 0;
    }
}

&.pad-20 > [class*='cols-'] {
    background: #ccc;
    padding: 20px;

    &:first-child {
        padding-left: 0;
    }

    &:last-child {
        padding-right: 0;
    }
}

Mixin建议

代码语言:javascript
复制
    do_padding( $value ) {
        &.pad-@value > [class*='cols-'] {
            background: #ccc;
            padding: @valuepx;

        &:first-child {
            padding-left: 0;
        }

        &:last-child {
            padding-right: 0;
        }
    }

    do_padding( 10 );
    do_padding( 20 );

我知道,我的确切问题可以通过其他方式解决,而不需要更少的CSS,但我有时也会遇到这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 15:50:29

是的,你只需要建立一个正确的计数和循环结构。下面是操作步骤:

代码语言:javascript
复制
.do_padding(@startValue, @increment) {

  .loop(@value) when (@value > 0) {
    //set top amount
    &.pad-@{value} > [class*='cols-'] {
      background: #ccc;
      padding: @value * 1px;

      &:first-child {
        padding-left: 0;
      }

      &:last-child {
        padding-right: 0;
      }
    }
    // next iteration
    .loop(@value - @increment);
  }

  // end the loop when index is 0 or less
  .loop(@value) when not (@value > 0) {}

  //start the loop
  .loop(@startValue);
}

使用it

代码语言:javascript
复制
.myClass {
   .do_padding(30, 10);
}

CSS输出

代码语言:javascript
复制
.myClass.pad-30 > [class*='cols-'] {
  background: #ccc;
  padding: 30px;
}
.myClass.pad-30 > [class*='cols-']:first-child {
  padding-left: 0;
}
.myClass.pad-30 > [class*='cols-']:last-child {
  padding-right: 0;
}
.myClass.pad-20 > [class*='cols-'] {
  background: #ccc;
  padding: 20px;
}
.myClass.pad-20 > [class*='cols-']:first-child {
  padding-left: 0;
}
.myClass.pad-20 > [class*='cols-']:last-child {
  padding-right: 0;
}
.myClass.pad-10 > [class*='cols-'] {
  background: #ccc;
  padding: 10px;
}
.myClass.pad-10 > [class*='cols-']:first-child {
  padding-left: 0;
}
.myClass.pad-10 > [class*='cols-']:last-child {
  padding-right: 0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15026499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档