Ваша проблема связана с тем, как работают псевдоэлементы.
Элементы до и после отображаются внутри родительского элемента. Итак:
div:before{ content:'before'; }
div:after{ content:'after'; }
рендерит в основном так:
<div> <span>before</span> Hello <span>after</span> </div>
Вы не можете поместить другие элементы в img
, потому что img
является заменяемым элементом и поэтому не может применять к нему псевдоэлементы. Прочитать спецификацию .
Таким образом, самый простой вариант - обернуть изображение в <a>
(как это иногда бывает с изображениями) и применить стиль до к a
.
В качестве альтернативы, примите неповоротную тень box-shadow
.
К сожалению, у CSS есть ограничения, поэтому вам придется где-то идти на компромисс, либо в дизайне (я бы сказал, что так и будет), либо в разметке.