CSS peut-il vraiment remplacer HTML pour les tableaux?
Bonjour,
Je suis entrain de refondre un site web qui date de 2004, tout en <table>.
De nombreux extraits que j'ai vu sur Internet m'ont montré des <div> utilisant des CSS pour une présentation équivalente, avec cependant toujours ces contraintes:
- Jamais plus de trois colonnes. Car plus rendrait la feuille de style complexe, si seulement c'est applicable.
- Incapacité d'aligner verticalement ou horizontalement les colonnes. Et là, je suis craintif. Si mes données ne sont plus alignées les unes en regard des autres, je peux jeter mon application parce que je vais passer pour un clown. J'ai forcément du mal comprendre ce que j'ai lu.
À moins que ce soit: incapacité d'aligner des éléments au sein de la cellule créée? Humm...
En fait, j'ai été averti d'un très grand nombre de ratages graphiques potentiels. En particulier, ceux là:
Avec un "tableau en div" de deux lignes à trois cellules ([col1, col2, col3] et en dessous [col4, col5, col6]):
1) Si col3 est plus haute que les autres: col1 et col2 laissent un blanc avec col4 et col5.
2) [col1 et col4], [col2 et col5], [col3 et col6] n'ont pas la même largeur.
Je l'ai lu sur des articles datant de 2006 à 2009. Je ne sais plus à quoi me vouer. En tout cas, j'ai surtout vu des exemples une à trois colonnes sauce "Hello World".
J'ai des tableaux à convertir, de trois à huit colonnes, sélectionnées dynamiquement à l'exécution, et qui doivent s'aligner comme le fait une table HTML.
3) CSS y parvient-il parfaitement? C'est à dire: il sait reproduire entièrement ce que les <table> si décriées peuvent faire?
Ma dernière inquiétude avec CSS, c'est de transformer une usine à gaz HTML en usine à gaz CSS dès que l'on passe par des mots-clés trop périlleux ou bien lorsqu'il faut remplacer trois instructions HTML par quatorze directives CSS.
Car j'ai vu les mots-clés: position, left, padding, margin, width à utiliser de concert dans chacun des différents styles à déclarer selon le type de la colonne (extrême gauche, extrême droite, cellule située hors extrémité).
Si remplacer un trio Table/tr/td se fait par le biais de 5 directives CSS par type de cellule, on écrit alors quinze directives en CSS pour en remplacer trois en HTML. A t-on vraiment gagné?
J'ai appris qu'il existait un mot-clé column.
Je me demande s'il peut être employé pour éviter la dérive que je viens de mentionner.
4) CSS parvient-il à simuler une table et ses lignes simplement?
Ou bien le taux de conversion est-il toujours de cinq (ou plus) directives CSS à écrire par instruction HTML remplacée?
5) Ça ma l'air.... Pas solide du tout!
Vraiment pas! Sujet à tous les aléas. Le moindre débutant qui approche, n'aura t-il pas un mal de tête plus grand qu'avec HTML?
Cela ne va t-il pas faire des gaufres graphiques dès que l'on touchera à un petit truc dans la feuille de style?
6) Avez vous un exemple de code HTML montrant un tableau de cinq colonnes ou plus, employant CSS et non <table> et qui fonctionne?
Je pose la question... tout simplement parce que je n'en ai jamais vu!
Cela existe t-il ou pas? Et si oui, où?
Non, je ne suis pas convaincu.
Oui, je suis inquiet.
J'ai peur de m'embarquer dans l'usine à gaz ultime.
Celle qui "fera bien", mais me mettra par terre après quelques mois d'emploi quand un utilisateur, dans une configuration particulière, me dira: "Dites, chez moi, ça provoque tel truc à l'écran."
Avez-vous des arguments convaincants, prompts à me rassurer?
En vous remerciant,
Grunt.
CSS peut-il vraiment remplacer HTML pour les tableaux ?
Bonjour,
Comme grunt2000, je veux refondre un "vieux" site et le passer tout en css et même prendre de l'avance et faire du css3.
J'ai des pages avec des frames et j'ai vu sur d'autres forums que ce ne sera pas si facile à faire.
Mais pour en revenir au sujet de grunt2000, je me trouve confronté à un petit soucis :
Prenons, pour faire simple, le cas d'un tableau à 2 colonnes et plusieurs lignes.
Les colonnes impaires sont à gauche et les paires à droite.
J'alterne, les tailles :
ligne 1, col1 = 300, col2 = le reste
ligne 2, col3 = 600, col4 = le reste
Si je piste avec web developer sous FF, les div sont bien affichées dans le bon ordre.
La où ca ne marche pas, c'est quand col2 ou col4 est moins haut que col1.
Le contenu de col3 est affiché en plein milieu de col1 (càd à la fin du height de col2).
J'ai essayé un tas de truc, par exemple, englober col1 et 2 dans une pseudo ligne, mais là on attaque le bricolage et on perd la souplesse du remplacement de <table> par css.
Voici l'extrait correspondant de mon code css :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
div.td { /* simule la balise td */
clear: both; /* nouveau pavé */
}
div.tdG300 { /* simule la balise td gauche, taille de 300px */
position: absolute;
width: 300px;
border-right-width: thin;
border-right-style: solid;
border-right-color: grey;
}
div.tdD600 { /* simule la balise td droite, taille le reste */
margin-left: 300px;
width: auto;
}
div.tdG600 { /* simule la balise td gauche, taille 650px */
position: absolute;
width: 600px;
border-right-width: thin;
border-right-style: solid;
border-right-color: grey;
}
div.tdD300 { /* simule la balise td droite, taille de 300px */
margin-left: 600px;
width: auto;
} |
Par contre j'ai trouvé un très bon tuto sur le positionnement des div à l'adresse
http://www.barelyfitz.com/screencast...s/positioning/
Quelqu'un saurait-il comment faire cela proprement et facilement (ne surtout pas rajouter du js pour calculer la hauteur de la div, sinon se serait se marcher sur la tête.
merci;