我正在寻求一些关于在 CSS 中创建“环形”形状的建议。以下是我需要实现的一些重要的详细目标:
环形边框厚度必须是百分比数字,而不是 rm 或绝对像素数,以便环形形状可以根据容器大小完全响应;
环形边框需要有背景,对于我的场景,背景有时可以是3-4种纯色的组合,或者是渐变色;
环的填充物必须是透明的,以便用户可以透过它看到背景。
以下是我使用的一些尝试:
制作一个border-radius: 50%
只有边框宽度的 div,但很快我注意到边框宽度不能是百分比数字;
SVG 将圆形 div 裁剪为环形。到目前为止,我无法成功地使其工作...如果这是正确的方法,请分享一些片段。
Tem*_*fif 12
您可以考虑mask
使用 aradial-gradient
创建孔并使用固定值来实现此目的,这将使可见部分(厚度)具有响应能力。
.box {
border-radius:50%;
background:linear-gradient(red,purple,orange);
-webkit-mask: radial-gradient(transparent 89px,#000 90px);
mask: radial-gradient(transparent 89px,#000 90px);
}
.box:before {
content:"";
display:block;
padding-top:100%;
}
.container {
margin:0 auto;
max-width:200px;
animation:change 3s linear alternate infinite;
}
@keyframes change{
to {
max-width:400px;
}
}
body {
background:linear-gradient(to right,yellow,pink);
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="box">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
您可以使用vw
orvh
作为度量。将border-width
根据您选择的视口宽度或高度来计算。您必须计算要使用的值:
.ring {
border: 10vw solid red;
border-radius: 50%;
height: 100%;
position: absolute;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
https://codepen.io/anon/pen/ErJbxN?editors=1100
使用 JS: https: //codepen.io/anon/pen/rPbYvm