SASS:从列表中随机选择背景图像

Posted

技术标签:

【中文标题】SASS:从列表中随机选择背景图像【英文标题】:SASS: randomly pick background-image from a list 【发布时间】:2014-03-11 11:33:07 【问题描述】:

我需要输出这个:

#footer-widgets .container .row 
    background-image: url("RANDOMLY PICKED");
    background-position: right bottom;
    background-repeat: no-repeat;

...并且应该有一个包含 4 或 5 个链接到实际背景图像 (http://domain.com/blablabla/image.png) 的列表可供选择。如何使用 SASS 做到这一点?

【问题讨论】:

你明白Sass是先编译的,只有编译好的CSS发送到浏览器,对吧?您可以在每次编译时随机生成背景图像,但不能在每次页面查看时随机生成。 Sass 编译成 css。我从未听说过 css 中的随机 url,因为它的风格不是逻辑。最好的解决方案(如果您正在寻找按视图随机选择)是css-tricks.com/snippets/php/randomize-background-image。如果您想要一个按编译或按页面的随机图像,您可能需要返回并查看您的网站设计和消息传递,以确保您真正想要的是随机选择的图像。 【参考方案1】:

最新版本的 Sass (v3.3.0) 增加了一个新的 random 函数。如果将其与图像列表(以及少量变量插值)混合使用,则每次编译 Sass 时都会获得带有随机选择的背景图像的 CSS。示例:

$imgKey: random(5);

$list: apple, banana, cherry, durian, eggplant;
$nth: nth($list, $imgKey);

body 
  background-image: "/images/#$nth.jpg";

现场示例:http://sassmeister.com/gist/8966210

如上,随机值只会在编译Sass时发生变化,不一定是每次访问你的页面时。

【讨论】:

谢谢,马上试试。那么什么时候编译呢? 每次更改 Sass 时,在实时示例中或如果您正在做 sass watch 如果有人想知道nth 做了什么,它是内置的:sass-lang.com/documentation/Sass/Script/… 您可以使用 length 函数,而不是硬编码值 5。如果您使用的是地图而不是列表,则可以先使用map-values 将其转换为列表。

以上是关于SASS:从列表中随机选择背景图像的主要内容,如果未能解决你的问题,请参考以下文章

从unsplash API reactjs中选择随机图像

如何使用图像视图从图像数组中创建随机图像生成器?

在我更新列表视图中所选项目的背景颜色后,如果我滚动背景更改为随机项目并且它也选择了多个项目,为啥?

如何使用 webpack-4 解析 sass 文件中的背景图像 URL?

Swift从数组中选择一个随机图像

Sass 和 Compass 中的背景图像路径