css - SASS:从类列表生成变量列表(反之亦然)

标签 css variables sass

<分区>

我有带有附加值的变量列表和与变量同名的相应类列表,如下所示:

$cold-world: Verdana, sans-serif;
$cream: Verdana, sans-serif;
$fish: Verdana, sans-serif;
$knowledge-god: Verdana, sans-serif;
$run: test, test, Verdana, sans-serif;
$winter-warz: Verdana, sans-serif;

$font-list: $cold-world, $cream, $fish, $knowledge-god, $run, $winter-warz;

$pages: "cold-world", "cream", "fish", "knowledge-god", "run", "winter-warz";

因为两个列表是相同的,所以我试图让事情保持干燥,并创建了一个函数,该函数在 $pages 列表中的每个类前面加上 $ 符号。然后我使用 @each 循环来创建 $font-list

$font-list: (); // initilaze empty list

@function variable($x) {
    @return unquote("$" + $x);
}

@each $page in $pages {
    $font-list: append($font-list, variable($page), comma);
}

问题是当我尝试在输出循环中使用生成的列表时。我得到的是变量名而不是值

@mixin font($font-stack, $stack: 1) {
    font-family: nth($font-stack, $stack);
}

@each $page in $pages {
    .#{$page} {
        @include font(nth($font-list, index($pages, $page)), 1);
        //@include font(variable($page), 1); // same result as above
    }
}

DEMO

我还尝试使用 str-slice 选项(在 SASS 3.3.0 中可用)从类列表生成变量列表,但也没有成功。它输出变量值代替类名。

$font-list: $cold-world, $cream, $fish, $knowledge-god, $run, $winter-warz;

$pages: ();

@function slice($x) {
  @return str-slice(#{$x},1,100);
}

@each $variable in $font-list {
  $pages: append($pages, slice($variable), comma);
}

DEMO#2

最佳答案

我设法使用 nested lists 获得了我想要的结果.通过在 @each 循环中创建额外的变量,代码变得非常整洁(并且可以在 libsass 和当前 sass 中工作)。

$pages:
"cold-world" font1 sans-serif,
"cream" font2 sans-serif,
"fish" font3 sans-serif,
"knowledge-god" font4 sans-serif,
"run" font5 sans-serif,
"winter-warz" font6 sans-serif;


@mixin font($font-stack, $stack: 1) {
    font-family: nth($font-stack, $stack);
}

@each $page in $pages {

    $class: nth($page, 1);
    $font-stack: ();

  @for $i from 2 through length($page) {
    $font-stack: append($font-stack, nth($page, $i));
  }

    .#{$class} {
        @include font($font-stack, 1);
    }
}

DEMO

关于css - SASS:从类列表生成变量列表(反之亦然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234296/

上一篇:css - 固定页脚在页面底部或文本下方

下一篇:HTML 和 CSS 表格通过继承获得错误的样式

相关文章:

javascript - 使用函数设置html img元素的高度

CSS:地址@media子类

c++ - 定义指针变量

sass - 使用 Foundation 导入 Compass CSS3 mixins

jquery - 当摘录超过一定限制时添加底部填充

javascript - 当第一个菜单切换时二级菜单消失?

html - 设置跨度的样式以使用列表项的 100% 高度

Sass开发工作流程问题

mysql - 根据函数的结果设置变量的值 - MySQL

linux - 学习 Bash - 如何正确声明和打印/嵌入变量?