Я пытаюсь добавить прозрачное черное наложение к изображению всякий раз, когда мышь наводит курсор на изображение, используя только CSS. Это возможно? Я пробовал это:
http://jsfiddle.net/Zf5am/565/
Но я не могу показать div.
<div class="image">
<img src="http://www.newyorker.com/online/blogs/photobooth/NASAEarth-01.jpg" alt="" />
<div class="overlay" />
</div>
.image {
position: relative;
border: 1px solid black;
width: 200px;
height: 200px;
}
.image img {
max-width: 100%;
max-height: 100%;
}
.overlay {
position: absolute;
top: 0;
left: 0;
display: none;
background-color: red;
z-index: 200;
}
.overlay:hover {
display: block;
}
Ответы:
Я бы предложил использовать псевдоэлемент вместо элемента наложения. Поскольку псевдоэлементы не могут быть добавлены к закрытым
img
элементам, вам все равно потребуется обернутьimg
элемент.ЖИВЫЙ ПРИМЕР ЗДЕСЬ - ПРИМЕР С ТЕКСТОМ
Что касается CSS, установить дополнительные размеры по
.image
элементу, и относительно его положения. Если вы стремитесь к адаптивному изображению, просто опустите размеры, и это все равно будет работать (пример) . Стоит просто отметить, что размеры должны быть на родительском элементе, а не на самомimg
элементе, см .Присвойте дочернему
img
элементу ширину100%
родительского элемента и добавьте,vertical-align:top
чтобы исправить проблемы с выравниванием базовой линии по умолчанию.Что касается псевдоэлемента, установите значение содержимого и расположите его абсолютно относительно
.image
элемента. Ширина / высота100%
гарантирует, что это будет работать с различнымиimg
размерами. Если вы хотите переместить элемент, установите непрозрачность0
и добавьте свойства / значения перехода.Используйте непрозрачность
1
при наведении курсора на псевдоэлемент, чтобы облегчить переход:КОНЕЧНЫЙ РЕЗУЛЬТАТ ЗДЕСЬ
Если вы хотите добавить текст при наведении:
Для простейшего подхода просто добавьте текст в качестве
content
значения псевдоэлемента:ПРИМЕР ЗДЕСЬ
Это должно работать в большинстве случаев; однако, если у вас более одного
img
элемента, вы можете не захотеть, чтобы один и тот же текст отображался при наведении курсора. Таким образом, вы можете установить текст вdata-*
атрибуте и, следовательно, иметь уникальный текст для каждогоimg
элемента.ПРИМЕР ЗДЕСЬ
При
content
значенииattr(data-content)
псевдоэлемент добавляет текст из атрибута.image
элементаdata-content
:Вы можете добавить немного стиля и сделать что-то вроде этого:
ПРИМЕР ЗДЕСЬ
В приведенном выше примере
:after
псевдоэлемент служит черным оверлеем, а:before
псевдоэлемент - заголовком / текстом. Поскольку элементы не зависят друг от друга, вы можете использовать отдельные стили для более оптимального размещения.источник
top:30%
работает, см. мою скрипку , но для адаптивного макета было бы неплохо установить его точно по центру. Кстати: Спасибо за хороший ответ.top: 50%
/transform: translateY(-50%)
для вертикального центрирования. Это один из подходов, упомянутых в этом другом ответе, если мой - stackoverflow.com/questions/5703552/…CSS3 фильтр
Хотя эта функция реализована только в webkit и не имеет совместимости с браузерами , но стоит взглянуть на:
Демо JSFiddle
Ссылки
Похожие темы на SO
источник
Вы были близки. Это будет работать:
Вам нужно было поместить
:hover
изображение и сделать.overlay
обложку целым изображением, добавивright:0;
иbottom:0
.jsfiddle: http://jsfiddle.net/Zf5am/569/
источник
Вот хороший способ использования: после в div изображения вместо дополнительного оверлея div: http://jsfiddle.net/Zf5am/576/
источник
.overlay
не имеет высоты или ширины и содержимого, и вы не можете навести курсор мышиdisplay:none
.Вместо этого я присвоил div тот же размер и положение, что
.image
иRGBA
значение при наведении.http://jsfiddle.net/Zf5am/566/
источник
Посмотрите, что я сделал здесь: http://jsfiddle.net/dyarbrough93/c8wEC/
Во-первых, вы никогда не устанавливаете размеры наложения, что означает, что он вообще не отображается. Во-вторых, я рекомендую просто изменить z-index наложения при наведении курсора на изображение. Измените прозрачность / цвет наложения в соответствии с вашими потребностями.
источник
Вы можете добиться этого, поиграв с непрозрачностью изображения и установив черный цвет фона изображения. Сделав изображение прозрачным, оно будет темнее.
CSS:
Вам может потребоваться установить непрозрачность для конкретного браузера, чтобы это работало и в других браузерах.
источник
Я бы дал минимальную высоту и минимальную ширину вашему оверлеевому div размера изображения и изменил цвет фона при наведении
источник