Chcę utworzyć tabelę tylko przy użyciu <div>
tagu i CSS.
To jest moja przykładowa tabela.
<body>
<form id="form1">
<div class="divTable">
<div class="headRow">
<div class="divCell" align="center">Customer ID</div>
<div class="divCell">Customer Name</div>
<div class="divCell">Customer Address</div>
</div>
<div class="divRow">
<div class="divCell">001</div>
<div class="divCell">002</div>
<div class="divCell">003</div>
</div>
<div class="divRow">
<div class="divCell">xxx</div>
<div class="divCell">yyy</div>
<div class="divCell">www</div>
</div>
<div class="divRow">
<div class="divCell">ttt</div>
<div class="divCell">uuu</div>
<div class="divCell">Mkkk</div>
</div>
</div>
</form>
</body>
I styl:
<style type="text/css">
.divTable
{
display: table;
width:auto;
background-color:#eee;
border:1px solid #666666;
border-spacing:5px;/*cellspacing:poor IE support for this*/
/* border-collapse:separate;*/
}
.divRow
{
display:table-row;
width:auto;
}
.divCell
{
float:left;/*fix for buggy browsers*/
display:table-column;
width:200px;
background-color:#ccc;
}
</style>
Ale ta tabela nie działa z IE7 i wersjami niższymi. Proszę podać swoje rozwiązanie i pomysły dla mnie. Dzięki.
div
do stworzenia stołu?div
że są bardziej elastyczni niż stoły!Odpowiedzi:
Urywalny fragment kodu:
Pokaż fragment kodu
źródło
div
nie należy używać do danych tabelarycznych. Jest to tak samo złe, jak używanie tabel do układu.Użyj a
<table>
. Jest to łatwe, semantycznie poprawne, a skończysz za 5 minut.źródło
To jest stary wątek, ale pomyślałem, że powinienem opublikować swoje rozwiązanie. Ostatnio spotkałem się z tym samym problemem, a sposób, w jaki go rozwiązałem, polega na zastosowaniu trzyetapowego podejścia opisanego poniżej, które jest bardzo proste bez skomplikowanego CSS .
(UWAGA: Oczywiście w przypadku nowoczesnych przeglądarek użycie wartości tabeli lub wiersza tabeli lub komórki tabeli do wyświetlania atrybutu CSS rozwiązałoby problem. Ale zastosowane przeze mnie podejście będzie działać równie dobrze w nowoczesnych i starszych przeglądarkach, ponieważ nie użyj tych wartości do wyświetlenia atrybutu CSS).
3-KROKOWE PROSTE PODEJŚCIE
Tylko w przypadku tabeli z div, aby uzyskać komórki i wiersze, podobnie jak w elemencie tabeli, zastosuj następujące podejście.
.table
klasy).row
klasy).cell
klasy)AKTUALIZACJA 1
Aby obejść efekt braku utrzymywania tej samej szerokości we wszystkich komórkach kolumny, jak wspomniano
thatslch
w komentarzu, można zastosować jedno z dwóch poniższych podejść.Określ szerokość dla
cell
klasycell {display: blok wbudowany; szerokość: 340px;}
Użyj CSS nowoczesnych przeglądarek jak poniżej.
.table {display: table; } .row {display: table-row;} .cell {display: table-cell;}
źródło
Jeśli jest coś
<table>
, czego nie lubisz, może przydałby Ci się reset pliku ?lub
jeśli potrzebujesz tego do układu strony, sprawdź przykłady układu cssplay do projektowania stron internetowych bez tabel.
źródło
Nie widzę żadnej odpowiedzi dotyczącej Grid-Css. Myślę, że jest to bardzo eleganckie podejście: grid-css obsługuje nawet rozpiętość wierszy i rozpiętość kolumn. Tutaj możesz znaleźć bardzo dobry artykuł:
https://medium.com/@js_tut/css-grid-tutorial-filling-in-the-gaps-c596c9534611
źródło
Użyj poprawnego typu dokumentu; rozwiąże problem. Dodaj poniższy wiersz na górze pliku HTML:
źródło
Trochę POZA TEMATEM, ale może pomóc komuś w czyszczeniu HTML ... CSS
HTML
Działa w Chrome i Firefox
źródło
<div>
elementy? Prawdopodobnie chcesz.common_table div > div
Budując niestandardowy zestaw tagów układu, znalazłem inną odpowiedź na ten problem. Podano tutaj niestandardowy zestaw tagów i ich klas CSS.
HTML
CSS
Kluczem do uzyskania pustych komórek i ogólnie komórek o odpowiednim rozmiarze są rozmiary i wypełnianie pudełek. Obramowanie zrobi to samo, ale tworzy linię w rzędzie. Padding nie. I chociaż tego nie próbowałem, myślę, że Margin będzie działać tak samo jak Padding, zmuszając i pustą komórkę do poprawnego renderowania.
źródło