【问题标题】:Apply ClipPath to Block Element将 ClipPath 应用于块元素
【发布时间】:2015-03-10 17:05:01
【问题描述】:

所以我试图将 SVG 路径作为 clipPath 应用到 div,但我似乎无法弄清楚为什么它不会在 chrome 中执行任何操作,并在 Firefox 中显示空白页面。

http://jsfiddle.net/no5zmzLc/

<p class="target" style="background:lime;">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua. Ut enim ad minim veniam.
</p>

<img class="target" src="http://sarasoueidan.com/demos/css-svg-clipping/html-img-clipped-with-css-svg-clippath/flowers.jpg" alt="Cherry Blossoms.">

<svg:svg height="0">
    <svg:clipPath id="c1" clipPathUnits="objectBoundingBox">
        <svg:circle cx="0.25" cy="0.25" r="0.25" id="circle"/>
        <svg:rect x="0.5" y="0.2" width="0.5" height="0.8"/>
    </svg:clipPath>
</svg:svg>

p { width:500px; border:1px solid black; display:inline-block; margin:1em; padding:2em; }
.target { clip-path: url(#c1);   -webkit-clip-path: url(#c1);}

【问题讨论】:

    标签: css svg clipping


    【解决方案1】:

    CSS clip-path 仅适用于 -webkit- 浏览器。

    您可以使用 foreignObject 元素将 HTML 元素导入到 svg 元素并应用内联 clip-path 以使其在 Firefox 上也能正常工作。

    Updated Fiddle

    p {
      width: 500px;
      border: 1px solid black;
      display: inline-block;
      margin: 1em;
      padding: 2em;
    }
    body, html {
      height: 100%;
      margin: 0;
    }
    #cont {
      width: 500px;
      height: 500px;
    }
    <div id="cont">
      <svg width="100%" height="100%">
        <clipPath id="c1" clipPathUnits="userSpaceOnUse">
          <circle cx="25%" cy="25%" r="25%" id="circle" />
          <rect x="50%" y="20%" width="50%" height="80%" />
        </clipPath>
        <foreignObject clip-path="url(#c1)" width="100%" height="100%">
          <p style="background:lime;">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p>
          <img src="http://sarasoueidan.com/demos/css-svg-clipping/html-img-clipped-with-css-svg-clippath/flowers.jpg" alt="Cherry Blossoms." />
        </foreignObject>
      </svg>
    </div>

    【讨论】:

    • @Picard102 - 我在 Inkscape 中打开了您的 svg 以找到正确的 viewBox 尺寸,但我发现它没有显示您的 svg 的一半,因为文档大小设置为默认值.我更改了尺寸,建议您使用svg 作为背景,而不是应用clip-path。这是一个展示如何做到这一点的示例 ---> Fiddle.
    猜你喜欢
    • 2013-01-05
    • 2015-06-12
    • 2013-11-05
    • 2014-02-21
    • 2015-07-04
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多