Ответ 1
Параметры будущего
Идеальный сценарий - использовать один элемент без изображений.
Маскировка и/или отсечение были бы полезны в таких ситуациях, хотя поддержка браузера ограничена. Кажется, что прогресс был достигнут в спецификации (ниже), так как я впервые написал этот ответ, так что поощряю.
Практический подход
На данный момент я бы пошел с решением на основе изображений. Это не должно быть сложным.
Я рекомендую избегать растровой графики, поскольку дисплеи с высокой плотностью становятся все более распространенными (почти каждый монитор планшетных ПК/смартфонов и 4K ПК). Для этого SVG будет работать в большинстве современных браузеров, а PNG можно использовать как резерв.
Demos
- Вот демонстрационный пример с использованием PNG: http://jsfiddle.net/MxspA/6/.
- Та же демонстрация с поддержкой IE7: http://jsfiddle.net/MxspA/9/ (заменяет
:before
и:after
дополнительными элементами).
Источник для версии IE8 +
<div id="box">
<div id="knockout"></div>
</div>
#box{
position: relative;
}
#knockout {
background-image: url(http://i.stack.imgur.com/AXHM0.png);
width: 105px;
height: 180px;
margin: 0 auto;
}
#knockout:before{
content: " ";
position: absolute;
left: -52px;
width: 50%;
height: 100px;
background-color: #000;
}
#knockout:after{
content: " ";
position: absolute;
right: -52px;
width: 50%;
height: 100px;
background-color: #000;
}
Изображения
Здесь прозрачный PNG, чтобы вы начали. Кто-то с базовыми навыками Adobe Illustrator может воссоздать это как изображение SVG, предоставляя вышеупомянутые возможности высокого разрешения. SVG будет хорошо работать как фоновое изображение.