2013-09-03 5 views
11

enter image description hereMit position: absolute, während es im Dokument fließen halten

Es ist ein Screenshot von einer Seite zur Zeit baue ich. Ich versuche sicherzustellen, dass der grüne Knopf immer auf dem Boden des Containers ist. Hier ist ein Stück des Codes:

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%; 
} 

Bisher gibt es kein Problem ... bis das Produkt spec zu lang wird und es bricht in den grünen Knopf ein.

enter image description here

Ich möchte die grüne Taste in der die meisten unteren Position zu halten, aber in der gleichen Zeit möchte ich auch die Höhe zu verlängern, wenn das Produkt Titel/Produkt-Spezifikation zu lang wird.

In der idealen Welt, sollte es so etwas wie diese:

enter image description here

Also meine Idee ist, die absolute Positionierung zu halten, während sie noch im Innern des Dokumentenflusses (so dass das Produkt spec kennt die grünen halten Knopf ist da und bricht nicht durch).

Ich brauche es nur zu erweitern wenn die Spezifikation Höhe zu lang wird. Mit anderen Worten, wenn die Spezifikation in normaler Höhe ist, würde sie sich nicht ausdehnen. Ich möchte vermeiden, a weird gap between the spec and the green button.

Gibt es eine Idee, wie es geht?

Hier eine Geige ist zu sehen, wie ich es tat:http://jsfiddle.net/xaliber/xrb5U/

+12

OMG! Was ist los mit meinem Werbeblocker? Ah, Screenshot. –

+1

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

Antwort

4

position:absolute nimmt es aus dem Dokumentenfluss Hinzufügen, gibt es keine Möglichkeit, es darin zu halten. Aber Sie können stattdessen padding-bottom entsprechen der Höhe der Schaltfläche zum article Container hinzufügen, was verhindert, dass langer Text die Schaltfläche überläuft.

.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/

eine andere Frage ist, daß zwei Behälter mit unterschiedlicher Menge von Texten unterschiedliche Größe sein werden (wenn man größer als die eingestellte min-Höhe). Es gibt keine einfache Lösung für diese CSS-Positionierung, Sie müssen auf Javascript, Flexbox oder display:table-cell zurückgreifen, um die Höhe von allen gleich zu halten, aber jeder von ihnen hat auch seine eigenen Probleme.

+0

Ich dachte daran; Ich habe mir auch überlegt, die 'min-height' des Artikels mit der Höhe des Buttons zu ergänzen. Aber wenn man so vorgeht, würde es seltsam aussehen (zu lang), wenn die Spezifikation in normaler Höhe ist (da wäre eine große Lücke zwischen der Spezifikation und dem grünen Knopf).:/ – deathlock

+0

Das ist, was die "Box-Sizing: Border-Box;" Bit ist für;) Es enthält die Polsterung innerhalb Ihrer Min-Höhe, also, wenn der Text kurz ist, ist der Abstand zwischen Knopf und Text normal - es gibt keinen großen Raum. – mikel

+0

Sie können es auf meinem Jsfiddle sehen - sogar mit Padding-Boden, der links "Artikel" ist die gleiche Höhe wie in Ihrer jfiddle. – mikel

Verwandte Themen