Вместо решения CSS вы также можете добиться эффекта, используя холст и немного JS; и компоновка серии обрезанных изображений на этом холсте. Преимущество метода холста в том, что вы потенциально можете получить более гладкие края на обрезках, и он потенциально немного лучше поддерживается.
Элемент холста в HTML;
<canvas id="mycanvas"></canvas>
И 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...).
РЕДАКТИРОВАНИЕ
Провел быстрый тест - похоже, вам нужно установить размеры холста - а также, очевидно, дождаться правильной загрузки всех изображений, прежде чем вы сможете скомпоновать их на холсте.
person
niko
schedule
30.01.2013