Как сделать в CSS наложение поверх изображения?

Я пытаюсь достичь чего-то подобного:

this effect

когда я наведу курсор на изображение, я хотел бы поставить на это изображение этот темный цвет с некоторым текстом и значком.

Я застрял здесь. Я нашел несколько учебников, но они не сработали для этого случая. Кроме того, еще одна проблема-каждое изображение имеет разную высоту. Ширина всегда одна и та же.

Как можно достичь этого эффекта?

3 ответов


вы можете достичь этого с помощью этого простого CSS / HTML:

.image-container {
    position: relative;
    width: 200px;
    height: 300px;
}
.image-container .after {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: none;
    color: #FFF;
}
.image-container:hover .after {
    display: block;
    background: rgba(0, 0, 0, .6);
}

HTML-код

<div class="image-container">
    <img src="http://lorempixel.com/300/200" />
    <div class="after">This is some content</div>
</div>

демо:http://jsfiddle.net/6Mt3Q/


UPD: вот одна хорошая финальная демо с некоторыми дополнительными стилями.

.image-container {
    position: relative;
    display: inline-block;
}
.image-container img {display: block;}
.image-container .after {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: none;
    color: #FFF;
}
.image-container:hover .after {
    display: block;
    background: rgba(0, 0, 0, .6);
}
.image-container .after .content {
    position: absolute;
    bottom: 0;
    font-family: Arial;
    text-align: center;
    width: 100%;
    box-sizing: border-box;
    padding: 5px;
}
.image-container .after .zoom {
    color: #DDD;
    font-size: 48px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -30px 0 0 -19px;
    height: 50px;
    width: 45px;
    cursor: pointer;
}
.image-container .after .zoom:hover {
    color: #FFF;
}
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet"/>

<div class="image-container">
    <img src="http://lorempixel.com/300/180" />
    <div class="after">
        <span class="content">This is some content. It can be long and span several lines.</span>
        <span class="zoom">
            <i class="fa fa-search"></i>
        </span>
    </div>
</div>

Вы можете использовать псевдо-элемент для этого, и ваш образ на Ховер:

.image {
  position: relative;
  height: 300px;
  width: 300px;
  background: url(http://lorempixel.com/300/300);
}
.image:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  transition: all 0.8s;
  opacity: 0;
  background: url(http://lorempixel.com/300/200);
  background-size: 100% 100%;
}
.image:hover:before {
  opacity: 0.8;
}
<div class="image"></div>

немного поздно для этого, но этот поток появляется в Google в качестве верхнего результата при поиске метода наложения.

Вы можете просто использовать background-blend-mode

.foo {
    background-image: url(images/image1.png), url(images/image2.png);
    background-color: violet;
    background-blend-mode: screen multiply;
}

что это делает, это берет второе изображение, и он смешивает его с цветом фона с помощью режима смешивания умножить, а затем он смешивает первое изображение со вторым изображением и цветом фона с помощью режима смешивания экрана. Существует 16 различных режимов наложения, которые можно использовать для достижения любой оверлей.

умножьте, экран, оверлей, затемните, осветите, цвет-Додж, цвет-ожог, трудн-свет, мягк-свет, разница, исключение, оттенок, сатурация, цвет и светимость.