我正在尝试使用CSS创建一个圆,如下图所示:
...只有一个div
:
<div class="myCircle"></div>
并仅使用CSS定义。不允许使用SVG,WebGL,DirectX等。
我试图绘制一个完整的圆,然后将另一个圆与另一个圆淡化div
,它确实起作用,但是我正在寻找一种更优雅的选择。
我正在尝试使用CSS创建一个圆,如下图所示:
...只有一个div
:
<div class="myCircle"></div>
并仅使用CSS定义。不允许使用SVG,WebGL,DirectX等。
我试图绘制一个完整的圆,然后将另一个圆与另一个圆淡化div
,它确实起作用,但是我正在寻找一种更优雅的选择。
Answers:
您可以使用border-top-left-radius
和border-top-right-radius
属性根据框的高度(和添加的边框)在框上四角。
然后在框的顶部/右侧/左侧添加边框以达到效果。
干得好:
.half-circle {
width: 200px;
height: 100px; /* as the half of the width */
background-color: gold;
border-top-left-radius: 110px; /* 100px of height + 10px of border */
border-top-right-radius: 110px; /* 100px of height + 10px of border */
border: 10px solid gray;
border-bottom: 0;
}
工作演示。
或者,您可以添加box-sizing: border-box
到框中以计算包含边框和填充的框的宽度/高度。
.half-circle {
width: 200px;
height: 100px; /* as the half of the width */
border-top-left-radius: 100px;
border-top-right-radius: 100px;
border: 10px solid gray;
border-bottom: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
border-radius
财产)
不久前我遇到了类似的问题,这就是我解决的方法
.rotated-half-circle {
/* Create the circle */
width: 40px;
height: 40px;
border: 10px solid black;
border-radius: 50%;
/* Halve the circle */
border-bottom-color: transparent;
border-left-color: transparent;
/* Rotate the circle */
transform: rotate(-45deg);
}
<div class="rotated-half-circle"></div>