Bonjour à tous
Je suis en train de travailler sur un ancien site qui n'avait pas vocation d'être responsive.
La plupart des pages contiennent des <table> qui sont sémantiquement des "tables", mais bien entendu quand je veux les afficher sur des écrans étroits elles débordent amplement, sauf à réduire la taille de leur contenu ce qui le rend illisible.
Je cherche une solution purement CSS à cette situation, je veux dire: éviter de remanier en JavaScript le contenu de la page, ce que je faisais avant d'utiliser CSS3.
Pour cela, une approche simple consiste à remplacer les <table> par des <ul>, les <tr> par <li> et les <td> par des <div>
Pour les écrans large, on écrit:
Pour les écrans étroits, on ajuste le CSS en fonction des besoins.
Cela marche bien... sauf pour le point suivant:
Certaines des lignes <tr> contiennent le code suivant
Je n'ai pas trouvé de moyen, pour les écrans larges, à écrire un équivalent
produit un "titre" qui prend la largeur de la première colonne des autres lignes, quel que soit le CSS que j'écris, que je mette le <h3> dans une autre balise à l'intérieur du <li>, etc.
L'utilisation d'un
Je peux bien entendu oublier totalement les display:table-xxx et figer la largeur des pseudo colonnes" en % de la largeur des <li>, eux mêmes ayant la largeur de 100% du contenant ???
Votre avis?
Modifié par PapyJP (18 Dec 2018 - 14:18)
Je suis en train de travailler sur un ancien site qui n'avait pas vocation d'être responsive.
La plupart des pages contiennent des <table> qui sont sémantiquement des "tables", mais bien entendu quand je veux les afficher sur des écrans étroits elles débordent amplement, sauf à réduire la taille de leur contenu ce qui le rend illisible.
Je cherche une solution purement CSS à cette situation, je veux dire: éviter de remanier en JavaScript le contenu de la page, ce que je faisais avant d'utiliser CSS3.
Pour cela, une approche simple consiste à remplacer les <table> par des <ul>, les <tr> par <li> et les <td> par des <div>
Pour les écrans large, on écrit:
ul {display:table}
li {display:table-row}
li div {display:table-cell}
Pour les écrans étroits, on ajuste le CSS en fonction des besoins.
Cela marche bien... sauf pour le point suivant:
Certaines des lignes <tr> contiennent le code suivant
<tr class="title"><td colspan="6"><h3>Titre de la section qui suit</h3></td></tr>
Je n'ai pas trouvé de moyen, pour les écrans larges, à écrire un équivalent
<li class="title"><h3>Titre de la section qui suit</h3></li>
produit un "titre" qui prend la largeur de la première colonne des autres lignes, quel que soit le CSS que j'écris, que je mette le <h3> dans une autre balise à l'intérieur du <li>, etc.
L'utilisation d'un
li.title {display:table-caption}
a pour résultat de n'accepter qu'un seul titre, car une <table> ne peut avoir qu'une seule <caption>Je peux bien entendu oublier totalement les display:table-xxx et figer la largeur des pseudo colonnes" en % de la largeur des <li>, eux mêmes ayant la largeur de 100% du contenant ???
Votre avis?
Modifié par PapyJP (18 Dec 2018 - 14:18)