Создание прозрачной стрелки над изображением в CSS3

Я пытаюсь создать эффект прозрачной стрелки над любым изображением в CSS3. См. следующее изображение.

Прозрачная стрелка над изображением

Есть идеи, как сделать этот эффект? Использование LESS, если это поможет.


person Viktor Sarström    schedule 14.05.2013    source источник
comment
связанные: stackoverflow.com/questions /23758922/   -  person web-tiki    schedule 04.11.2014


Ответы (2)


Чтобы нарисовать прозрачный/перевернутый треугольник в CSS3

вы можете использовать технику треугольника CSS3 и создать перевернутую форму, комбинируя :before и :after псевдообъекты, каждый для рисования одной части треугольника.

Вы можете сделать что-то вроде этого:

.image {
    position:relative;
    height:200px;
    width:340px;
    background:orange;
}
.image:before, .image:after {
    content:'';
    position:absolute;
    width:0;
    border-left:20px solid white;
    left:0;
}
.image:before {
    top:0;
    height:20px;
    border-bottom:16px solid transparent;
}
.image:after {
    top:36px;
    bottom:0;
    border-top:16px solid transparent;
}

вот иллюстративный jsfiddle

Для примера я просто использовал плоский оранжевый фон ... но вы можете изменить его на изображение, и, надеюсь, вы получите то, что хотели =)


Изменить: и более окончательный результат может выглядеть примерно так: это

person Martin Turjak    schedule 14.05.2013
comment
а вот тот же пример, но с изображением: jsfiddle - person Martin Turjak; 14.05.2013
comment
Это не работает, если у вашего тела есть фоновое изображение. - person Farzan Balkani; 12.04.2014

Я думаю, вам нужно что-то вроде этого:

.arrow {
    bottom: -25px; 
    left: 30px; 
    width: 40px;
    height: 40px;
    position: absolute;
    overflow: hidden;
}

.arrow:after {
    content: ' ';
    display: block;
    background: red;
    width: 20px;
    height: 20px;
    transform: rotate(45deg);
    position: absolute;
    top: -19px;
    left: 3px;
    background: #999;
    border: 5px solid rgba(0, 0, 0, 0.2);
    background-clip: padding-box;
}
person Matheno    schedule 14.05.2013