javascript - 创建复杂多边形
问题描述
我有一个公式来确定圆的直径,因此,对于任何给定的矩形,圆的顶部中心和周边接触矩形的顶部中心和底部角。
diameter = width * width / 4 / height + height // width and height of the rectangle
但是,我现在需要做的是创建一个像下面这样的形状,我知道可以使用 来完成clip-path: polygon()
,可能通过使用 的evenodd
填充规则变得更简单polygon()
。
问题是我不熟悉clip-path: polygon
并且不擅长数学,所以我不太确定是否可以通过使用evenodd
填充规则使其更简单,更不用说如何生成要绘制的顶点集了。
显然,纯 CSS 解决方案是理想的。但是,如果单独使用 CSS 是不可能的,我可以使用 JS。
有任何想法吗?
解决方案
径向渐变可以在这里完成工作:
.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>
推荐阅读
- python - 在其他行中查找连续缺失的匹配项(熊猫)
- node.js - 为什么即使我使用两个不同的设备,我也使用 getmac 包获得相同的 MAC 地址
- html - 如何在 CSS 中正确使用 checkbox:checked 属性?
- javascript - 如何使我的下拉菜单动态化?(图表.js)
- css - 为什么 iPhone CSS 断点不起作用
- android - 如何对具有多个延迟功能的协程进行单元测试
- powershell - PS比较来自csv的多个日期
- c# - 闪烁的自定义进度条
- php - 禁止直接访问 php 文件,但不能用于 cron 作业
- csv - 用于选择整个记录的 awk 命令在终端中有效,但在 Applescript 中无效