<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tableau Fixe Première Colonne</title> <style> /* Conteneur pour le défilement horizontal */ .table-container { width: 100%; overflow-x: auto; /* Permet de scroller horizontalement */ margin-top: 20px; } /* Tableau avec une largeur et une hauteur étendues */ table { border-collapse: collapse; width: 2000px; /* Largeur du tableau */ min-width: 1200px; /* Largeur minimale du tableau */ } /* Celles des en-têtes et des cellules */ table th, table td { border: 1px solid black; padding: 8px; text-align: center; white-space: nowrap; /* Empêche les retours à la ligne dans les cellules */ } /* En-tête du tableau : il reste toujours en haut */ table thead th { background-color: #f1f1f1; position: sticky; top: 0; z-index: 2; } /* Fixer la première colonne : elle reste toujours visible */ table td:first-child, table th:first-child { position: sticky; left: 0; background-color: white; z-index: 3; /* Assurer que la colonne reste par-dessus les autres colonnes */ } /* Rendre le tableau bien visible avec les colonnes et lignes alignées */ table th, table td { width: 120px; /* Largeur de chaque cellule */ } /* Ajouter une ligne de défilement horizontal si nécessaire */ .table-container { display: block; max-height: 500px; overflow-x: auto; overflow-y: hidden; } </style> </head> <body> <!-- Conteneur du tableau --> <div class="table-container"> <table id="dynamic-table"> <caption id="caption">Tableau avec Première Colonne Fixe</caption> <thead> <tr> <th>Teams</th> <!-- Générer les 100 colonnes --> <th>Col 1</th> <th>Col 2</th> <th>Col 3</th> <th>Col 4</th> <th>Col 5</th> <!-- Ajouter plus de colonnes si nécessaire --> </tr> </thead> <tbody id="table-body"> <!-- Contenu du tableau généré par JavaScript --> </tbody> </table> </div> <script> // Fonction pour générer les lignes et les cellules function generateTable(rows, cols) { const tableBody = document.getElementById('table-body'); const headerRow = document.querySelector('thead tr'); // Ajouter des en-têtes de colonnes for (let i = 1; i <= cols; i++) { const th = document.createElement('th'); th.textContent = `Col ${i}`; // Noms des colonnes headerRow.appendChild(th); } // Ajouter les lignes for (let i = 1; i <= rows; i++) { const newRow = document.createElement('tr'); // Ajouter la cellule de la première colonne (nom de l'équipe) const teamCell = document.createElement('th'); teamCell.textContent = `Team ${i}`; newRow.appendChild(teamCell); // Ajouter des cellules pour chaque colonne for (let j = 1; j <= cols; j++) { const td = document.createElement('td'); td.textContent = `${i * j}`; // Remplir la cellule avec une valeur exemple newRow.appendChild(td); } // Ajouter la ligne au tableau tableBody.appendChild(newRow); } } // Appeler la fonction pour générer un tableau avec 50 lignes et 100 colonnes generateTable(50, 100); </script> </body> </html>