Tables responsives et sémantiques

Finalement je vais peut-être m’occuper des tables avant de sortir la 2.15, en particulier celles qui sont utilisées pour les listes de billets, commentaires, …

Parce qu’autant sur grand écran ça se comporte plutôt bien, sur mobile c’est assez difficile à l’usage.

J’ai toujours sous le coude ce CodePen d’Adrian Roselli qui fait plutôt bien le job[1], avec certes un peu de javascript, mais est-ce réellement gênant ?

La partie utile est celle-ci, côté javascript :

function ResponsiveCellHeaders(elmID) {
  try {
    var THarray = [];
    var table = document.getElementById(elmID);
    var ths = table.getElementsByTagName("th");
    for (var i = 0; i < ths.length; i++) {
      var headingText = ths[i].innerHTML;
      THarray.push(headingText);
    }
    var styleElm = document.createElement("style"),
      styleSheet;
    document.head.appendChild(styleElm);
    styleSheet = styleElm.sheet;
    for (var i = 0; i < THarray.length; i++) {
      styleSheet.insertRule(
        "#" +
        elmID +
        " td:nth-child(" +
        (i + 1) +
        ')::before {content:"' +
        THarray[i] +
        ': ";}',
        styleSheet.cssRules.length
      );
    }
  } catch (e) {
    console.log("ResponsiveCellHeaders(): " + e);
  }
}
// ResponsiveCellHeaders("Books");

Et côté CSS (surtout pour la partie petit écran, qu’il faudra peut-être adapter) :

td::before {
  display: none;
}

@media screen and (max-width: 37em), print and (max-width: 5in) {
  table, tr, td {
    display: block;
  }
  th, tr:first-of-type {
    display: none;
  }
  td::before {
    display: inline;
  }
  td {
    display: grid;
  }
}

Après il va falloir comment ça interragit avec les cases de sélection ou les boutons de glisser-déposer qui sont ajoutés via javascript également, avec dans certains cas l’ajout de cellules supplémentaires…

Note

[1] Pour constater l’effet, affichez le CodePen et zoomez l’affichage.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/14236

Haut de page