Вы определенно находитесь на верном пути. Так как вы используете элемент для значка , вы должны оставить этот элемент самостоятельно, так как он уже расположен и определяет его собственную ширину + высоту (основанную на значке).
Причина, по которой правильное позиционирование :after
правильно, связано с тем, что оно не зависит от размеров его родительских контейнеров. У вас есть только абсолютное значение сверху и слева, что хорошо. Но он не знает, насколько высок он должен быть, потому что его родитель не имеет определенной высоты! Если вы используете абсолютное позиционирование, вам нужно определить размеры родительских контейнеров, чтобы ребенок знал, где его границы.
Так прежде всего, .gallery-icon
уже блочный элемент, так что вам не нужно, чтобы определить его ширину (его уже 100% от природы), только высота:
.gallery-icon {
position: relative;
height: 100%;
}
Во-вторых, вы должны использовать :before
элемента для определения фона, так что вам не придется возиться с иконкой :after
:
&:before {
content: '';
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
background-color: #333;
opacity: 0;
transition: opacity 0.3s ease-in-out;
}
Теперь, вы просто должны добавить изменения непрозрачности при наведении курсора мыши!
&:hover {
.gallery-icon {
&:before {
opacity: .5;
}
&:after {
opacity: 0.6;
}
}
Надежда, что помогает, вот codepen отделилась оригинал: http://codepen.io/anon/pen/JRWqxX
Редактировать: Я также заметил, что ваш img
тег, заставляя его идти ниже визуального дна контейнера, быстрое решение просто добавьте:
.gallery-icon {
img {
display: block;
}
вставить код в сниппета, чтобы увидеть изменения, которые вы использовали, пожалуйста, – JoelBonetR
Вы также можете создать DIV между div.gallery-элементом и div.gallery-значок пейзаж (назовем его Назад2) с желаемым фоном и выполнять перевод на зависании или что-то подобное. Или используйте полупрозрачное изображение и установите back2 opacity 0 и измените на 1 на hover (если img имеет непрозрачность 60% и вы установите полный черный фон, вы получите видимый оверлей) – JoelBonetR