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

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

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

Вот HTML-код:

<ul class="thumbnails">
    <li class="span3">
        <a href="#">
            <div id="ImageHover">
                <img src="http://209.236.116.120/~sciallin/it/backend/wp-content/uploads/2014/07/model23.png" alt="" />
            </div>
        </a>
    </li>
</ul>

Здесь CSS:

<style>
#ImageHover img:hover
{
     background-color:rgba(0,0,0,0.6);
}
</style>

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

Первая проблема решена, и когда внутри страницы, чтобы сделать изображение активным с наложением, я сделал это -> Вот HTML:

<div id="ImageHover" class="active">
<img alt="" src="http://209.236.116.120/~sciallin/it/backend/wp-content/uploads/2014/07/model23.png">
</div>

Вот CSS:

#ImageHover.active {
    background : rgba( 0, 0, 0, 0.5 );
    bottom : 0;
    content : ' ';
    left : 0;
    position : absolute;
    right : 0;
    top : 0;
}

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

3 ответа

Решение

Замените свой текущий CSS следующим и примените .active класс к твоей коробке.

#ImageHover {
    position: relative;
}

#ImageHover:hover:after,
#ImageHover.active:after {
    background : rgba( 0, 0, 0, 0.5 );
    position: absolute;
    top: 0;
    left: 28px;
    bottom: 15px;
    right: 28px;
    content: '';
}

Я изменил положение так, чтобы оно идеально обрисовывало вашу коробку, но вы можете изменить ее обратно, если хотите.

Это (или что-то подобное) должно дать вам эффект, по крайней мере, в современных браузерах:

#imageHover {
    position : relative;
}
#imageHover:hover:after {
    background : rgba( 0, 0, 0, 0.6 );
    bottom : 0;
    content : ' ';
    left : 0;
    position : absolute;
    right : 0;
    top : 0;
}

Чтобы перенести эффект, чтобы указать, что пользователь находится на данной странице, вам понадобится класс на соответствующей #imageHover на странице. Вы можете добавить #imageHover.active как дополнительное правило после стиля наведения.

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

РЕДАКТИРОВАТЬ: селектор для .active класс также понадобится :after Псевдо-элемент. Правило CSS будет примерно таким:

#imageHover:hover:after,
#imageHover.active:after {
    /* ...css... */
}

Извиняюсь за то, что не разъяснил это.

Дальнейшее чтение о псевдоэлементах (эти вещи потрясающие!)

Чтобы изображение было уже активным при загрузке следующей страницы, вам следует загрузить страницу с атрибутом hash.

Допустим, у вас есть 4 изображения с разными идентификаторами на странице pictures.html:

<img id="image1" class="imageOverlay" src="" />
<img id="image2" class="imageOverlay" src="" />
<img id="image3" class="imageOverlay" src="" />
<img id="image4" class="imageOverlay" src="" />

Чтобы загрузить страницу с активным 3-м изображением, вы вызываете pictures.html#image3

Затем в вашем CSS:

.imageOverlay:active {
    /* CSS for image overlay */
}

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

Я не думаю, что в CSS есть способ избежать такого поведения.

Другие вопросы по тегам