javascript - JS/CSS 剪辑路径 - 如何计算圆的半径?
问题描述
我正在尝试动态设置半径,clip-path: circle(radius)
以便它适合它所在的任何大小的容器(周围有一些额外的空间)。例如,如果容器是 1000x500,那么整个圆应该是 500px 的 2/3。
我尝试将半径设置为一个简单的百分比,例如 33%,这应该使整个圆变成 2/3,但根据容器的大小,它可能太大或太小。
查看基本形状的文档,半径百分比是从包含框的宽度和高度解决的,sqrt(width^2+height^2)/sqrt(2)
但我不知道如何实际使用它来进行计算。
有人知道我能做什么吗?我正在为这些值设置动画,所以我确实需要通过clip-path
.
解决方案
您可以在有mask
或没有任何计算的情况下做同样的事情
.box {
display:inline-block;
vertical-align:top;
background:url(https://picsum.photos/id/1074/800/800) center/cover no-repeat;
-webkit-mask:radial-gradient(circle closest-side,#fff 99%,transparent 100%);
mask:radial-gradient(circle closest-side,#fff 99%,transparent 100%);
}
<div class="box" style="width:200px;height:100px"></div>
<div class="box" style="width:100px;height:200px"></div>
<div class="box" style="width:300px;height:300px"></div>
为了说明它是如何工作的:
.box {
display:inline-block;
vertical-align:top;
border:2px solid;
background:
radial-gradient(circle closest-side,transparent 99%,red 100%),
url(https://picsum.photos/id/1074/800/800) center/cover no-repeat;
}
<div class="box" style="width:200px;height:100px"></div>
<div class="box" style="width:100px;height:200px"></div>
<div class="box" style="width:300px;height:300px"></div>
您还可以添加动画:
.box {
display:inline-block;
vertical-align:top;
background:url(https://picsum.photos/id/1074/800/800) center/cover no-repeat;
-webkit-mask:radial-gradient(circle closest-side,#fff 99%,transparent 100%) center/100% 100% no-repeat;
mask:radial-gradient(circle closest-side,#fff 99%,transparent 100%) center/100% 100% no-repeat;
transition:0.5s;
}
.box:hover {
-webkit-mask-size:0% 0%;
mask-size:0% 0%;
}
<div class="box" style="width:300px;height:300px"></div>
<div class="box" style="width:200px;height:100px"></div>
推荐阅读
- sql - 如何从不同的表中删除行?
- groovy - 如何使用 jmeter 5.0 发送像 telnet 这样的 json 正文
- javascript - Babel 不预处理文件
- python - AssertionError:管理器项目的数量必须等于块项目的联合#管理器项目:6004,#tot_items:6005
- python - Python 3 Django Rest Framework - Manager 对象没有属性错误
- reactjs - SweetAlert2-react 取消按钮不起作用
- c# - Visual Studio 2019 C# Windows Forms App (.NET Framework) - 没有视图设计器或查看代码
- python - 使用opencv显示当前坐标圆而不是所有点
- sql - SQL - 获取行的 MIN 值并检查此 MIN 值是否在行中至少 2 次
- javascript - 如何解决 SassError:属性“enableProdMode”必须后跟“:”?