【发布时间】:2015-11-28 23:03:51
【问题描述】:
这基本上是我想要实现的 --> https://jsfiddle.net/tak1pyt7/1/
.clip {
width: 500px;
height: 500px;
-webkit-clip-path: polygon(100% 0, 100% 81%, 82% 100%, 0 100%, 0 0);
clip-path: polygon(100% 0, 100% 81%, 82% 100%, 0 100%, 0 0);
}
body {
background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
height: 100%;
width: 100%;
}
<body>
<div class="clip">
<img src="http://lorempixel.com/600/600/" width="100%" height="100%" />
</div>
</body>
虽然我有一个解决方案,但小提琴中的代码存在各种问题,如下所示:
- 它在 IE 或 Edge 中不起作用,因为不支持剪辑路径
- Clip path 在 Firefox 中不支持 css 形状,如果您需要使其在 Firefox 中工作,则需要提供内联 svg
- 也尝试过提供内联 svg,但它有自己的一组问题,无法解决我的要求。无论容器的高度和宽度如何,我都需要切割尺寸保持不变。使用现在切割图像的内联 svg,它的尺寸会随着高度和宽度的变化而变化,即切割是响应式的。我需要剪裁的静态尺寸。
除了上述解决方案之外,我搜索了很多解决方案,这些解决方案可能会帮助我创建切角的 div,并且切角本身是透明的,因为我的背面没有纯色背景。
探索的其他解决方案
使用 CSS3 渐变示例
- 示例 --> http://jsfiddle.net/spdawson/3Tc8S/light/
- 当您的内容占据整个区域的高度和宽度时不起作用,例如我在帖子开头提供的小提琴。
使用 CSS 边框
对我不起作用,因为必须在其上进行切割的容器必须包含纯色背景色,而我的设计并非如此。
使用 jQuery 插件 (http://jquery.malsup.com/corner/)
您需要有纯色背景色,考虑到我的要求,情况并非如此。我有一张图片作为背景。
一个可行但非常 HACKY 的解决方案
我现在正在将此解决方案用于具有固定高度和宽度的容器,但我的应用程序中有一个页面,其中容器具有静态宽度但动态高度。在这种情况下,黑客将很难实施,并且个人使用此解决方案似乎很奇怪。
我正在尝试寻找更优雅、更简洁的方式来在 CSS 中实现这种解决方案
任何指针都会有所帮助。
【问题讨论】:
-
@web-tiki 提供的解决方案非常好。您也可以尝试我在此处的回答中提供的方法 - stackoverflow.com/questions/19248443/…。 CSS 版本可以支持非纯色背景,也可以响应。
-
@Harry 你的解决方案在我有扎实背景的情况下是有效的。这里我在背景中有一张图片,因此这个解决方案不起作用。
-
在两个 sn-ps 中,您会注意到
body元素有一个径向渐变图像作为背景。它们不是纯色背景 :) 在 SVG sn-p 和 CSS 版本中的第三个示例中,即使形状的内容也不是纯色。 -
对不起,那是我的错。我又检查了一遍。该解决方案仍然对我无效,因为我的容器可能包含文本+图像+视频内容的任意组合。我看到您使用了两个图像来产生剪切效果。我不能保证我的内容只是纯图像。有关如何解决此问题的任何帮助?
-
在这种情况下,我认为你不走运,因为我能想到的最好的是 SVG 剪辑路径,而 IE 支持总是一个缺点。
标签: html css svg css-shapes clip-path