我有一个瓶子的形象,并尝试填补这个瓶子的一些颜色
我找到了填充坐标,但是我的背景在瓶子里面没有填充
.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>
2条答案
按热度按时间gv8xihay1#
你不需要额外的
<mask>
。由于瓶子的形状,您可以使用圆形
<rect>
作为clip-path:首先绘制裁剪路径和填充比例/进度条形状-不裁剪任何东西-找到正确的坐标和尺寸。
然后你可以应用clip-path。
我使用了一个
<line>
元素作为“tubeLiquid”元素,因为它允许我们将pathLength
属性设置为100。我们可以通过更新
stroke-dasharray
属性来轻松更改当前的填充值:在SO上,您会发现很多例子都使用这种方法来制作各种动态 Jmeter /进度条或动画饼图,如"Set svg progress bar percentage in javascript"
8fq7wneg2#
我找到的最接近的解决方案是,我没有装满整个瓶子,但你只需要改变多边形中的一些坐标,我没有关于形状和多边形的知识。