2011-04-15 58 views
6

如何创建一个包含IMG的DIV,其中DIV将图像剪切成三角形,从而仅通过三角形显示图像的一部分。如何创建图像的三角形容器(x浏览器)

所以..

<div> 
    <img src='some_image' /> 
</div> 

当图像是正方形,但是包含该图像的DIV是三角形。 http://www.script-tutorials.com/creating-kaleidoscope-using-jquery-and-css/解决这个很好,除了这个解决方案不是X浏览器友好(非即)。

http://css3pie.com/看起来很有趣,但是这依赖于PHP。

+3

对于你的问题,CSS3Pie不会有什么用处。然而,你说它依赖于PHP是错误的;它没有。 – Spudley 2011-04-15 16:19:08

+0

我刚刚意识到,它不需要PHP,我的错误。然而,CSS3PIE可以将复杂的CSS3转换为IE可以理解的东西,它可以解决我的问题,但它似乎不支持transform/matrix,无论如何,Raphael看起来像一个非常可行的选项。 – 2011-04-15 19:35:10

回答

6

您不能创建非矩形的DOM元素。

有几种方法可以破解它。

首先,有一种方法使用元素每边变化宽度的CSS边框,使其看起来像三角形。它仍然是一个矩形,但它看起来像一个三角形。

有这个在这里的教程:http://www.russellheimlich.com/blog/pure-css-shapes-triangles-delicious-logo-and-hearts/

这种方法的下侧是,它是有限的创造直角三角形。你可以加入其中的几个来解决这个问题,但是你的图像没有一个容器。

这样做的替代方法就是将旋转的元素放置在主要元素的顶部,以便它们覆盖图像的相应部分并使其看起来像三角形。这适用于所有的浏览器,尽管IE确实有一些非常令人讨厌的旋转语法,并且在浏览器上很重要,因为你只能用它来制作图形。

另一种选择可能是使用CSS转换。然而,这只有少数最新的浏览器支持,所以它不适用于大多数用户。

更好的方法可能是为此使用适当的图形库,而不是试图将它变成一个<div>元素。我想推荐使用Raphael。这是一个JavaScript库,可以使用SVG(或VML for IE)直接绘制到浏览器中。使用它创建三角形并用图形填充三角形是很简单的。请参阅Raphael主页上的示例以帮助您入门。

3

根据你想要的结果,据我所知,你不能做一个三角形的DIV没有Transform:;然而,一个解决方案是将一个div放置在问题的div内,PNG切割的一半图像只显示透明部分。不知道这对你来说是否可行。