HTML, CSS e tutto il resto
Vi è mai capitato di voler ottenere tramite CSS un layout che ricordi quello dei tradizionali quotidiani cartacei? Per chi volesse cimentarsi con i CSS3, sono già a disposizione alcuni generatori di CSS3 che consentono di testare uno dei nuovi moduli che dispone il testo su più colonne: CSS multi-columns
Vediamo di seguito come funziona questo modulo e quali sono i browser compatibili con CSS3 Columns.
Attualmente solo Firefox, Safari e Chrome sono compatibili con il multi-columns. Mozilla utilizza il prefisso speciale moz-, mentre l’implementazione per Safari utilizza il prefisso -webkit, che abbinati alle regole ufficiali, permettono di creare layout multi-columns:
.columns {
-moz-column-count: 3;
-moz-column-gap: 1em;
-moz-column-rule: 1px solid black;
-webkit-column-count: 3;
-webkit-column-gap: 1em;
-webkit-column-rule: 1px solid black;
column-count: 3;
column-gap: 1em;
column-rule: 1px solid black;
}
I browser ad oggi compatibili sono:
Di seguito nel dettaglio ecco cosa abbiamo appena specificato per dividere il layout in colonne.
Abbiamo impostato column-count:3 per dividere il div che contiene il testo in tre colonne di uguale larghezza. Abbiamo inoltre specificato uno spazio tra le colonne, il column-gap:1em, che agisce come la proprietà padding, aumentando notevolmente la leggibilità. Notiamo che l’altezza delle colonne si adatta al contenuto di testo e che, aumentando il numero dei caratteri o la dimensione del testo, essa si adatterà per contenerlo. Di seguito il codice CSS3 che dovremo scrivere:
column-count: 3; column-gap: 1em;
Un altro modo per definire le colonne è impostare solo il column-width (e, come per l’esempio precedente, il column-gap). Per esempio, defininendo un column-width di 200px, tutte le colonne avranno 200 pixel di larghezza: il browser calcola di conseguenza quante colonne di questa larghezza possono inserirsi nell’elemento contenitore, e le crea in base a questo valore. Anche in questo caso, l’altezza delle colonne è definita dal contenuto testuale. Ecco cosa dobbiamo scrivere:
column-width: 200px; column-gap: 1em;
La proprietà column-rule agisce come una sorta di border tra le colonne. Questa regola ha infatti le stesse proprietà del border: (larghezza, stile e colore), e come per esso, possono essere scritte tramite "shorthand":
/*Shorthand per column-rule*/ column-rule:1px solid black; /*che equivale a:*/ column-rule-color: #000; column-rule-style: solid; column-rule-width: 1px;
Questa proprietà non è ancora supportata da nessun browser.
Ecco cosa imposteremo nei fogli di stile con la regola CSS3 per espandere il titolo su più colonne::
/*Settiamo il numero delle colonne: n | all*/ column-span: all;
Come abbiamo potuto notare, siamo ancora lontani dal poter utilizzare nella pratica la proprietà CSS3 multi-columns. Il framework jQuery ci mette però a disposizione un plugin che fa esattamente quanto abbiamo visto fin’ora. Ecco cosa dobbiamo fare: scarichiamo Columnizer jQuery Plugin e colleghiamolo alla nostra pagina HTML da dividere in colonne, così:
<script type="text/javascript" src="script/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="script/jquery.autocolumn.min.js"></script>
Scriviamo poi in pagina il nostro contenuto, agganciandovi una classe, per esempio columns:
<h1>CSS3 e jQuery multi-column module</h1> <div class="columns"> <p>The Columnizer jQuery Plugin will automatically layout your content in newspaper column format. You can specify either column width or a static number of columns. And, of course, it’s easy to use!</p> </div>
Adesso agganciamo il plugin a questa classe, così:
$(document).ready (function() {
$('.columns').columnize({columns:2});
});
Ecco cosa succede: il plugin suddivide il contenuto in div ai quali assegna una classe column: alla prima aggancia la classe first, all’ultima la classe last.
Terminiamo con un ottima funzione che permette di impostare uguale altezza per elementi flottanti, semplicemente includendo questo script e agganciandolo al .mioElementoFloattante:
$(document).ready(function(){
function equalHeight(group) {
tallest = 0;
group.each(function() {
thisHeight = $(this).height();
if(thisHeight > tallest) {
tallest = thisHeight;
}
});
group.height(tallest);
} ;
equalHeight($(".mioElementoFloattante"));
});
Di questa funzione è stato realizzato anche un plugin.
NetTuts: Quick Tip: The Multi-Column CSS3 Module
CSS3 Multi-Column Thriller
CSS3 Multi-column layout module
Smart Columns w/ CSS & jQuery
CSS3 multi-column: pagina di test
Multi-column layout: CSS3 Previews
W3C Multi column
CSS3 multiple columns
A list apart: css3 multicolumn
Equal Height Columns with jQuery
Few-column list
Implementare i CSS3 con jQuery
Questo blog si offre come spazio di condivisione e conoscenza per tutti i webdesigner principianti che aspirano ad allargare le proprie conoscenze su html e css.
1 commento a CSS3 Columns e jQuery: layout multi-colonne ad altezza pari
Grid Layout: risorse e tool per Web design e griglie | paitadesignblog
agosto 9th, 2010 at 19:31
[...] l’utilizzo dei CSS3 o di jQuery per le colonne, non è esattamente facile spezzare una pagina in colonne senza entrare in noiosi calcoli [...]