首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在网页上裁剪为三角形的图像

在网页上裁剪为三角形的图像
EN

Stack Overflow用户
提问于 2013-07-14 18:00:23
回答 1查看 1.6K关注 0票数 1

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

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

fiddleLink

感谢您的任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-15 08:37:49

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
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可见,也可由js和css访问。您可以将剪切路径应用于任何css为

代码语言:javascript
复制
myElement {
    clip-path: url(#clip-triangle);
}

但据我所知,这只在firefox上是可靠的。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17638356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档