Sass扩展参数或解决方法

Sass扩展参数或解决方法,sass,Sass,我正在做一个新的项目,将在两种语言。阿拉伯文和英文 我将在这个项目上使用SASS,在我开始做任何开发之前,我想确保我使用了关于浮动和RTL/LTR的最佳方法 我想知道是否可能有扩展SASS函数的参数 我的HTML的主体将有一个类,具体取决于用户语言。基于该类,如果EN,我想向左浮动,如果AR,我想向右浮动。为此,我这里有一个快速草稿: 有一个jQuery位可以在单击时更改类 不幸的是,据我所知,该范围不接受任何论点。我怎样才能做到这一点,这取决于主体类是否使用了“marginleft”、“mar

我正在做一个新的项目,将在两种语言。阿拉伯文和英文

我将在这个项目上使用SASS,在我开始做任何开发之前,我想确保我使用了关于浮动和RTL/LTR的最佳方法

我想知道是否可能有扩展SASS函数的参数

我的HTML的主体将有一个类,具体取决于用户语言。基于该类,如果EN,我想向左浮动,如果AR,我想向右浮动。为此,我这里有一个快速草稿:

有一个jQuery位可以在单击时更改类

不幸的是,据我所知,该范围不接受任何论点。我怎样才能做到这一点,这取决于主体类是否使用了“marginleft”、“marginright”或“padding left”、“padding right”

我的想法是:

.content {
     %marginSwap(10px 0 0 10px); 
}
在语言类a中的某个地方,混合使用边距左值和边距右值交换边距左值

类似于mixin,但依赖于父类,如extend:

@mixin marginSwap($top, $right, $bottom, $left) {
    margin-top:$top;
    margin-right:$left; // Left instead of right
    margin-bottom:$bottom;
    margin-left:$right;
}

希望您能从我的JSFIDLE中更好地理解

我可以推荐使用lang属性吗?如果需要,您可以同样轻松地使用mixin而不是extends

不使用类,您可以在您认为合适的任何祖先元素上设置lang属性(如果您愿意,它可以一直位于html或body标记上)



对于我的SCS来说,这是一个很好的选择,但是边距和填充物呢?你会怎么处理这些?非常感谢!我添加了一个Marginsome的示例!我会做一些性能测试。我想知道媒体网站的css文件如何使用这种技术,而不是为每种语言创建两个单独的css版本。
@mixin marginSwap($top, $right, $bottom, $left) {
    margin-top:$top;
    margin-right:$left; // Left instead of right
    margin-bottom:$bottom;
    margin-left:$right;
}
@mixin margin($v) {
  @if length($v) == 4 {
    margin: $v;

    &:lang(ar) {
      margin: nth($v, 1) nth($v, 4) nth($v, 3) nth($v, 2);
    }
  } @else {
    margin: $v;
  }
}

@mixin margin-right($v) {
  margin-right: $v;

  &:lang(ar) {
    margin-left: $v;
  }
}

:lang(en) {
  direction: ltr;
}

:lang(ar) {
  direction: rtl;
}

%float-left {
  //&:lang(en) {
    float: left;
  //}

  &:lang(ar) {
    float: right;
  }
}

%align-left {
  //&:lang(en) {
    text-align: left;
  //}

  &:lang(ar) {
    text-align: right;
  }
}

.content {
    width:500px;
    margin:20px auto;
    padding:20px;
    background:#e5e5e5;
    overflow:auto;
    h1, p {
        margin:0;
    }
    .thumbnail {
        @extend %float-left;
        //@include margin(0 20px 0 0);
        @include margin-right(20px);
    }
    .description {
        @extend %float-left;
        @extend %align-left;
    }
}
<div lang="en"></div>