图像裁剪为网页上的三角形(image cropped as a triangle on webpag

2019-10-18 09:10发布

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

我做了一些白色css三角形。 当你将鼠标悬停在一个三角形,白色三角形应在一张照片改变也冒出像一个三角形。 我做了它的jsfiddle:

fiddleLink

任何帮助表示赞赏

Answer 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。 您可以将剪辑路径的任何HTML元素的CSS

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

但这只是在Firefox可靠到目前为止,我可以告诉。

注:解决方案只在FF和Chrome测试

注意:小编辑移动:hover从SVG到嵌入图像,以纠正悬停问题引发外界的剪裁区域



文章来源: image cropped as a triangle on webpage