Sass中数组的随机颜色

标签 random sass

这个问题在这里已经有了答案:





SASS: randomly pick background-image from a list

(1 个回答)


6年前关闭。




我想指定一个颜色数组,然后将颜色随机应用于列表。

到目前为止,我拥有它,以便颜色按顺序循环。

我怎样才能随机化它?

到目前为止,这是 Sass 代码:

$colors: red, orange, yellow, green, blue, purple;

@for $i from 1 through length($colors) {
    li:nth-child(#{length($colors)}n+#{$i}) {
        background: lighten(nth($colors, $i), 20%);
    }
}

li {
  list-style: none;
  padding: 1em;
}

和标记:
<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
  <li>d</li>
  <li>e</li>
  <li>f</li>
  <li>g</li>
  <li>h</li>
  <li>i</li>
  <li>j</li>
  <li>k</li>
  <li>l</li>
</ul>

Codepen 上的示例:
http://codepen.io/anon/pen/azbwJm

最佳答案

编辑 : Sass 引入了模块系统。 random()函数正在转换到 math.random() .请参阅 the function 的文档对于 the module system了解更多信息。

首先,我要提醒所有阅读 Sass 预编译成 CSS 的人;您无法使用 Sass 在“运行时”(即在页面加载时)实现随机行为。

Sass 有一个 random()您可能感兴趣的功能:

$colors: red, orange, yellow, green, blue, purple;
$repeat: 20  // How often you want the pattern to repeat.
// Warning: a higher number outputs more CSS.

@for $i from 1 through $repeat {
    li:nth-child(#{length($colors)}n+#{$i}) {
        background: lighten(nth($colors, random(length($colors))), 20%);
    }
}

li {
    list-style: none;
    padding: 1em;
}

这会选择您的 $colors 的随机索引数组并使用关联的颜色。

备注 :文档指出 random($limit) “返回一个介于 1 和 $limit 之间的随机整数。”这包括 $limit作为一个可能的值。因此,如果您使用 nth($colors, random(length($colors) + 1)) ,您可能会因使用超出范围的索引而出错。

关于Sass中数组的随机颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922336/

相关文章:

java - 如何将字符串放置在二维数组中随机选择的位置

python - Numpy .shuffle 每次都给出相同的结果

css - 覆盖 Bootstrap 变量与覆盖类

css - 如何从 SASS 生成常规 CSS 文件?

css - 编译和维护特定于ie的样式表

java - 生成随机动画时遇到问题

c - 在 c 的函数中使用 rand()

c++ - 为什么不允许 `std::uniform_int_distribution<uint8_t>` 和 `std::uniform_int_distribution<int8_t>`?

css - Bootstrap 4 将图像移出卡片标题的容器

extjs - 如何使用 sencha 命令从 sass 构建 css 文件?