如果没有CSS解决方案,您也可以通过使用画布和一些JS来实现效果;并将一系列裁剪后的图像合成到画布上。画布方法的好处是可能会获得更平滑的裁剪边缘,并且它的支持可能会更好。
HTML中的画布元素;
<canvas id="mycanvas"></canvas>
And JS;
var img1 = new Image();
var img2 = new Image();
var img3 = new Image();
img1.src = '../my/image1.jpg';
img2.src = '../my/image2.jpg';
img3.src = '../my/image3.jpg';
var can = document.getElementById("mycanvas");
var ctx = can.getContext('2d');
var imgs = [img1, img2, img3]; //array of JS image objects that you've set up earlier
can.width = 1000;
can.height = 100;
for (var i=0; i < imgs.length; i++) {
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(800 - (200 * i), 0);
ctx.lineTo(900 - (200 * i), 100);
ctx.lineTo(0, 100);
ctx.closePath();
ctx.clip();
ctx.drawImage(imgs[i], 0, 0);
}
这段代码只是我脑海中的想法,我还没有测试过。但基本上,假设您有一个最大宽度为1000像素,高度为100像素的画布。上面发生的事情是,您设置了一个裁剪区域,该区域在从点(800,0)到(900,100)的画布上设置了对角线,然后将图像绘制到该裁剪区域中... 然后为每个图像设置新的裁剪路径,每个图像缩短200像素(请注意“200 * i”部分)。显然,数学需要针对任意数量的图像进行调整等等... 但思路已经存在。
可能比纯CSS棘手一些,但正如我所说,可能在跨浏览器方面支持更好(尽管IE除外...)。
编辑
快速测试一下-看起来您需要设置画布尺寸-并且显然要等待所有图像正确加载才能将它们合成到画布上。