You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SCSS/CSS中生成百分比随机数?现有代码失效求助

SCSS实现50%-100%随机位置的星星布局

你的代码无法运行是因为calc()语法错误——你把random(101)-50的结果和%直接拼接,导致生成的CSS属性值格式无效(比如calc(75) - 50%)。不用JS完全可以实现需求,以下是两种可行的SCSS方案:

方案1:直接计算目标范围的随机值

SCSS的random(n)会生成1到n的整数,我们需要50-100的数值,直接通过random(51) + 49计算(1+49=50,51+49=100),再用插值语法#{}拼接百分号:

.star{ 
  position: absolute; 
  background-color: #f00; 
  width: 10px; 
  height: 10px; 
  border-radius: 50%; 
} 
@for $i from 1 through 30 { 
  .star:nth-child(#{$i}) { 
    top: #{random(51) + 49}%; 
    left: #{random(51) + 49}%; 
  } 
}

编译后会直接生成类似top: 68%;的有效CSS属性值,星星会均匀分布在父元素的50%-100%区域。

方案2:用calc()实现动态计算(适合需要基础偏移的场景)

如果需要基于基础值做动态调整,可把百分号放在calc内部,通过random(51) - 1生成0-50的随机数,再和50%相加,覆盖50%-100%的范围:

.star{ 
  position: absolute; 
  background-color: #f00; 
  width: 10px; 
  height: 10px; 
  border-radius: 50%; 
} 
@for $i from 1 through 30 { 
  .star:nth-child(#{$i}) { 
    top: calc(50% + #{random(51) - 1}%); 
    left: calc(50% + #{random(51) - 1}%); 
  } 
}

注意:纯原生CSS没有随机函数,必须依靠预处理器(如SCSS)实现无JS的随机布局。

内容的提问来源于stack exchange,提问作者BlackStar1991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:36:03