You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用clipPath为瓶子图片填充颜色?已获坐标但填充失效

解决瓶子内部填充颜色的问题

你的代码存在几个关键问题导致液体无法显示:

  1. SVG中的<mask id="bottleMask">是空的,没有任何遮罩图形,遮罩完全不起作用
  2. <path id="tubeLiquid">没有定义d属性,仅靠CSS的clip-path无法让path渲染出来
  3. 图片的clip-path引用空mask,逻辑混乱

下面是修正后的代码,核心是把你定义的多边形数据整合到SVG的遮罩和液体路径中:

.item {
  width: 150px;
  height: 150px;
}
<div class="item">
  <svg viewBox="0 0 300 300">
    <!-- 定义遮罩:用多边形作为瓶子的可填充区域 -->
    <defs>
      <mask id="bottleMask">
        <!-- 白色区域允许显示内容,黑色区域隐藏内容 -->
        <polygon fill="white" points="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%"/>
      </mask>
    </defs>

    <!-- 瓶子图片:替换成你的实际图片路径 -->
    <image width="300" href="你的瓶子图片路径"/>

    <!-- 液体:通过mask限制仅在瓶子内部显示 -->
    <g mask="url(#bottleMask)">
      <!-- 用path绘制液体形状,使用你提供的坐标作为路径指令 -->
      <path d="M 45% 19% L 41% 22% L 41% 29% L 41% 36% L 41% 43% L 41% 50% L 41% 57% L 41% 63% L 41% 70% L 41% 77% L 41% 83% L 41% 90% L 43% 93% L 50% 92% L 56% 93% L 60% 88% L 59% 81% L 60% 75% L 60% 68% L 60% 61% L 59% 55% L 59% 48% L 59% 42% L 59% 35% L 59% 29% L 58% 23% L 54% 19% Z" fill="#74ccf4"/>
    </g>
  </svg>
</div>

关键修改说明:

  • 在<mask>中添加了<polygon>,用你给出的坐标创建遮罩范围,白色区域是内容可显示的部分
  • 液体路径<path>新增d属性,用SVG路径指令(M=起点,L=绘制线段,Z=闭合路径)画出液体轮廓,不再依赖CSS的clip-path
  • 调整SVG元素顺序,确保液体层在瓶子图片上方显示
  • 移除了无效的CSS clip-path规则,简化代码逻辑

内容的提问来源于stack exchange,提问作者Марта

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:35:36