Il y a peu de temps, en lisant votre journal aux pages 2 et 3, vous avez sûrement remarqué du texte disposé en colonnes. Depuis lors, vous rêvez peut-être d'obtenir le même résultat sur votre site. Le W3C a pensé à vous en introduisant dans la nouvelle norme CSS niveau 3 des propriétés simples pour créer des colonnes de texte. Nous allons donc nous intéresser au «
working draft » de ces propriétés, voici
le texte en question.
L'idée est en travail depuis avril 2011, c'est donc relativement récent, ce qui veut dire que peu de navigateurs l'implémentent. Néanmoins, ici n'est pas le sujet, poursuivons pour trouver ce qui nous intéresse. Voilà,
nous y sommes. Intéressons-nous de plus près à ces propriétés, si vous le voulez bien.
Taille et nombre des colonnes
Sur les navigateurs dans leurs versions récentes (Firefox 3.5, Opera 11.1 et, à l'avenir, I.E. 10), chaque élément HTML, chaque texte est disposé en colonnes dans son élément parent ! Simplement, ils sont disposés dans une seule colonne, ce qui peut se régler facilement grâce à plusieurs des propriétés imaginées par le W3C, implémentées sur les navigateurs récents.
Durant la présentation des propriétés d'affichage en colonnes, je les écrirai sans les préfixes propriétaires (-moz-, -webkit- et autres) dans un souci de lisibilité. Cependant, pour qu'elles fonctionnent sur Chrome (et dérivés) et Firefox, il faut les préfixer avec ceux qui ont été présentés plus haut.
- La propriété column-count permet de spécifier le nombre de colonnes de texte présentes dans l'élément. Par défaut, la valeur est auto, ce qui signifie que si vous spécifiez une largeur pour les colonnes, le nombre de colonnes sera calculé par le navigateur. Dans le cas contraire, une seule colonne sera utilisée. La valeur à spécifier pour ces propriétés est simplement un nombre, raisonnable (ne demandez pas cent colonnes sur un élément de 100 pixels de largeur : le tout serait illisible) si possible.
- La propriété column-width permet de spécifier une largeur pour chacune des colonnes qui seront créées. Cette propriété est actuellement prise en compte par les navigateurs uniquement si la propriété column-count est définie à auto, dans le cas contraire sa valeur est ignorée.
La valeur que peut prendre cette propriété est une longueur comme vous avez l'habitude de les spécifier. Cependant, vous ne pouvez pas utiliser les pourcentages. Mais les autres unités sont utilisables, bien que je vous déconseille l'utilisation des centimètres qui sont très mal interprétés.
- La « méga-propriété » de colonnes (columns) rassemble les deux propriétés citées ci-dessus. Personnellement, je ne lui ai pas trouvé d'utilité puisque la valeur de column-width est ignorée quand l'autre a une valeur. De plus, Firefox ne reconnaît pas cette propriété, ne l'utilisez donc pas avant un peu de temps.
Exemple :
Code : CSS - Exemple d'utilisation des propriétés citées | body {
column-count: 2; /* Disposition de la page en deux colonnes */
}
body {
column-width: 10em; /* Disposition de la page en colonnes de taille dix fois supérieure à la normale */
}
|
Améliorer la visibilité des colonnes
Vous voudriez sûrement ajouter une touche personnelle à l'apparence des colonnes ainsi produites. Des propriétés ont encore une fois été imaginées à cet effet. Nous pourrions, par exemple, régler l'espacement entre nos colonnes qui est réglé à une valeur qui diffère actuellement sur certains navigateurs ; ou bien, afficher un trait entre chaque colonne… Petite présentation avec ces propriétés simples mais utiles.
- La propriété column-gap permet de définir l'espacement entre les colonnes crées par le navigateur. La valeur par défaut varie entre 0px et 1em, selon les navigateurs, bien que la seconde soit, elle, recommandée par la spécification. Toutes les unités sont acceptées en tant que valeur, sauf, encore une fois, les pourcentages.
- La propriété column-rule-style définit le style de la bordure séparant les colonnes, et elle est définie par défaut à none. Les valeurs possibles sont les mêmes que celles proposées pour les bordures d'éléments divers :
- none (pas de bordure) ;
- dotted (bordure « en points ») ;
- dashed (série de petits traits) ;
- solid (une simple bordure continue) ;
- double (une double bordure continue) ;
- groove (effet de profondeur, vers l'intérieur) ;
- ridge (effet de profondeur, vers l'extérieur).
- La propriété column-rule-width permet de définir la largeur de la bordure séparant les colonnes définies. Par défaut, none. Vous pouvez définir cette propriété avec n'importe quelle unité, sauf les pourcentages.
- La propriété column-rule-color, quant à elle, définit la couleur de cette dernière bordure.
- Toutes ces propriétés peuvent être définies grâce à la « méga-propriété » column-rule.
Exemple : column-rule: 3px inset #330000.
Exemple :
Code : CSS - Code d'exemple résumé des propriétés | body {
column-width: 150px; /* Colonnes de 150 pixels de largeur */
column-gap: 30px; /* Espacement */
column-rule: 1px solid black; /* Un simple trait noir pour bordure de séparation */
}
|
Il existe d'autres propriétés pour mettre en forme les cellules. Cependant, la plupart des autres ne sont pas implémentées dans les navigateurs actuels, puisque leur fonction n'est pas principale.
On trouve d'autres propriétés, rarement implémentées sur les navigateurs actuels, qui introduisent des fonctionnalités supplémentaires. Par exemple, pour réguler la distribution du texte parmi les colonnes ou pour répartir un élément sur plusieurs colonnes en largeur. En outre, Mozilla a initié l'utilisation de la propriété
height pour les conteneurs de colonnes, qui permet de spécifier la hauteur maximale que les colonnes peuvent prendre (cependant, cette propriété reste hors de la spécification actuelle).
Néanmoins, cela peut poser quelques problèmes, comme nous allons le voir.
Propriétés peu souvent interprétées
La propriété
column-span n'est reconnue ni par Mozilla Firefox ni par Chrome, qui sont deux navigateurs possédant une part importante du marché. Cette propriété permet de spécifier si les éléments HTML de type
block contenus dans les colonnes prennent, en largeur, la place de toutes les colonnes ou se limitent à celle où ils se trouvent. La valeur par défaut étant
none (les éléments prennent la place de la colonne où ils se trouvent uniquement), nous pouvons sans problème insérer des éléments
block dans nos colonnes.
Cependant, impossible d'utiliser cette propriété actuellement car aucune des autres valeurs n'est acceptée. Nous devrons nous contenter de ce genre de choses jusqu'à l'interprétation complète :
Un élément h1 impossible à placer sur 2 ou 3 colonnes (cliquez pour agrandir)
Prévisualisation
Restez à l'écoute des news pour être au courant de l'évolution de la situation.
Vous avez désormais tous les outils nécessaires pour créer un design en colonnes. Sachant que cette méthode ne concerne que, globalement, le texte et qu'elle est encore à l'état de test, vous pouvez tout de même l'utiliser dans des buts simples. Désormais, pourquoi pas un exercice de travaux pratiques, afin d'assimiler toute cette théorie ?
