Vive les tableaux de mise en page !

31 596 vues

Publié le

Le design web en 2011 consiste encore à se battre avec des positionnements flottants, absolus, relatifs, des clear, des problèmes de compatibilité, des hacks, des bidouilles, des bugs d'affichage et autres frameworks CSS encombrants.

On ne devrait plus en être là aujourd'hui. C'est du rôle des CSS de nous offrir des solutions simples, intuitives et stables (NDLR : genre "KISS" quoi).

Les propositions CSS3 avant-gardistes telles que Flexible box model et Grid Layout ne seront pas utilisables en production avant un bon bout de temps. En attendant, si la solution était sous nos yeux depuis des années ? Et si l'avenir (proche) des CSS étaient les tableaux de mise en page ?

Note : ça parlera (un peu) de tableaux HTML bien fichus, linéarisables, toussa et aussi (surtout) de CSS display: table, de ses avantages et inconvénients.

5 commentaires
16 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
31 596
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5 061
Actions
Partages
0
Téléchargements
177
Commentaires
5
J’aime
16
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Vive les tableaux de mise en page !

  1. 1. VIVE LES TABLEAUXDE MISE EN PAGE !et si la solution était là depuis le début ? Raphaël Goetter ~ Paris Web 2011
  2. 2. Au tableau : élève Raphaël Goetter © Dew
  3. 3. TABLE(AU) DES MATIERES (hé hé)
  4. 4. 1. Les dessous de table = cest quoi ?2. Comment noircir le tableau = cest naze !3. Table ronde des alternatives = le reste, cest mieux ?4. Faisons table rase du passé5. Remettons-nous en cell ! = cool des CSS !6. Et si on passait à table ?7. Tables de la Loi = hey ça8. Des tableaux de maîtres marche !9. Encore une ombre au tableau ? = mais cest naze alors ?10. Table de chevet
  5. 5. QUESTION DU JOUR 1 fétichisme ?
  6. 6. QUESTION DU JOUR 2 voisin, voisine
  7. 7. AVOUEZ !« tableau, cest le Mal ! »
  8. 8. LE DESIGN WEBquelles techniques aujourd’hui ? float position: absolute
  9. 9. LE DESIGN WEB quelles techniques aujourd’hui ? compatibilité position: relative spacer.gif flux frames bugs <br><br><br> <table> rowspanbidouilles float position: absolute reset marges négatives commentaires clearcalques conditionnels colspan hacks frameworks CSS &nbsp;
  10. 10. LE DESIGN WEB quelles techniques aujourd’hui ? compatibilité position: relative spacer.gif flux frames bugs <br><br><br> <table> rowspanbidouilles float position: absolute reset marges négatives commentaires clearcalques conditionnels colspan hacks frameworks CSS &nbsp;
  11. 11. LE DESIGN WEB on ne devrait plus en être là ! En attendant CSS3,et si les tableaux étaient la solution ?
  12. 12. LE DESIGN WEB quelles techniques aujourd’hui ? compatibilité position: relative spacer.gif flux frames bugs <br><br><br> <table> rowspanbidouilles float position: absolute reset marges négatives commentaires clearcalques conditionnels colspan hacks frameworks CSS &nbsp;
  13. 13. DESSOUS DE TABLEen mode « comment ça marche ? »
  14. 14. DESSOUS DE TABLE De la naissance à la mise au bûcher1996 →naissance (3Ko, 54px)1996 →David Siegel « creating killer web sites »1997 →spécifications HTML 3.21997 →Halelluia !2000 →au bûcher !
  15. 15. DESSOUS DE TABLE 1997
  16. 16. DESSOUS DE TABLE 2000
  17. 17. DESSOUS DE TABLECest quoi déjà un tableau ?
  18. 18. DESSOUS DE TABLE Cest quoi déjà un tableau ?<table> <tr> <td> cellule1 </td> <td> cellule2 </td> <td> cellule3 </td> </tr></table>
  19. 19. DESSOUS DE TABLECest quoi déjà un tableau ?
  20. 20. DESSOUS DE TABLEParticularités et avantages Blocs alignés parfaitement (sans sortir du flux)
  21. 21. DESSOUS DE TABLEParticularités et avantages Hauteurs identiques
  22. 22. DESSOUS DE TABLEParticularités et avantages Centrage horizontal et vertical simplissime
  23. 23. DESSOUS DE TABLE Particularités et avantagesCompatible partout !(since 1997)
  24. 24. NOIRCIR LE TABLEAU les tableaux, cest malUn courant de pratiqueaccompagnant les <table> :● imbrications multiples,● colspan, rowspan,● border, bgcolor● cellspacing, cellpadding,● <font>, <center>, valign● spacer.gif,● etc.
  25. 25. les tableaux, cest mal (1)
  26. 26. les tableaux, cest mal (2)
  27. 27. les tableaux, cest mal (3)
  28. 28. les tableaux, cest mal (4)
  29. 29. les tableaux, cest mal (5)
  30. 30. les tableaux, cest mal (6)
  31. 31. les tableaux, cest mal (7)
  32. 32. les tableaux, cest mal (8)
  33. 33. NOIRCIR LE TABLEAU les tableaux, cest mal Mais que leur reproche-t-on au juste ?
  34. 34. 1 LOURDS, COMPLEXESimbroglio et soupe de tags au menu
  35. 35. 2 PEU FLEXIBLEScolonnes et cellules figées
  36. 36. 3 PAS ACCESSIBLESsuivi impossible sur lecteurs décran
  37. 37. 4 PAS PERFORMANTSchargement de tout le tableau avant de lafficher
  38. 38. 5 INCONTRÔLABLESles contenus font éclater les cellules
  39. 39. 6PAS SEMANTIQUES cest pas fait pour ça !
  40. 40. 7 ET LES MOBILES ?« le Web mobile a tué les tableaux »
  41. 41. 8 BALISES SUPERFLUES<table> et <tr> obligatoires pour bénéficier dun <td>
  42. 42. 9METHODE OBSOLETE vive le code des années 90 !
  43. 43. 1 2 34 5 67 8 9
  44. 44. TABLE RONDE DES ALTERNATIVES les tableaux sont le Mal, alors on fait quoi ? On bidouille !
  45. 45. TABLE RONDE DES ALTERNATIVES pas de tableaux ? →on remplace toutes les cellules par des <div> ! ici le site </div> dune </div> </div> agence web
  46. 46. TABLE RONDE DES ALTERNATIVES pas de tableaux ? →… ou par dautres éléments ici <dl>, <dd>, <dt>
  47. 47. TABLE RONDE DES ALTERNATIVES éléments côte à côte ?→ float (pas conçu pour ça au départ, alambiqué) Bug Bug Bug Bug Bug Bug Bug Bug ...
  48. 48. TABLE RONDE DES ALTERNATIVES hauteurs de colonnes identiques ? →faux-columns (image qui se répète) background.jpg (trèèèès long)
  49. 49. TABLE RONDE DES ALTERNATIVES centrage vertical ? <div> obscurs calculs de demi-hauteur (avec JavaScript), + positionnement absolu en % avec marges négatives e=mc²
  50. 50. TABLE RONDE DES ALTERNATIVES hauteur 100% avec pied de Xpx en bas ?JavaScriptcalcul de hauteurCSS3height : calc(100%-50px)CSS3box-sizing :content-box
  51. 51. TABLE RONDE DES ALTERNATIVES séparateur (bordure) entre deux blocs ? →Image de fond sur le parent →largeur fixe →CSS3 multicolonnes Lorem Elsass ipsum Spätzle und mollis schnaps id, libero, Hans munster porta suspendisse gehts Strasbourg adipiscing Mauris Heineken gewurztraminer gal Chulien schpeck sit chai libero.
  52. 52. MIEUX ? VRAIMENT MIEUX ?faux-columns divite CSS3 marges JavaScript négative sfloa t et bugs
  53. 53. FAISONS TABLE RASE DU PASSE dans la pratique, les inconvénients des tableaux HTML sont souvent exagérés
  54. 54. POSTULATdeux blocs voisins de même hauteur
  55. 55. POSTULAT deux blocs voisins de même hauteur → hors du fluxfloat → réorganisation des autres éléments → dépassement du conteneur → propriété clear → ajout d’élément HTML inutile → bugs des navigateurs + création d’une image de fond qui se répète (« faux-column ») → maintenance fastidieuse + largeurs fixes, etc.
  56. 56. 1 SOUPE DE TAGS ? ah, on nest pas obligé davoir des tableaux partout dans la page ?<table> <tr> <td>Menu</td> <td>Contenu</td> <tr></table>
  57. 57. 1 SOUPE DE TAGS ? ah, on nest pas obligé davoir des tableaux partout dans la page ?→ pas obligédimbriquer les éléments→ pas obligé destructurer toute la pageen tableau→ pas obligé dutilisercolspan / rowspan
  58. 58. 2 PEU FLEXIBLES ? mais cest pas ce quon veut  ?
  59. 59. 2 PEU FLEXIBLES ? mais cest pas ce quon veut  ?→ on souhaitejustement deux colonnesindissociables→ on cherche justementobtenir les avantagesque cela procure
  60. 60. 3 PAS ACCESSIBLES ? un tableau « linéarisable » est parfaitement accessibleAccessiweb 2.1 :●● Le contenu linéarisé reste compréhensible●● Soit summary="" soit pas de summary●● Le tableau de mise en forme ne doit pas posser de balisescaption, th, thead, tfoot●●Les cellules du tableau de mise en forme (balise td) nedoivent pas posséder dattributs scope, headers, colgroup, axis.
  61. 61. 4 PAS PERFORMANTS ? table-layout , vous connaissez ? 300 pixels
  62. 62. 4 PAS PERFORMANTS ? table-layout , vous connaissez ? 400 pixels
  63. 63. 4 PAS PERFORMANTS ? table-layout , vous connaissez ? table { table-layout : fixed ; } 300 pixels
  64. 64. 4 PAS PERFORMANTS ? table-layout , vous connaissez ?table { table-layout : fixed ;}→ Le moteur de navigateur connaît dès le départ la largeurdu tableau et peut lafficher 6 OK !
  65. 65. 5 INCONTRÔLABLES ? table-layout , quon vous dit  !table-layout : fixed →Le conteneur « tableau » nest plus dépendant de la largeurde ses contenus.Il conserve les dimensions quon lui a fixées.YAY.
  66. 66. 6 PAS SEMANTIQUES ? cest pas fait pour ça ! stooOK, soit. On y reviendra
  67. 67. 7 ET LES MOBILES ? iPhone a tué les tableaux HTMLOK, soit. On y reviendra
  68. 68. 8 BALISES SUPERFLUES ? table, tr, td... cest trop !OK, soit. On y reviendra
  69. 69. 9 METHODE OBSOLETE ? génération 90sOK, soit. On y reviendra
  70. 70. 1 2 34 5 67 8 9
  71. 71. CONCLUSION ? on y gagne sur plusieurs tableaux !Des inconvénients ? OuiDes avantages ? Oui
  72. 72. CONCLUSION ? on y gagne sur plusieurs tableaux !Je nai pas dit...
  73. 73. REMETTONS-NOUS EN CELL ! et si la solution était... CSS ?
  74. 74. DISPLAY vous connaissez ?block inline none
  75. 75. DISPLAY vous connaissez ?inline-block list-item
  76. 76. DISPLAY vous connaissez ?table, table-cell, table-row, table-caption, inline-table,table-header-group, table-footer-group, etc.
  77. 77. DISPLAY CSS table model<table> … display : table<tr> … display : table-rowtd>, <th> … display : table-cell<caption> … display : table-caption<thead> … display : table-header-group<tbody> … display : table-row-group<tfoot> … display : table-footer-group<col> … display : table-column<colgroup> … display : table-column-group
  78. 78. DISPLAY CSS table model<table> <nav>Menu</nav> <tr> <article>Contenu</article> <td>Menu</td> <td>Contenu</td> nav, article { <tr> display : table-cell ;</table> }
  79. 79. DISPLAY CSS table modelSéparation fond-forme o/
  80. 80. DEMOS Vive les tableaux de mise en page !1- Hauteurs de frères identiques2- Alignement vertical 3- Site de 100% de haut avec pied de page dehauteur fixe4- Répartition de la largeur restante5- Répartition de la hauteur restante6- Menu de navigation
  81. 81. DEMOSVive les tableaux de mise en page ! Bonus : Apple !
  82. 82. DEMOSVive les tableaux de mise en page ! Bonus : Apple !
  83. 83. DISPLAY CSS table model6- pas sémantique -> [résolu]7- impossible de gérer plusieurs médias -> [résolu]8- balises superflues -> [résolu]9- obsolescence de la méthode -> [résolu]
  84. 84. 1 2 34 5 67 8 9
  85. 85. ET SI ON PASSAIT A TABLE ? compatibilités navigateurs
  86. 86. ET SI ON PASSAIT A TABLE ? compatibilités navigateursOK
  87. 87. ET SI ON PASSAIT A TABLE ? compatibilités navigateursOK OK
  88. 88. ET SI ON PASSAIT A TABLE ? compatibilités navigateursOK OK OK
  89. 89. ET SI ON PASSAIT A TABLE ? compatibilités navigateursOK OK OK OK
  90. 90. ET SI ON PASSAIT A TABLE ? compatibilités navigateursOK OK OK OK OK euh oui enfin... à partir de IE8
  91. 91. ET SI ON PASSAIT A TABLE ? compatibilités navigateurs IE6+IE7 →8%
  92. 92. ET SI ON PASSAIT A TABLE ? compatibilités navigateurs IE6+IE7 →6%
  93. 93. ET SI ON PASSAIT A TABLE ? compatibilités navigateursCSS2 Table display (caniuse.com)
  94. 94. ET SI ON PASSAIT A TABLE ? compatibilités navigateursCSS3 Flexible box layout (caniuse.com)
  95. 95. ET SI ON PASSAIT A TABLE ? compatibilités navigateursCSS3 Grid Layout (caniuse.com)
  96. 96. ET SI ON PASSAIT A TABLE ? compatibilités navigateurs Fallback : display-table.htc (2ko)
  97. 97. TABLES DE LA LOI anges et démos
  98. 98. TABLES DE LA LOI anges et démos1. les colonnes sont parfaites et toujours de même longueur, sansbesoin de bidouilles,2. les éléments alentours ne nécessitent pas de traitement de faveur(clear ou autre), puisque tout demeure dans le flux courant,3. la gestion des alignements verticaux, notamment du centrage,devient élémentaire,4. la fluidité des blocs est innée : finie le casse-tête du pied de pagetoujours collé en bas quelle que soit la longueur de la page, ou leséléments devant occuper toute la hauteur de page moins X pixels,5. il est même envisageable de réordonner du contenu et de passervisuellement un élément prioritairement à d’autres en jouant avec lavaleur table-caption
  99. 99. TABLEAUX DE MAÎTRES pour aller encore plus loin
  100. 100. TABLEAUX DE MAÎTRES pour aller encore plus loin→ table-layout : remettez-vous en cell (démo)→ border-collapse : surveillez votre tableau de bord (démo)→ border-spacing (ex- cellspacing) (démo) 2 valeurs possibles→ empty-cells / :empty : débarrassez-vous des cellules mortes(démo)→ lignes paires impaires (nth-child) (démo)→ Styler des colonnes : col, nth-child ou th+td+td→ Jouer avec table-caption : Réordonnement des blocs (aussiavec table-header-group et table-footer-group) : pensez auxdessous de table (démo)
  101. 101. ENCORE UNE OMBRE AU TABLEAU dérives et excèsFull tableauxtableaux imbriquéscolspan, rowspanetc.
  102. 102. ENCORE UNE OMBRE AU TABLEAU dérives et excès
  103. 103. ENCORE UNE OMBRE AU TABLEAU lacunesPas de padding sur les éléments en table-row, table-row-group, table-header-group, table-footer-group, table-column-group et table-column.
  104. 104. ENCORE UNE OMBRE AU TABLEAU lacunesPas de padding sur les éléments en table-row, table-row-group, table-header-group, table-footer-group, table-column-group et table-column.Autres lacunes de table-row : pas de position, width, min/max-width,min/max-height, vertical-align, border, padding, margin, overflow
  105. 105. ENCORE UNE OMBRE AU TABLEAU lacunesPas de padding sur les éléments en table-row, table-row-group, table-header-group, table-footer-group, table-column-group et table-column.Autres lacunes de table-row : pas de position, width, min/max-width,min/max-height, vertical-align, border, padding, margin, overflowtable-caption : 1 seul par tableau
  106. 106. ENCORE UNE OMBRE AU TABLEAU lacunesPas de padding sur les éléments en table-row, table-row-group, table-header-group, table-footer-group, table-column-group et table-column.Autres lacunes de table-row : pas de position, width, min/max-width,min/max-height, vertical-align, border, padding, margin, overflowtable-caption : 1 seul par tableaupositionnement absolu impossible directement au sein dun table-cell
  107. 107. TABLE DE CHEVET lindispensable « Everything you know about CSS is wrong ! » Rachel Andrew & Kevin Yank Sitepoint 1998 ISBN-13: 978-0980455229
  108. 108. MERCI !« In Vino Veri Table » Raphaël Goetter www.alsacreations.com www.goetter.fr www.ie7nomore.com twitter : @goetterPS : attention aux excès de table

×