Форма треугольника с фоновым изображением
Я работаю над проектом, который требует двух треугольников для хранения фоновых изображений и ссылок.
Вот мой макет, как бы мне хотелось два треугольника.
![Triangles with background images]()
В настоящее время у меня есть только два div, которые охватывают 900x600 с каждым треугольником в качестве фонового изображения. Проблема, с которой я сейчас сталкиваюсь, это то, что я не могу нависать над прозрачной частью кинотеатра, чтобы добраться до фото div.
Могу ли я выполнить этот проект с помощью треугольников css3 и установить их фоновые изображения? Я всегда думал, что пользовательская форма состоит из границы с пограничным цветом.
Можно ли использовать треугольники css3, и если да, может ли кто-нибудь помочь мне с кодом?
Вот что я сейчас имею.
.pageOption {
position: relative;
width: 900px;
height: 600px;
}
.pageOption .photo {
position: absolute;
top: 0px;
left: 0px;
width: 900px;
height: 600px;
background: url('../images/menuPhoto.png') no-repeat 0 0;
}
.pageOption .cinema {
position: absolute;
bottom: 0px;
right: 0px;
width: 900px;
height: 600px;
background: url('../images/menuCinema.png') no-repeat 0 0;
}
<div class="pageOption">
<a href="#" class="option photo" id="weddingPhoto"></a>
<a href="#" class="option cinema" id="weddingCinema"></a>
</div>
Ответы
Ответ 1
Это очень просто, если вы используете дочерние образы для ссылок вместо фоновых изображений. Вам просто нужно перекосить два элемента .option
с разными истоками трансформации, затем развязать их дочерние образы и установить overflow: hidden
как на .pageOption
, так и на элементы .option
. Поддержка хороша, должна работать на все, кроме IE8/7 и Opera Mini.
Результат
![triangle images]()
HTML
<div class='pageOption'>
<a href='#' class='option' data-inf='photo'>
<img src='../images/menuPhoto.png'>
</a>
<a href='#' class='option' data-inf='cinema'>
<img src='../images/menuCinema.png'>
</a>
</div>
Соответствующий CSS:
.pageOption {
overflow: hidden;
position: relative;
width: 40em; height: 27em;
}
.option, .option img { width: 100%; height: 100%; }
.option {
overflow: hidden;
position: absolute;
/* arctan(27 / 40) = 34.01935deg
* need to skew by 90deg - 34.01935deg = 55.98065deg
*/
transform: skewX(-55.98deg);
}
.option:first-child {
left: -.25em;
transform-origin: 100% 0;
}
.option:last-child {
right: -.25em;
transform-origin: 0 100%;
}
.option img {
transform: skewX(55.98deg);
transform-origin: inherit;
}
Ответ 2
Вот мои предложения CSS:
- Использование canvas, который является тегом HTML5 и не является перекрестным браузером.
- Использование SVG. (Самый надежный)
- С помощью CSS3 повернуть переход и накрыть его оболочкой со скрытым переполнением. Опять же не перекрестный браузер.
Поворот:
-webkit-transform: rotate(7.5deg); /* Saf3.1+, Chrome
-moz-transform: rotate(7.5deg); /* FF3.5+
-ms-transform: rotate(7.5deg); /* IE9
-o-transform: rotate(7.5deg); /* Opera 10.5
transform: rotate(7.5deg);
filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9
M11=0.9914448613738104, M12=-0.13052619222005157,M21=0.13052619222005157, M22=0.9914448613738104, sizingMethod='auto expand');
Ответ 3
Вы можете достичь этого макета с помощью нескольких подходов. Ниже приведен пример использования inline svg и элемент клипа:
<svg viewbox="0 0 10 6.7">
<defs>
<clipPath id="top">
<polygon points="0 0, 9.9 0, 0 6.6" />
</clipPath>
<clipPath id="bottom">
<polygon points="10 0.1, 10 6.7, 0.1 6.7" />
</clipPath>
</defs>
<image xlink:href="http://i.imgur.com/RECDV24.jpg" x="0" y="0" height="6.7" width="10" clip-path="url(#top)"/>
<image xlink:href="http://i.imgur.com/5NK0H1e.jpg" x="0" y="0" height="6.7" width="10" clip-path="url(#bottom)"/>
</svg>
Ответ 4
Как вы сказали, css3 tringles сделаны из границ, поэтому вы не можете прикреплять к ним фоны.
Я бы предложил вам просто использовать два PNG один на другой и использовать js для прослушивания события клика и создания правильного действия на основе положения мыши.
Существует также свойство webkit-mask css, но оно очень неподдерживается в других браузерах (я использовал его для небольшого трюка для прокрутки страницы - http://jsfiddle.net/xTNTH/3/ - лучше всего на сафари [no js only css] - http://snag.gy/7fRNq.jpg)