【问题标题】:image cropped as a triangle on webpage图片在网页上裁剪为三角形
【发布时间】:2013-07-12 09:07:03
【问题描述】:

这是一个真正的 css 挑战,我认为这是不可能的:

我制作了一些白色的css 三角形。当您将鼠标悬停在三角形上时,白色三角形应该会在照片中发生变化,也像三角形一样裁剪。我为它做了一个jsfiddle:

fiddleLink

任何帮助表示赞赏

【问题讨论】:

  • 艰难的。但是您可以通过反转透明度并将其视为剪切区域来伪造它:jsfiddle.net/b4tGd/1
  • 差不多,Dom Day。但我的身体背景是背景图像。这样你就可以看到剪辑区域了。

标签: css sass css-animations


【解决方案1】:

可以使用svg来实现这个效果:http://jsfiddle.net/xTd6Y/4/

<div id="image-wrapper">
    <svg id="svg-1" class="clip-svg">
        <rect class='svg-background' width="300" height="300" fill="#ffffff" />
        <image id="img-1" class='svg-image' width="300" height="300" xlink:href="http://lorempixel.com/300/300" />
    </svg>
    <svg id="svg-2" class="clip-svg">
        <rect class='svg-background' width="300" height="300" fill="#ffffff" />
        <image id="img-2" class='svg-image' width="300" height="300" xlink:href="http://lorempixel.com/300/301" />
    </svg>
    <svg id="svg-3" class="clip-svg">
        <rect class='svg-background' width="300" height="300" fill="#ffffff" />
        <image id="img-3" class='svg-image' width="300" height="300" xlink:href="http://lorempixel.com/300/302" />
    </svg>
</div>
<svg id="svg-defs">
    <defs>
        <clipPath id="clip-triangle">
            <polygon points="0, 200 100, 0 200, 200"/>
        </clipPath>
    </defs>
</svg>

css

body {
    background-color: #e0e0e0;
}
#image-wrapper {
    position: relative;
}
.svg-background, .svg-image {
    clip-path: url(#clip-triangle);
}
.svg-image {
    visibility: hidden;
}
.clip-svg .svg-image:hover {
    visibility: inherit;
}

/* size and positioning */
 svg.clip-svg {
    position: absolute;
    height: 250px;
    width: 250px;
}
#svg-1 {
    top: 110px;
    left: 50px;
}
#svg-2 {
    top: 40px;
    left: 140px;
}
#svg-3 {
    top: 160px;
    left: 250px;
}

剪切路径在 svg#svg-defs 中定义,可以任意设置。

图像属性对 js 和 css 可见/可访问。 您可以将剪切路径应用于任何具有 css 的 html 元素

myElement {
    clip-path: url(#clip-triangle);
}

但据我所知,这仅在 Firefox 上可靠。

注意:解决方案仅在 FF 和 chrome 上测试

注意:将 :hover 从 svg 移动到嵌入图像的小编辑,以纠正在剪辑区域外触发悬停的问题

【讨论】:

  • 这肯定是一个很好的解决方案!为了浏览器的兼容性,我将使用后备。谢谢!
  • np。我概述的主要方法应该适用于所有新浏览器。就是最后的sn-p,更干净更好看,只对FF有效
  • 再次看了一眼,发现悬停时出现逻辑错误。固定的。 jsfiddle.net/xTd6Y/4
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多