2013-09-03 2 views
11

enter image description hereИспользуя позицию: абсолютная, удерживая ее внутри документа потока

Это скриншот со страницы в данный момент я строю. Я пытаюсь убедиться, что зеленая кнопка всегда находится на дне контейнера. Вот кусок кода:

HTML

<div class="list-product-pat"> 
    <article> 

    <!-- title, image, spec ... --> 

    <div class="pricing-pat"> 

    <!-- the button goes here --> 

    </div> 
    </article> 
</div> 

CSS

.list-product-pat article { 
    position: relative; 
    min-height: 260px; 
} 

.list-product-pat .pricing-pat { 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
} 

До сих пор нет никаких проблем ... пока спецификация продукта не будет слишком долго, и это перерывы в зеленую кнопку.

enter image description here

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

В идеальном мире, это должно быть что-то вроде этого:

enter image description here

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

Мне нужно его только для расширения , если высота спецификации слишком длинная. Другими словами, если спецификация находится на нормальной высоте, она не будет проходить. Я бы хотел избежать a weird gap between the spec and the green button.

Есть ли идеи, как это сделать?

Вот скрипка, чтобы посмотреть, как я это сделал:http://jsfiddle.net/xaliber/xrb5U/

+12

OMG! Что случилось с моим рекламным блокером ... Ах, снято с экрана. –

+1

Duplicate: http://stackoverflow.com/questions/16155003/constant-row-hight – cimmanon

ответ

4

Добавление position:absolute берет его из потока документа, нет никакого способа, чтобы держать его в нем. Но вы можете добавить padding-bottom эквивалент высоты кнопки в контейнер article, что предотвратит длинный текст, перекрывающий кнопку.

.list-product-pat article { 
    position: relative; 
    min-height: 260px; 
    padding-bottom:80px; 
    -moz-box-sizing:border-box; 
    box-sizing:border-box; 
} 

http://jsfiddle.net/xrb5U/3/

Отдельный вопрос в том, что два контейнера с разным количеством текстов будут разными размерами (если он больше, чем высота мин-набор). В CSS-позиционировании нет легкого решения, вам нужно прибегнуть к Javascript, Flexbox или display:table-cell, чтобы сохранить высоту всех одинаковых, но у каждого из них есть свои проблемы.

+0

Я думал об этом; Я также подумал о добавлении 'min-height'' статьи 'с высотой кнопки. Но, полагая, что это будет выглядеть слишком странно (слишком долго), когда спецификация будет на нормальной высоте (там будет огромный разрыв между спецификацией и зеленой кнопкой).:/ – deathlock

+0

Вот что такое «box-size: border-box»; бит для;) Он включает прописку внутри вашей минимальной высоты, поэтому, если текст короткий, расстояние между кнопкой и текстом нормальное - нет большого пространства. – mikel

+0

Вы можете увидеть это на моем jsfiddle - даже с нижней долей, самая левая «статья» - такая же высота, как и в вашем jsfiddle. – mikel

Смежные вопросы