一个div,只用css如何画出无数个同心圆?

这是小米一面的面试题,html里只有一个div,仅仅使用css如何画出无数个同心圆?
我能想到的办法是用伪元素(before和after),然后再定位,但是这样也只能画出3个同心圆。

div::before {
            content: '';
            width: 10px;
            height: 10px;
            background-color: green;
            position: absolute;
            top: 45px;
            left: 45px;
            border-radius: 50%;
        }
<div></div>
阅读 8.8k
7 个回答

css径向渐变让用吗?

background: repeating-radial-gradient(circle, rgb(255, 255, 255) 5%, rgb(0, 0, 0) 10%);

box-shadow 想画多少画多少

scss 写了一个 box-shadow 的函数,希望能帮到你

body {
    display: flex;
    height: 100vh;
}

@function getRound($i) {
  $content: '';
  $s-min: 20;
  $s-max: 70;
  $l-min: 30;
  $l-max: 90;
  @while $i > 0 {
    $i: $i - 1;
    $content: "0 0 0 #{$i * 10}px #{hsl(random(360),$s-min+random($s-max+-$s-min),$l-min+random($l-max+-$l-min))}," + $content;
  }
    @return unquote(str-slice($content, 0, str-length($content) - 1))
}
.round {
    margin: auto;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    border: 1px solid;
    box-shadow: getRound(20);
}

https://codepen.io/jackpan/pe...

径向渐变 定义若干颜色和透明,即形成若干同心圆。无需伪元素

新手上路,请多包涵

考虑到兼容性,估计要用到canvas

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题