Jos*_*ier 7

目前无法在纯 CSS 中执行此操作,但是如果您使用 CSS 预处理器(例如LESS),则可以执行以下操作:

@randomMargin: `Math.round(Math.random() * 100)`;

div {
  margin-left: ~'@{randomMargin}px';
}
Run Code Online (Sandbox Code Playgroud)

这样做的原因是LESS 将计算 JavaScript 表达式

如果你想将其分解为随机 mixin/函数,你可以使用:

.random(@min, @max) {
  @random: `Math.round(Math.random() * (@{max} - @{min}) + @{min})`;
}

div {
  .random(-100, 100);
  margin-left: ~'@{random}px';
}
Run Code Online (Sandbox Code Playgroud)

margin-left每次都会使用不同的值进行编译:

div {
  margin-left: 18px;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这在生产环境中有多实用,因为您的 CSS应该已经编译/缩小,而不是动态编译。因此,您应该直接使用 JavaScript 来实现此目的。


Abh*_*ert 7

您可以使用 JavaScript 将随机数设置为 CSS 属性:

let el = document.getElementById('foo');
el.style.setProperty('--rand', Math.random());
Run Code Online (Sandbox Code Playgroud)

然后你可以在 CSS 中使用该随机数,例如随机颜色:

#foo {
  --rand: 0.5; /* will be a random number from 0 to 1 set by javascript */
  --hue: calc(255 * var(--rand));
  background-color: hsl(var(--hue), 67%, 57%);
}
Run Code Online (Sandbox Code Playgroud)

或者随机的绿色阴影:

#foo {
  --rand: 0.5; /* will be a random number from 0 to 1 set by javascript */
  --greenHue: calc(70 + (30 * var(--rand)));
  --greenSaturation: calc(50% + (30% * var(--rand)));
  --greenLevel: calc(25% + (5% * var(--rand)));
  background-color: hsl(var(--greenHue), var(--greenSaturation), var(--greenLevel));greenLevel));
}
Run Code Online (Sandbox Code Playgroud)

要获得更多变化,请设置多个随机数变量。还要记住变量是继承的。它们可以用于关键帧动画等。