Oracle Content Management fournit un exemple CSS de table réactive dans un composant de paragraphe qui permet d'empiler les données de ligne lors de leur affichage sur des appareils mobiles.
Une table réactive s'ajuste en fonction de la taille de l'écran pour un affichage optimal. Par exemple, l'affichage horizontal d'une table de 5 colonnes peut convenir pour une page Web, mais pas pour un téléphone où l'empilement des données sera préférable. Pour que le comportement des tables réactives soit correct, une ligne d'en-tête est nécessaire.
Dans le HTML généré ci-dessous, notez l'ajout d'un attribut data-label pour chaque cellule de la table, dont la valeur est le texte d'en-tête de la colonne.
<thead> <tr> <th scope="col">ACCOUNT</th> <th scope="col">DUE DATE</th> <th scope="col">AMOUNT</th> <th scope="col">MINIMUM</th> <th scope="col">PERIOD</th> </tr> </thead> <tbody> <tr> <td data-label="ACCOUNT">Visa</td> <td data-label="DUE DATE">04/16/2020</td> <td data-label="AMOUNT">$3,090</td> <td data-label="PERIOD">03/09/2020 - 04/08/2020</td> </tr>
Une fois cet attribut présent sur chaque cellule, les données s'empilent les unes sur les autres lors de l'application des règles CSS ci-dessous.
.scs-paragraph:not(.scs-paragraph-edit) table td { border-bottom: 1px solid #ddd; display: block; text-align: right; } .scs-paragraph:not(.scs-paragraph-edit) table td::before { content: attr(data-label); float: left; font-weight: bold; }
La règle media ci-dessous vérifie la taille de l'écran et ne s'applique que lorsque celle-ci est inférieure à 767 pixels :
@media screen and (max-width: 767px) {
L'exemple de code permettant d'utiliser CSS pour rendre réactives les tables inséréés se trouve dans le fichier design.css par défaut du StarterTheme fourni. Si vous créez un site à partir de StarterTheme, les tables insérées dans un emplacement de paragraphe sont réactives par défaut. Pour insérer une table, procédez comme suit :
Lorsque vous avez terminé, repassez en mode Visualiser et sélectionnez une option d'affichage avec un écran d'une largeur inférieure à 767 pixels pour prévisualiser le résultat. Vous devez être en mode Visualisation car les tables ne se comportent pas de manière réactive en mode Edition.
Pour utiliser des tables réactives lors de la création d'un site à partir d'un autre thème, vous devez copier le code du fichier design.css de StarterTheme dans le fichier design.css du thème que vous utilisez.
/** * An example CSS of how to render a table responsively. * It enables stacking of row data on mobile devices. * Only do this for view mode (not for edit mode). * * On each cell rendered, it adds a user-defined attribute * 'data-label' with value matching the column header text. */ @media screen and (max-width: 767px) { .scs-paragraph:not(.scs-paragraph-edit) table { border: 0; } .scs-paragraph:not(.scs-paragraph-edit) table caption { font-size: 1.3em; } .scs-paragraph:not(.scs-paragraph-edit) table thead { border: none; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .scs-paragraph:not(.scs-paragraph-edit) table tr { border-bottom: 3px solid #ddd; display: block; margin-bottom: .625em; } .scs-paragraph:not(.scs-paragraph-edit) table td { border-bottom: 1px solid #ddd; display: block; text-align: right; } .scs-paragraph:not(.scs-paragraph-edit) table td::before { content: attr(data-label); float: left; font-weight: bold; } .scs-paragraph:not(.scs-paragraph-edit) table td:last-child { border-bottom: 0; } }