gpt4 book ai didi

动画半圆饼图上的 CSS Z-fighting

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:22 25 4
gpt4 key购买 nike

所以我找到了this用纯 CSS 制作的动画半圆形饼图的 codepen 示例。我正试图用它来进行“政治席位分配”。正如您在下图中的图表边缘看到的那样,底层饼图的颜色从边缘透出。

我不确定这是否可以修复,如果可以,如何修复。这种效果在 Chrome 和 Firefox 中都可见,当我将高度和宽度从基于像素的值更改为 vw 单位时似乎变得更糟。

我还包含了原始代码段的编译 CSS 版本以及下面的多弧示例。

pie chart showing harsh edges on the sides

使弧线发生的 css 的要点在这里:

编辑:我将其更改为也使用大众汽车。你可以看到中间(黄色)圆弧末端的边缘问题,它显示了底层的绿色圆弧。

.container {
display: inline-block;
margin: 30px 20px;
}
.container .label-text {
display: block;
text-align: center;
font-size: 20px;
font-weight: bold;
margin-bottom: 15px;
}

.pie-wrapper {
position: relative;
width: 80vw;
height: 40vw;
overflow: hidden;
}
.pie-wrapper .arc, .pie-wrapper:before {
content: '';
width: 80vw;
height: 40vw;
position: absolute;
-ms-transform-origin: 50% 0%;
-webkit-transform-origin: 50% 0%;
transform-origin: 50% 0%;
left: 0;
box-sizing: border-box;
}
.pie-wrapper:before {
border: 20vw solid #E8E8E8;
border-bottom: none;
top: 0;
z-index: 1;
border-radius: 40vw 40vw 0 0;
}
.pie-wrapper .arc {
border: 20vw solid #47CF73;
border-top: none;
border-radius: 0 0 40vw 40vw;
top: 100%;
z-index: 2;
}
.pie-wrapper .score {
color: #394955;
font-size: 28px;
display: block;
width: 200px;
text-align: center;
margin-top: 70px;
}

.arc[data-value="24"] {
-moz-animation: fill 2s;
-webkit-animation: fill 2s;
animation: fill 2s;
-moz-transform: rotate(43.2deg);
-ms-transform: rotate(43.2deg);
-webkit-transform: rotate(43.2deg);
transform: rotate(43.2deg);
transition: All 5s ease;
border-color: #47CF73;
}
.arc[data-value="24"]:after {
content: '';
position: absolute;
left: -40px;
top: 5px;
}
.arc[data-value="24"]::before {
background-color: #47CF73;
}

.arc[data-value="65"] {
-moz-animation: fill 2s;
-webkit-animation: fill 2s;
animation: fill 2s;
-moz-transform: rotate(117deg);
-ms-transform: rotate(117deg);
-webkit-transform: rotate(117deg);
transform: rotate(117deg);
transition: All 5s ease;
border-color: #47CF73;
}
.arc[data-value="65"]:after {
content: '';
position: absolute;
left: -40px;
top: 5px;
}
.arc[data-value="65"]::before {
background-color: #47CF73;
}

.arc[data-value="100"] {
-moz-animation: fill 2s;
-webkit-animation: fill 2s;
animation: fill 2s;
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
transition: All 5s ease;
border-color: #47CF73;
}
.arc[data-value="100"]:after {
content: '';
position: absolute;
left: -40px;
top: 5px;
}
.arc[data-value="100"]::before {
background-color: #47CF73;
}

.arc[data-value="24"] {
border-color: #FF3C41;
}
.arc[data-value="24"]::before {
background-color: #FF3C41;
}

.arc[data-value="65"] {
border-color: #FCD000;
}
.arc[data-value="65"]::before {
background-color: #FCD000;
}

.arc[data-value="80"] {
border-color: #FCD000;
}
.arc[data-value="80"]::before {
background-color: #FCD000;
}

.legend {
display: inline-block;
width: 150px;
vertical-align: text-bottom;
margin-left: 100px;
background-color: #f0f0f0;
}
.legend span {
width: 20px;
height: 20px;
display: inline-block;
margin: 0 10px 0 20px;
}
.legend span.green {
background-color: #47CF73;
}
.legend span.orange {
background-color: #FCD000;
}
.legend span.red {
background-color: #FF3C41;
}

@-moz-keyframes fill {
0% {
-moz-transform: rotate(0deg);
transform: rotate(0deg);
border-color: #FF3C41;
}
50% {
-moz-transform: rotate(180deg);
transform: rotate(180deg);
border-color: #47CF73;
}
}
@-webkit-keyframes fill {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
border-color: #FF3C41;
}
50% {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
border-color: #47CF73;
}
}
@keyframes fill {
0% {
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
border-color: #FF3C41;
}
50% {
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
border-color: #47CF73;
}
}
<div class="container">
<div class="pie-wrapper">
<div class="arc" data-value="100"></div>
<div class="arc" data-value="65"></div>
<div class="arc" data-value="24"></div>
</div>
</div>

最佳答案

我很难看出,但我认为这可能有效?

.pie-wrapper .arc { background-color: white; }

关于动画半圆饼图上的 CSS Z-fighting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52733770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com