2013-09-03 6 views
11

enter image description hereUtilizzando position: absolute, mantenendo all'interno del flusso di documenti

Si tratta di uno screenshot da una pagina attualmente sto costruendo. Sto cercando di assicurarmi che il pulsante verde sia sempre sul fondo del contenitore. Qui è un pezzo di codice:

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

Finora non c'è nessun problema ... fino a quando le specifiche del prodotto diventa troppo lungo e si rompe nel pulsante verde.

enter image description here

voglio mantenere il pulsante verde nella posizione più in basso, ma nello stesso tempo voglio anche l'altezza di estendere, se le specifiche titolo del prodotto/prodotto diventa troppo lunga.

In un mondo ideale, dovrebbe essere qualcosa di simile:

enter image description here

Quindi la mia idea è quella di mantenere il posizionamento assoluto pur mantenendo all'interno del flusso di documenti (così le specifiche del prodotto conosce il verde il pulsante è lì e non lo sfonda).

ho bisogno solo di estendere se l'altezza spec diventa troppo lunga. In altre parole, se la specifica è in altezza normale, non sarebbe estesa. Mi piacerebbe evitare a weird gap between the spec and the green button.

C'è qualche idea su come farlo?

Ecco un violino per vedere come ho fatto:http://jsfiddle.net/xaliber/xrb5U/

+12

OMG! Cosa c'è che non va nel mio ad-blocker ... Ah, schermata. –

+1

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

risposta

4

Aggiunta position:absolute prende fuori del flusso di documenti, non c'è modo di tenerlo in esso. Tuttavia, è possibile aggiungere padding-bottom equivalente all'altezza del pulsante al contenitore article, che impedirà al testo lungo di superare il pulsante.

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

Diversa è la questione che due contenitori con diverse quantità di testi saranno diverse dimensioni (se uno è maggiore della altezza min-set). Non c'è una soluzione semplice per questo nel posizionamento CSS, è necessario ricorrere a Javascript, Flexbox o display:table-cell per mantenere l'altezza di tutti loro uguali ma ognuno di loro ha i propri problemi.

+0

Ci ho pensato; Ho anche pensato di aggiungere il 'min-height' di' article' con l'altezza del pulsante. Ma metterlo in questo modo sembrerebbe strano (troppo lungo) quando la specifica è in altezza normale (ci sarebbe un enorme divario tra la specifica e il pulsante verde).:/ – deathlock

+0

Ecco cos'è il "ridimensionamento della casella: border box"; bit è per;) Include il padding all'interno della tua altezza minima, quindi se il testo è breve la distanza tra pulsante e testo è normale - non c'è spazio grande. – mikel

+0

Puoi vederlo sul mio jsfiddle - anche con il padding-bottom, il "articolo" più a sinistra è della stessa altezza del tuo jsfiddle. – mikel

Problemi correlati