100% высота абсолютно позиционированного элемента

0

Я пытаюсь настроить якорь, который автоматически растягивается, чтобы соответствовать размерам изображения, которое используется в качестве фона. Кроме того, текст привязки должен быть как по горизонтали, так и по вертикали. Здесь моя текущая разметка HTML:

<div class="wrap">
    <img src="http://placehold.it/350x150">
    <a href="#">
        <span>Anchor</span>
    </a>
</div>

Идея заключается в том, что мой .wrap - это текучий столбец сетки, поэтому изображение растягивается в соответствии с шириной и высотой, определяется отношением изображения. Анкер отображается как table для вертикального выравнивания, а span имеет background видимый при hover на якорь. Есть мой CSS:

* {
    box-sizing: border-box;
}

body {
    height: 100%;    
}

.wrap {
    height: auto;
    margin: 2em;
    overflow: hidden;
    padding: 1em;
    position: relative;
    width: 80%;
}

.wrap img {
    width: 100%;
}

.wrap a {
    display: table;
    height: 100%;
    left: 1em;
    padding: 1em;
    position: absolute;
    text-align: center;
    top: 1em;
    width: 100%;    
}

.wrap a span {
    border: 1px solid red;
    display: table-cell;
    vertical-align: middle;    
}

.wrap a:hover span {
    background: red;    
}

Проблема у меня - это высота якоря, она отказывается заполнить контейнер. Здесь у вас есть скрипка: http://jsfiddle.net/xuxG5/3/

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

Вопрос, отредактированный для отображения якорного текста, не всегда имеет только одну строку текста

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

  • 0
    Как этот jsfiddle.net/j08691/xuxG5/2 ?
  • 0
    Это может быть путь, но заполнение на самом деле не означает центрирование, я обновлю свой вопрос, чтобы показать, что текст может состоять из нескольких строк и не всегда иметь одинаковое количество.
Теги:

1 ответ

1

Это должно сделать поле А заполнить поле - http://jsfiddle.net/xuxG5/5/

.wrap a {
    display: block;
    left: 2em;
    right: 2em;
    bottom: 2em;
    top: 2em;
    position: absolute;
    text-align: center;  
    border: 1px solid red;
}

.wrap a span {
    position: absolute;
    top: 50%;
    margin-top: -1em;
    line-height: 2em;
    width: 100%;
    display: block;
}
  • 0
    Да, это действительно так, но как теперь расположить содержимое по вертикали?
  • 0
    «Кроме того, текст привязки должен быть как горизонтально, так и вертикально »
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню