【问题标题】:Creating complex polygon创建复杂多边形
【发布时间】:2021-08-29 22:59:55
【问题描述】:

我有一个公式来确定圆的直径,因此对于任何给定的矩形,圆的顶部中心和周长都与矩形的顶部中心和底部角相接触。

diameter = width * width / 4 / height + height // width and height of the rectangle


但是,我现在需要做的是创建一个如下所示的形状,我知道可以使用 clip-path: polygon() 来完成,使用 polygon()evenodd 填充规则可能会变得更简单.



问题是我不熟悉clip-path: polygon 并且数学很烂,所以我不太确定使用evenodd 填充规则是否可以使它变得更简单,更不用说如何去关于生成要绘制的顶点集。

显然,纯 CSS 解决方案是理想的。但是,如果单独使用 CSS 无法做到这一点,我可以使用 JS。

有什么想法吗?

【问题讨论】:

  • 多边形不是解决这个问题的方法
  • @TemaniAfif 为什么不呢? SVG 更好?
  • 因为 polyong 无法创建圆形
  • @TemaniAfif 如果有足够多的顶点(即使它可能是“百万角形”哈哈),您可以创建它是圆形的错觉,对吧?
  • @TemaniAfif 你知道任何轻量级的解决方案吗?

标签: javascript css math polygon clip-path


【解决方案1】:

径向渐变可以在这里完成这项工作:

.box {
  --w:200;
  --h:100;
  --d:calc((var(--w)*var(--w))/(4*var(--h)) + var(--h));
  width:calc(var(--w)*1px);
  height:calc(var(--h)*1px);
  background:
    radial-gradient(farthest-side,blue 98%,red) 
    top/calc(var(--d)*1px) calc(var(--d)*1px);
  border:1px solid;
}
<div class="box"></div>

<div class="box" style="--w:300"></div>

<div class="box" style="--h:50"></div>

【讨论】:

  • 蓝色应该是透明的,这样我们才能看到矩形下方的任何东西。这可能吗?此外,它们似乎不是完美的圆圈,但这可能不会破坏交易。
  • @oldboy 把蓝色改成透明,就是颜色
  • 注意到了。有没有办法将视口单位用作--w--h?矩形不是任意形状,而是代表视口的一部分。
  • 你介意投票给我的问题,以便我得到其他答案吗?
猜你喜欢
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-03-25
相关资源
最近更新 更多