1 jawapan
Masalah yang anda hadapi ialah pengiraan .wheel div 的宽度和高度的方式不正确。如果高度是圆的半径:--radius: calc(var(--wheel-size) / 2 );,那么宽度就是 width: calc( 2 * var(--radius ) / 1.732);,其中 1.732 是 Math.sqrt(3). Ini berfungsi untuk roda dengan 6 bahagian, dengan segi tiga (untuk laluan keratan) ialah segi tiga sama sisi.
Dalam contoh anda, lebar adalah sama dengan jejari. Ini tidak mencukupi kerana div melebihi bulatan dan anda mengira laluan keratan berdasarkan saiz div.
Untuk melihat apa yang berlaku, alih keluar jejari sempadan: 50% dan tambahkan bahagian separa lutsinar yang tidak diklip pada roda (laluan klip: tiada;)
console.log(Math.sqrt(3))
*{margin:0;padding:0}
.wheel_container {
position: relative;
--wheel-size: 360px;
width: var(--wheel-size);
height: var(--wheel-size);
margin-bottom: 2.4em;
}
.wheel {
display: flex;
justify-content: center;
position: relative;
overflow: hidden;
width: var(--wheel-size);
height: var(--wheel-size);
border-radius: 50%;
background-color: aquamarine;
--segment-deg: 60deg;
}
.wheel div {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
--radius: calc(var(--wheel-size) / 2 );
height: var(--radius);
width: calc( 2 * var(--radius ) / 1.732);
clip-path: polygon(0 0, 50% 100%, 100% 0);
transform-origin: bottom;
writing-mode: vertical-rl;
}
.wheel div > span {
font-weight: 500;
font-size: 1rem;
text-align: center;
color: rgba(0, 0, 0, 0.7);
}
.wheel div:nth-child(1) {
background-color: beige;
transform: rotate(calc(-1 * var(--segment-deg) / 2));
}
.wheel div:nth-child(2) {
background-color: blueviolet;
transform: rotate(calc(-3 * var(--segment-deg) / 2));
}
.wheel div:nth-child(3) {
background-color: crimson;
transform: rotate(calc(-5 * var(--segment-deg) / 2));
}
.wheel div:nth-child(4) {
background-color: orange;
transform: rotate(calc(-7 * var(--segment-deg) / 2));
}
.wheel div:nth-child(5) {
background-color: violet;
transform: rotate(calc(-9 * var(--segment-deg) / 2));
}
.wheel div:nth-child(6) {
background-color: yellow;
transform: rotate(calc(-11 * var(--segment-deg) / 2));
}
..wheel div {transform:none!important}
<div class='wheel_container'>
<div class='wheel'>
<div><span>Apple</span></div>
<div><span>Durian</span></div>
<div><span>Banana</span></div>
<div><span>Mango</span></div>
<div><span>Strawberry</span></div>
<div><span>Jackfruit</span></div>
</div>
</div>
Untuk melakukan roda 8 segmen, anda memerlukan --segmen-deg:45 dan .wheel div 的宽度。我使用的是 width: calc( 2 * var(--radius ) / 2.414); yang berbeza, dengan 2.414 ialah tangen (180 - 45) / 2.
let a = 67.5; const rad = Math.PI / 180; console.log((Math.tan( a * rad)))
*{margin:0;padding:0}
.wheel_container {
position: relative;
--wheel-size: 360px;
width: var(--wheel-size);
height: var(--wheel-size);
margin-bottom: 2.4em;
}
.wheel {
display: flex;
justify-content: center;
position: relative;
overflow: hidden;
width: var(--wheel-size);
height: var(--wheel-size);
border-radius: 50%;
background-color: aquamarine;
--segment-deg: 45deg;
}
.wheel div {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
--radius: calc(var(--wheel-size) / 2 );
height: var(--radius);
width: calc( 2 * var(--radius ) / 2.414);
clip-path: polygon(0 0, 50% 100%, 100% 0);
transform-origin: bottom;
writing-mode: vertical-rl;
}
.wheel div > span {
font-weight: 500;
font-size: 1rem;
text-align: center;
color: rgba(0, 0, 0, 0.7);
}
.wheel div:nth-child(1) {
background-color: beige;
transform: rotate(calc(-1 * var(--segment-deg) / 2));
}
.wheel div:nth-child(2) {
background-color: blueviolet;
transform: rotate(calc(-3 * var(--segment-deg) / 2));
}
.wheel div:nth-child(3) {
background-color: crimson;
transform: rotate(calc(-5 * var(--segment-deg) / 2));
}
.wheel div:nth-child(4) {
background-color: orange;
transform: rotate(calc(-7 * var(--segment-deg) / 2));
}
.wheel div:nth-child(5) {
background-color: violet;
transform: rotate(calc(-9 * var(--segment-deg) / 2));
}
.wheel div:nth-child(6) {
background-color: yellow;
transform: rotate(calc(-11 * var(--segment-deg) / 2));
}
.wheel div:nth-child(7) {
background-color: red;
transform: rotate(calc(-13 * var(--segment-deg) / 2));
}
.wheel div:nth-child(8) {
background-color: blue;
transform: rotate(calc(-15 * var(--segment-deg) / 2));
}
<kelas div='bekas_roda'>
<div class='roda'>
<div><span>Apple</span></div>
<div><span>Durian</span></div>
<div><span>Pisang</span></div>
<div><span>Mangga</span></div>
<div><span>Strawberi</span></div>
<div><span>Naka</span></div>
<div><span>merah</span></div>
<div><span>biru</
Alat panas Tag
Hot Questions
Hot Tools
vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)
Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy
VC9 32-bit
VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
Kotak alat pengaturcara PHP versi penuh
Programmer Toolbox v1.0 PHP Persekitaran Bersepadu
VC11 32-bit
VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Topik panas





