Saya ada gambar botol dan cuba isi botol ini dengan warna tertentu
Saya jumpa koordinat isian tetapi latar belakang di dalam botol tidak diisi
.item { width: 150px; height: 150px; } #tubeLiquid { background-color: #74ccf4; clip-path: polygon(45% 19%, 41% 22%, 41% 29%, 41% 36%, 41% 43%, 41% 50%, 41% 57%, 41% 63%, 41% 70%, 41% 77%, 41% 83%, 41% 90%, 43% 93%, 50% 92%, 56% 93%, 60% 88%, 59% 81%, 60% 75%, 60% 68%, 60% 61%, 59% 55%, 59% 48%, 59% 42%, 59% 35%, 59% 29%, 58% 23%, 54% 19%); } #bottleMask{ background-color: #FFFFFF; clip-path: polygon(45% 19%, 41% 22%, 41% 29%, 41% 36%, 41% 43%, 41% 50%, 41% 57%, 41% 63%, 41% 70%, 41% 77%, 41% 83%, 41% 90%, 43% 93%, 50% 92%, 56% 93%, 60% 88%, 59% 81%, 60% 75%, 60% 68%, 60% 61%, 59% 55%, 59% 48%, 59% 42%, 59% 35%, 59% 29%, 58% 23%, 54% 19%); }
<div class="item"> <svg viewBox="0 0 300 300"> <image width="300" clip-path="url(#bottleMask)" xlink:href="https://i.ibb.co/Mhfwtxp/image-removebg-preview-1.png" ></image> <defs> <mask id="bottleMask"></mask> </defs> <g id="maskedLiquid" mask="url(#bottleMask)"> <path id="tubeLiquid" fill="#74ccf4"></path> </g> </svg> </div>
Anda tidak memerlukan tambahan
.Oleh kerana bentuk botol, anda boleh menggunakan bulatan
sebagai laluan keratan:Mula-mula lukis laluan keratan dan isi skala/bentuk bar kemajuan - tanpa memotong apa-apa - untuk mencari koordinat dan dimensi yang betul.
Anda kemudian boleh menggunakan laluan keratan.
Saya menggunakan set atribut
元素,因为它允许我们将pathLength
kepada 100 untuk elemen "tubeLiquid".Kami boleh menukar nilai isian semasa dengan mudah dengan mengemas kini atribut
lines-dasharray
:Anda akan dapati banyak contoh menggunakan kaedah ini untuk melaksanakan pelbagai pengukur dinamik/bar kemajuan atau carta pai animasi, seperti "Tetapkan peratusan bar kemajuan svg dalam JavaScript"
Penyelesaian terdekat yang saya temui ialah saya tidak mengisi keseluruhan botol, tetapi anda hanya perlu menukar beberapa koordinat dalam poligon, saya tidak faham bentuk dan poligon.