2010-01-31 14 views
8

Ho due colonne affiancate che sono colori diversi. Lo sfondo ha anche un colore unico. La colonna di destra contiene del testo che si espanderà a un'altezza sconosciuta. L'altra colonna contiene poco o nulla.Alternativa CSS a questo codice CSS-jQuery?

<div id="container"> 
    <div id="leftColumn"> 
     <p>Only one small paragraph here</p> 
    </div> 

    <div id="rightColumn"> 
     <p>Many large paragraphs inside here.</p> 
    </div> 
</div> 

Vorrei che la colonna di sinistra fosse l'altezza esatta della colonna di destra.

Ecco il CSS ...

#leftColumn { 
    display:inline-block; 
    width: 200px; 
} 
#rightColumn { 
    display:inline-block; 
    width: 600px; 
    vertical-align: top; 
} 

Così, quando la pagina viene caricata ho utilizzare jQuery per impostare l'altezza della colonna di sinistra in base all'altezza della colonna di destra.

$(document).ready(function() { 
    $('#leftColumn').css('height', $('#rightColumn').innerHeight()); 
}); 

C'è un modo per farlo con solo CSS?

+0

CSS non può essere l'unico strumento per il lavoro quando altri strumenti si prestano meglio un problema em. Le tabelle HTML non sono malvagie; anche se in passato potevano essere stati abusati prima del buon supporto CSS, le tabelle hanno ancora il loro posto.Quando parli di altezze uguali, le tabelle lo hanno automaticamente e possono essere controllate tramite CSS, per una soluzione ibrida che utilizza il meglio dei due mondi. Altrimenti può diventare complicato velocemente se si usa uno strumento per escludere gli altri per il gusto di farlo. –

+1

Poi di nuovo l'autore ha chiesto una soluzione solo CSS, quindi forse il tentativo di rafforzare i nostri ideali con l'esclusione di rispondere direttamente alla domanda sta lavorando contro il processo. –

risposta

4

ci sono pochi altri modi per raggiungere questo layout oltre ad utilizzare Javascript.

metodi includono:

  • Utilizzando visualizzazione:
  • colonne Faux (immagine di sfondo dell'elemento padre) tabella sugli elementi
  • L'aggiunta di più contenitori div per ogni sfondo
  • Utilizzare un tabella (non molto popolare per ovvi motivi)

Tutti questi hanno diversi vantaggi, inconvenienti e ciascuno introduce il proprio mal di testa allo sviluppo del sito. Voterò per l'utilizzo di false colonne perché mantiene l'html il più semplice ed è compatibile con tutti i browser.

Letture addizionali:

+0

quali sono i contro usare display: tabella su un div? –

+0

@Jitendra - IE 6/7 non supporta la visualizzazione: tabella. –

+0

Grazie per la bella lista di opzioni. Dovrò considerare quale sarà la cosa migliore per il mio progetto. Le opzioni tre sembrano qualcosa che potrebbe funzionare bene. Anche le finte colonne sembrano buone, ma non sono sicuro di voler affrontare le differenze tra modello e IE e altri browser. – user182666

0

può essere fatto facilmente con <table>

+1

A meno che non stia visualizzando i dati tabulari, è una cattiva idea (tm) – rossipedia

+0

Downvoted (sorry) perché è un cattivo consiglio. – metrobalderas

+3

@Bryan Ross - Fare loop in aria per ottenere qualcosa con uno strumento semplice ed esistente è di solito una cattiva idea nella programmazione. Inoltre, i div sono ancora meno semantici dei tavoli. –

0

Non sono sicuro se c'è un modo CSS puro per fare questo (forse in CSS3). Ma dovresti leggere questo articolo e vedere se funziona per te.

http://www.alistapart.com/articles/fauxcolumns/

caso contrario, si potrebbe prendere in considerazione questa tecnica (che richiede un sacco di stupido markup).

http://matthewjamestaylor.com/blog/equal-height-columns-3-column.htm

+0

Perché il downvote? Che diamine? – jessegavin

+0

+1 per il secondo link .. non ha molto markup sciocco .. un div extra wrapping per colonna .. –