Наложение изображений на загрузочный диск с откликами

Я пытаюсь создать отзывчивую сетку изображений (с описаниями), которые, когда мышь, будут иметь наложение цвета (просто изображение, а не текст). Из-за чувствительной высоты изображений у меня возникает проблема, когда наложение покрывает все, а не только изображение.

Как я могу это исправить?

Я воссоздал проблему здесь для более легкого понимания: http://jsfiddle.net/r8rFc/

Вот мой HTML:

<div class="row">

    <div class="col-xs-12 col-sm-6 col-md-3 project">
        <a href="#">
            <div>
                <img src="http://placehold.it/500x500" class="img-responsive"/>
                <div class="fa fa-plus project-overlay"></div>
            </div>
            <div style="text-align:center;">
                <h3>Project name</h3>
                <p>Image description</p>
            </div>
        </a>
    </div>

</div>

И мой CSS:

.project-overlay {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(41,128,185,0.9);
    color: #fff;
    padding: 50%;
}

Спасибо заранее!

Ответы

Ответ 1

Добавьте класс в содержащий div, затем установите для него следующий css:

.img-overlay {
    position: relative;
    max-width: 500px; //whatever your max-width should be 
}

position: relative требуется для родительского элемента дочерних элементов с position: absolute для размещения дочерних элементов относительно этого родителя.

DEMO

Ответ 2

Когда вы указываете позицию: absolute, она позиционирует себя к следующему наивысшему элементу с положением: относительный. В этом случае, что .project div.

Если вы даете изображению немедленного родительского div стиль позиции: относительный, наложение будет использоваться для этого вместо div, который включает текст. Например: http://jsfiddle.net/7gYUU/1/

 <div class="parent">
    <img src="http://placehold.it/500x500" class="img-responsive"/>
    <div class="fa fa-plus project-overlay"></div>
 </div>

.parent {
   position: relative;
}

Ответ 3

Если я понимаю ваш вопрос, вы хотите иметь наложение только над изображением и не покрывать все?

Я бы установил родительский DIV (i, переименованный в контент в jsfiddle) в относительный, поскольку наложение должно быть расположено относительно этого div, а не окна.

.content
{
  position: relative;
}

Я немного подружился и обновил вашу скрипку, чтобы просто наложить размер на img, который (я думаю) - это то, что вы хотите, дайте мне знать в любом случае:) http://jsfiddle.net/b9Vyw/

Ответ 4

У меня было немного проблем с тем, чтобы это работало. Используя ответ brouxhaha, я получил 90% от того, что искал. Но корректировка отступов не позволила бы мне помещать текст куда угодно. Использование верхних и левых казалось лучше для моих целей.

.project-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    color: #fff;
    top: 80%;
    left: 20%;
}

http://jsfiddle.net/1rz0b7d8/1/