Ответ 1
Существует несколько способов сделать прозрачную стрелку над изображением с помощью CSS. Эти два, которые я опишу, включают псевдоэлементы, чтобы минимизировать разметку и иметь один и тот же результат. Вы также можете увидеть SVG-подход в конце этого ответа:
Прозрачный эффект на черной части вокруг стрелки сделан с rgba()
цветами, которые обеспечивают прозрачность. Но вы можете использовать непрозрачность на псевдоэлементах, если хотите.
1. SkewX()
Вы можете использовать свойство CSS3 skewX()
на двух псевдоэлементах, чтобы сделать прозрачную стрелку. Основным преимуществом этого подхода является то, что прозрачная стрелка может быть отзывчивой, но также позволяет поместить границу на черную фигуру и вокруг трассы.
Чувствительность формы выполняется с помощью свойства padding-bottom
для поддержания его соотношения сторон (этот метод описан здесь).
.wrap {
position: relative;
overflow: hidden;
width: 70%;
margin: 0 auto;
}
.wrap img {
width: 100%;
height: auto;
display: block;
}
.arrow {
position: absolute;
bottom: 0;
width: 100%;
padding-bottom: 3%;
background-color: rgba(0, 0, 0, 0.8);
}
.arrow:before,
.arrow:after {
content: '';
position: absolute;
bottom: 100%;
width: 50%;
padding-bottom: inherit;
background-color: inherit;
}
.arrow:before {
right: 50%;
-ms-transform-origin: 100% 100%;
-webkit-transform-origin: 100% 100%;
transform-origin: 100% 100%;
-ms-transform: skewX(45deg);
-webkit-transform: skewX(45deg);
transform: skewX(45deg);
}
.arrow:after {
left: 50%;
-ms-transform-origin: 0 100%;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-ms-transform: skewX(-45deg);
-webkit-transform: skewX(-45deg);
transform: skewX(-45deg);
}
<div class="wrap">
<img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
<div class="arrow"></div>
</div>