在CSS中创建星空背景

mar*_*so2 7 html css

我正在制作一个纯代码的太阳能系统网站,没有使用图像.问题是我无法弄清楚如何在后台获得星星.我试图在黑色背景上得到像黄色展开的波尔卡圆点图案.这是我的代码(为每个其他星球重复div和样式).

html,
body {
  width: 100%;
  height: 100%;
  background-color: black;
}
#sun {
  position: absolute;
  top: 50%;
  left: 50%;
  height: 200px;
  width: 200px;
  margin-top: -100px;
  margin-left: -100px;
  border-color: orange;
  border-width: 2px;
  border-style: solid;
  border-radius: 50%;
  box-shadow: 0 0 64px yellow;
  background-color: yellow;
}
#mercury {
  position: absolute;
  top: 0;
  left: 50%;
  height: 10px;
  width: 10px;
  margin-left: -5px;
  margin-top: -5px;
  border-radius: 50%;
  background-color: #ffd9b3;
}
#mercury-orbit {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 260px;
  height: 260px;
  margin-top: -130px;
  margin-left: -130px;
  border-width: 2px;
  border-style: dotted;
  border-color: white;
  border-radius: 50%;
  -webkit-animation: spin-right 22s linear infinite;
  -moz-animation: spin-right 22s linear infinite;
  -ms-animation: spin-right 22s linear infinite;
  -o-animation: spin-right 22s linear infinite;
  animation: spin-right 22s linear infinite;
}
@-webkit-keyframes spin-right {
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes spin-right {
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
Run Code Online (Sandbox Code Playgroud)
<div id="sun"></div>
<div id="mercury-orbit">
  <div id="mercury"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

mar*_*sei 8

从此一个美好的星夜。

background-color:black;
background-image:
radial-gradient(white, rgba(255,255,255,.2) 2px, transparent 40px),
radial-gradient(white, rgba(255,255,255,.15) 1px, transparent 30px),
radial-gradient(white, rgba(255,255,255,.1) 2px, transparent 40px),
radial-gradient(rgba(255,255,255,.4), rgba(255,255,255,.1) 2px, transparent 30px);
background-size: 550px 550px, 350px 350px, 250px 250px, 150px 150px; 
background-position: 0 0, 40px 60px, 130px 270px, 70px 100px;
Run Code Online (Sandbox Code Playgroud)

  • 我将渐变从 30 和 40 缩小到 5 和 10,但这正是我想要的。谢谢 (3认同)

Sin*_*1ty 5

多亏了这支代码笔,我找到了一个纯 CSS 解决方案。这会让你的网站看起来像这样- 不幸的是我无法复制粘贴整个 CSS,因为它太长了(超过 40,000 个字符,StackOverflow 只允许我粘贴 30,000 个字符作为代码片段)。原始代码是用SASS生成并编译的,它长得离谱。

<div id='stars'></div>
<div id='stars2'></div>
<div id="sun"></div>
<div id="mercury-orbit">
  <div id="mercury"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

生成这些星星的 SASS 代码:

// n is number of stars required
@function multiple-box-shadow ($n) 
  $value: '#{random(2000)}px #{random(2000)}px #FFF'
  @for $i from 2 through $n
    $value: '#{$value} , #{random(2000)}px #{random(2000)}px #FFF'

  @return unquote($value)

$shadows-small:  multiple-box-shadow(700)
$shadows-medium: multiple-box-shadow(200)
$shadows-big:    multiple-box-shadow(100)

#stars
  width: 1px
  height: 1px
  background: transparent
  box-shadow: $shadows-small
Run Code Online (Sandbox Code Playgroud)