CSS + HTML 如何去实现一个扇形
方案一
描述
示例:https://codesandbox.io/s/shan-xing-shewy-tx4rfq
使用两层 div,外层【circleBlock】通过 border-radius: 50%;overflow: hidden 来限制展示区域,内层【circle】通过 transform skewY 变型属性基于 transform-origin 设置的左下角的基准点进行压缩变形,如需要60度的扇形,则 skewY 的变形角度为90 - 60 = 30度
代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>transform skewY</title>
<style>
.circleBlock {
width: 200px;
height: 200px;
position: relative;
overflow: hidden;
border-radius: 50%;
}
.circle {
width: 50%;
height: 50%;
position: absolute;
top: 0;
right: 0;
transform-origin: 0% 100%;
overflow: hidden;
background: #6C609E;
transform: skewY(-38.57deg);
}
</style>
</head>
<body>
<div class="circleBlock">
<div class="circle"></div>
</div>
</body>
</html
方案二
描述
示例:https://codesandbox.io/s/shan-xing-clip-path-4ckmcq?file=/index.html
一个div使用 clip-path 从圆心向四个边进行裁切,并使用 border-radius: 50% 隐藏多余内容,裁切点基于角度使用三角函数 sin cos tan 计算得来
代码
<!DOCTYPE html>
<html>
<head>
<title>CSS等分圆</title>
<meta charset="utf-8" />
<style type="text/css">
.circle {
background-color: #6c609e;
width: 200px;
height: 200px;
border-radius: 50%;
clip-path: polygon(50% 50%, 20% 0%, 80% 0%);
}
</style>
</head>
<body>
<div class="circle"></div>
</body>
</html>