Co to jest przeglądarka i czy możesz podać fragment kodu (html / css)?
Patrick Desjardins,
cóż, używam ff3, ponieważ wiem, że to znaczy podobno obsługuje reguły, ale na razie szukam rozwiązania w ff3. próbowałem do tej pory odstępów i paddingu bez powodzenia. productlistingitem jest główną tabelą <table class = "productListingItem" border = "0" cellpadding = "10" cellspacing = "0"> <tr> <tr> <td class = "dragItem">
Marin
1
Może dlatego, że border-spacingjest to atrybut związany tablei nie związany tr. Spróbować table.classname {border-spacing:5em}. Note: IE8 obsługuje właściwość odstępu między ramkami, jeśli podano! DOCTYPE.
Musisz użyć paddingu na swoich tdelementach. Coś takiego powinno załatwić sprawę. Możesz oczywiście uzyskać ten sam wynik, stosując górne wypełnienie zamiast dolnego wypełnienia.
W poniższym kodzie CSS znak „więcej niż” oznacza, że dopełnienie jest stosowane tylko do tdelementów, które są bezpośrednimi trelementami potomnymi elementów z klasą spaceUnder. Umożliwi to użycie zagnieżdżonych tabel. (Komórki C i D w przykładowym kodzie.) Nie jestem zbyt pewny obsługi przeglądarki dla bezpośredniego selektora potomnego (myślę o IE 6), ale nie powinien on łamać kodu w żadnych współczesnych przeglądarkach.
/* Apply padding to td elements that are direct children of the tr elements with class spaceUnder. */
tr.spaceUnder>td {padding-bottom:1em;}
Tyle że to wcale nie rozwiązuje problemu, gdy wiersze mają kolor tła i rzeczywiście chcesz WHITESPACE między wierszami.
Simon East
6
@ Simon: Białe znaki zwykle oznaczają puste miejsce, a nie konkretnie kolor biały. Jeśli chcesz pokolorować przestrzeń między wierszami, możesz wypróbować właściwość CSS <code> border-bottom </code> na elementach td. Prawdopodobnie będzie to renderowane poprawnie tylko z ramką 1px. Innym, ale nie tak eleganckim rozwiązaniem byłoby użycie pustego rzędu.
Jan Aagaard
18
@Jan: Tak, dokładnie o to mi chodzi ... Trudno jest umieścić przezroczystą pustą przestrzeń między rzędami. Twoje rozwiązanie pomaga w niektórych przypadkach, ale nie rozwiązuje tego problemu. Wstawienie pustego wiersza tabeli może działać, ale jest bardzo trudne. bottom-borderZestaw do przezroczystego może również pracować, ale nie jestem pewien, jak cross-browser zgodny jest.
Tak, ta metoda byłaby idealna, z wyjątkiem tego, że IE 7 jej nie obsługuje. Aby uzyskać informacje na temat obsługi przeglądarki, patrz: quirksmode.org/css/tables.html
Simon East
7
Ponadto kontroluje odstępy między wszystkimi wierszami w tabeli, nie można ustawić odstępów między wierszami dla poszczególnych wierszy (to jest to, co OP może chcieć osiągnąć).
Simon East
1
Jest to niespójne między Chrome i Firefox. Jeśli masz znak „ theadi” tbody, będzie on podwójny border-spacingmiędzy nimi w Chrome (ale jeden w Firefox).
Camilo Martin
91
To jest rzeczywista odpowiedź, specjalnie ustawiona, border-spacing: 0 1emaby uzyskać odstęp między tylko rzędami.
igneozaur
1
@igneosaur Próbowałem zrobić to, co powiedziałeś, ale nadal dodawało odstępy między wszystkimi rzędami, a nie tylko dwoma pierwszymi. Czy możesz podać działający jsfiddle?
user3281466,
184
Masz tabelę z albumami id z dowolnymi danymi ... Pominąłem trs i tds
Myślę, że jest to prawdopodobnie bardziej elastyczne. Nie zawsze możesz kontrolować, kiedy z góry potrzebujesz miejsca (strony generowane dynamicznie).
Stefan Kendall,
10
Przypomina mi to lata 90., kiedy obsługa CSS prawie nie istniała, a tabele były używane do większości układów. Nadal jednak daję +1, ponieważ inne „odpowiedzi” nie są lepsze pod względem faktycznego tworzenia odstępu między wierszami tabeli.
labirynt
@labyrinth Niewiele się zmieniło od lat 90. Jeśli chodzi o HTML, wszystko stało się znacznie potężniejsze i bardziej chaotyczne.
Właściwość CSS z odstępami między krawędziami określa odległość między granicami sąsiednich komórek (tylko dla modelu oddzielonych granic). Jest to równoważne atrybutowi odstępu między komórkami w prezentacji HTML, ale opcjonalnej drugiej wartości można użyć do ustawienia różnych odstępów poziomych i pionowych.
Ta ostatnia część jest często nadzorowana. Przykład:
.your-table {
border-collapse: separate;/* allow spacing between cell borders */
border-spacing:05px;/* NOTE: syntax is <horizontal value> <vertical value> */
AKTUALIZACJA
Rozumiem teraz, że OP chce, aby określone, oddzielne rzędy miały większy odstęp. Dodałem konfigurację z tbodyelementami, które to osiągają bez rujnowania semantyki. Nie jestem jednak pewien, czy jest obsługiwany we wszystkich przeglądarkach. Zrobiłem to w Chrome.
Poniższy przykład pokazuje, jak możesz wyglądać, jakby istniała tabela oddzielnych wierszy z pełną słodyczą css. Dało także więcej odstępów w pierwszym rzędzie dzięki tbodykonfiguracji. Zapraszam do użycia!
Informacja o wsparciu: IE8 +, Chrome, Firefox, Safari, Opera 4+
Jeśli chciałem trochę pionowej przestrzeni między dwoma konkretnymi rzędami, właśnie dodałem wiersz odstępu <tr> <td colspan = "2" style = "padding-bottom: 1em;"> </td> </tr>
Paul Taylor
To by działało, ale jest semantycznie niepoprawne (jak w tym przypadku wiersz separatora nie jest rzeczywistym wierszem z danymi takimi jak inne wiersze. Może to być denerwujące dla osób korzystających z czytników ekranu lub innych urządzeń pomocniczych, a także do celów indeksowania i może nie ma to wielkiego znaczenia, ale dobrze jest mieć go z powrotem przy tworzeniu strony internetowej :)
Justus Romijn
To prawda, jeśli faktycznie używa tabeli do reprezentowania tabeli. Jeśli po prostu używa tabeli jako sposobu wyświetlania danych w formie tabelarycznej, to argumentowałbym, że bardziej sensowne jest wstawienie wiersza reprezentującego lukę między dwoma elementami zamiast dodawania odstępów do obu elementów td powyżej lub poniżej linii, ponieważ to, co użytkownik chce zrobić, to dodać spację między dwiema liniami, a nie zwiększać rozmiaru elementów w linii.
W przypadku IE tr bez ciała nie byłoby rozpoznawane. dodaj też obojętny tag td.
Drzemka
Problem polega na tym, że w HTML5 walidator W3C wygeneruje błąd z informacją: „Wiersz tabeli miał szerokość 0 kolumn, czyli mniej niż liczba kolumn określona przez pierwszy wiersz”.
David Grayson
Fajnie, dodałem kolejne <tr>, <td> i <p> i ustawiłem widoczność p-tag na ukryty. Działa również. :-)
Jeppe,
47
Nie można zmienić marginesu komórki tabeli. Ale MOŻESZ zmienić wypełnienie. Zmień dopełnienie TD, co spowoduje powiększenie komórki i odepchnij tekst z boku przy zwiększonym dopełnieniu. Jeśli masz linie graniczne, nadal nie będzie to dokładnie to, czego chcesz.
Najpierw musisz oddzielić je za pomocą zwinięcia obramowania , a następnie możesz zdefiniować przestrzeń między kolumnami i wierszami za pomocą odstępów między ramkami .
Obie te właściwości CSS są właściwie dobrze obsługiwane w każdej przeglądarce, patrz tutaj .
<table><tr><td>Some text - 1</td><td>Some text - 1</td></tr><tr><td>Some text - 2</td><td>Some text - 2</td></tr><tr><td>Some text - 3</td><td>Some text - 3</td></tr></table>
Upewnij się, że kolor tła jest ustawiony na td zamiast na wierszu. Powinno to działać w większości przeglądarek ... (Chrome, tj. Przetestowane pod kątem ff)
Stwarza to dziwne problemy z wyrównaniem pionowym, przynajmniej w Firefoksie
cjohansson
20
Musisz ustawić border-collapse: separate;na stole; większość domyślnych arkuszy stylów przeglądarki zaczyna się od border-collapse: collapse;, która wykopuje odstępy między krawędziami.
Ponadto odstępy między krawędziami: są włączane TD, a nie TR.
Dzięki. Wcześniej podziękowałem ci w poprawce komentarza, ale nadgorliwy redaktor, który chciał zmienić mój styl i złamał kod w procesie, również usunął moje podziękowania. Teraz umieszczam go tutaj, gdzie nie można go edytować.
To jest straszne. Tak naprawdę to ustawia displaywłaściwość blockna wiersz. Dzięki temu wiersz ma margines. Margines pionowy „ Dotyczy: wszystkich elementów z wyjątkiem tych z typami wyświetlania tabeli innymi niż podpis tabeli, tabela i tabela wstawiana ”. Ponieważ table-rownie ma żadnego z tych wyjątków, nie liczy się to. Prawdopodobnie mógłbyś osiągnąć ten sam efekt, robiąc tr {display:block;}to. Byłbym jednak ostrożny w stosowaniu jednej z tych metod w skomplikowanej tabeli. Prawdopodobnie nie przyniesie oczekiwanych rezultatów.
sholsinger
To przerażające, ale zadziałało. Nie w ie7, ale odstępy między komórkami bezpośrednio w tabeli działają w ie7.
Liko,
pływające wiersze nie jest dobrym rozwiązaniem. zwłaszcza jeśli Twoja strona jest większa niż 2x szerokość wiersza. dodaj atrybut width do obu tagów
AndreaCi
11
Aby stworzyć iluzję odstępów między rzędami, zastosuj kolor tła do rzędu, a następnie utwórz grubą ramkę z białym kolorem, aby utworzyć „przestrzeń” :)
Możesz to zrobić za pomocą CSS, który powiedziałbym, że jest bardziej „poprawny” (poza tym, że jest bardziej elegancki, zmiana stylu ze znaczników na CSS oszczędza przepustowość).
Camilo Martin
2
Nie oszczędza przepustowości. Właściwie zużywa więcej. Zakładając, że nie dodajesz arkusza stylów tylko w tym celu, musisz dodać selektor i ewentualnie identyfikator lub nazwę do tej tabeli. To więcej bajtów, nie mniej.
majinnaibu
9
Natknąłem się na to, walcząc z podobnym problemem. Uważam, że odpowiedź Varuna Natryaja jest dość pomocna, ale zamiast tego użyłbym przezroczystej ramki.
Działa z większością najnowszych przeglądarek w 2015 roku. Proste rozwiązanie. Nie działa dla przezroczystości, ale w przeciwieństwie do odpowiedzi Thoronwen, nie mogę uzyskać przezroczystości do renderowania przy dowolnym rozmiarze.
Zdaję sobie sprawę, że jest to odpowiedź na stary wątek i może nie być to żądane rozwiązanie, ale chociaż wszystkie sugerowane rozwiązania nie spełniły moich oczekiwań, to rozwiązanie dla mnie zadziałało.
Miałem 2 komórki tabeli, jedną z kolorem tła, drugą z kolorem obramowania. Powyższe rozwiązania usuwają ramkę, więc komórka po prawej stronie wydaje się unosić w powietrzu. Rozwiązanie, które wystarczyły było zastąpić table, tra tdz div i odpowiednich klas: stół byłoby div id="table_replacer", tr byłoby div class="tr_replacer"i td byłoby div class="td_replacer"(zmiana zamykania znaczniki div, a także oczywiście)
Aby uzyskać rozwiązanie mojego problemu, css to:
#table_replacer{display:table;}.tr_replacer {border:1px solid #123456;margin-bottom: 5px;}/*DO NOT USE display:table-row! It will destroy the border and the margin*/.td_replacer{display:table-cell;}
Imho, to rozwiązanie jest równoważne z użyciem zwykłej tabeli, wzoru tr, td i stylu tr {display: block;}, które próbowałem. Problem: tabela wygląda inaczej, ponieważ elementy td nie są renderowane do szerokości tabeli, ale unoszą się w lewo w tr. Oznacza to, że elementy td wszystkich rzędów nie są już wyrównane w pionie.
Andreas Stankewitz
0
Możesz wypełnić elementy <td /> elementami <div /> i zastosować dowolny margines do tych div, które lubisz. Aby uzyskać wizualną przestrzeń między rzędami, możesz użyć powtarzającego się obrazu tła na elemencie <tr />. (To było rozwiązanie, którego właśnie użyłem dzisiaj i wydaje się, że działa zarówno w IE6, jak i FireFox 3, chociaż nie testowałem go dalej.)
Ponadto, jeśli nie chcesz modyfikować kodu serwera, aby umieścić <div /> s wewnątrz <td /> s, możesz użyć jQuery (lub czegoś podobnego), aby dynamicznie zawinąć zawartość <td /> w <div / >, umożliwiając stosowanie CSS według potrzeb.
Oto proste i eleganckie rozwiązanie z kilkoma zastrzeżeniami:
Nie można tak naprawdę zrobić przezroczystości, musisz nadać im określony kolor.
Nie można zaokrąglać rogów granic powyżej i poniżej luk
Musisz znać wypełnienie i obramowanie komórek tabeli
Mając to na uwadze, spróbuj tego:
td {padding:5px8px;border:2px solid blue;background:#E0E0E0}/* lets say the cells all have this padding and border, and the gaps should be white */
tr.gapbefore td {overflow:visible}
tr.gapbefore td::before,
tr.gapbefore th::before
{
content:"";
display:block;
position:relative;
z-index:1;
width:auto;
height:0;
padding:0;
margin:-5px-10px5px;/* 5px = cell top padding, 10px = (cell side padding)+(cell side border width)+(table side border width) */
border-top:16px solid white;/* the size & color of the gap you want */
border-bottom:2px solid blue;/* this replaces the cell's top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */}
W rzeczywistości robisz naklejanie prostokąta ::before bloku na górę wszystkich komórek w rzędzie, który chcesz poprzedzić przerwą. Bloki te wystają nieco z komórek, aby pokryć istniejące granice, ukrywając je. Te bloki są tylko górną i dolną ramką połączonymi ze sobą: górna ramka tworzy szczelinę, a dolna ramka ponownie tworzy wygląd oryginalnej górnej ramki komórek.
Zauważ, że jeśli masz obramowanie wokół samej tabeli, a także komórek, musisz dodatkowo zwiększyć poziomo-margines „bloków”. Tak więc dla obramowania tabeli 4px zamiast tego użyjesz:
margin:-5px-12px5px;/* 14px = original 10px + 2px for 'uncollapsed' part of table border */
A jeśli border-collapse:separatezamiast tego używana jest tabela border-collapse:collapse, musisz (a) użyć pełnej szerokości obramowania tabeli:
margin:-5px-14px5px;/* 14px = original 10px + 4px full width of table border */
... a także (b) zastąp podwójną szerokość obramowania, która teraz musi pojawić się poniżej odstępu:
border-bottom:4px solid blue;/* i.e. 4px = cell top border + previous row's bottom border */
Technikę można łatwo dostosować do wersji .gapafter, jeśli wolisz, lub do tworzenia szczelin pionowych (kolumnowych) zamiast szczelin rzędów.
Czy to naprawdę działa? Mam div.el { display: table-row; margin: 10px; }i margines nic nie robi. Wiem, że to trochę inne niż rzeczywisty stół, ale nie powinno być ...
border-spacing
jest to atrybut związanytable
i nie związanytr
. Spróbowaćtable.classname {border-spacing:5em}
.Note
: IE8 obsługuje właściwość odstępu między ramkami, jeśli podano! DOCTYPE.Odpowiedzi:
Musisz użyć paddingu na swoich
td
elementach. Coś takiego powinno załatwić sprawę. Możesz oczywiście uzyskać ten sam wynik, stosując górne wypełnienie zamiast dolnego wypełnienia.W poniższym kodzie CSS znak „więcej niż” oznacza, że dopełnienie jest stosowane tylko do
td
elementów, które są bezpośrednimitr
elementami potomnymi elementów z klasąspaceUnder
. Umożliwi to użycie zagnieżdżonych tabel. (Komórki C i D w przykładowym kodzie.) Nie jestem zbyt pewny obsługi przeglądarki dla bezpośredniego selektora potomnego (myślę o IE 6), ale nie powinien on łamać kodu w żadnych współczesnych przeglądarkach.Powinno to wyglądać mniej więcej tak:
źródło
bottom-border
Zestaw do przezroczystego może również pracować, ale nie jestem pewien, jak cross-browser zgodny jest.W tabeli nadrzędnej spróbuj ustawić
Plus deklaracja graniczna i sprawdź, czy osiągnie to pożądany efekt. Uważaj jednak, że IE nie obsługuje modelu „oddzielnych granic”.
źródło
thead
i”tbody
, będzie on podwójnyborder-spacing
między nimi w Chrome (ale jeden w Firefox).border-spacing: 0 1em
aby uzyskać odstęp między tylko rzędami.Masz tabelę z albumami id z dowolnymi danymi ... Pominąłem trs i tds
W css:
źródło
cellspacing
Atrybutem <table> jest nie obsługiwane w HTML5.ponieważ mam za sobą obraz tła, fałszowanie go białą wyściółką nie działałoby. Zdecydowałem się umieścić pusty wiersz między każdym wierszem treści:
następnie użyj css, aby nadać wierszom dystansowym określoną wysokość i przezroczyste tło.
źródło
Z sieci deweloperów Mozilla :
Ta ostatnia część jest często nadzorowana. Przykład:
AKTUALIZACJA
Rozumiem teraz, że OP chce, aby określone, oddzielne rzędy miały większy odstęp. Dodałem konfigurację z
tbody
elementami, które to osiągają bez rujnowania semantyki. Nie jestem jednak pewien, czy jest obsługiwany we wszystkich przeglądarkach. Zrobiłem to w Chrome.Poniższy przykład pokazuje, jak możesz wyglądać, jakby istniała tabela oddzielnych wierszy z pełną słodyczą css. Dało także więcej odstępów w pierwszym rzędzie dzięki
tbody
konfiguracji. Zapraszam do użycia!Informacja o wsparciu: IE8 +, Chrome, Firefox, Safari, Opera 4+
źródło
Możesz spróbować dodać wiersz separatora:
HTML:
css:
źródło
Nie można zmienić marginesu komórki tabeli. Ale MOŻESZ zmienić wypełnienie. Zmień dopełnienie TD, co spowoduje powiększenie komórki i odepchnij tekst z boku przy zwiększonym dopełnieniu. Jeśli masz linie graniczne, nadal nie będzie to dokładnie to, czego chcesz.
źródło
border-bottom
ipadding-bottom
oznacza, że granica będzie poniżej wyściółki.Spójrz na zwinięcie ramki: oddzielny atrybut (domyślnie) i właściwość odstępu między ramkami.
Najpierw musisz oddzielić je za pomocą zwinięcia obramowania , a następnie możesz zdefiniować przestrzeń między kolumnami i wierszami za pomocą odstępów między ramkami .
Obie te właściwości CSS są właściwie dobrze obsługiwane w każdej przeglądarce, patrz tutaj .
źródło
Ok, możesz
Upewnij się, że kolor tła jest ustawiony na td zamiast na wierszu. Powinno to działać w większości przeglądarek ... (Chrome, tj. Przetestowane pod kątem ff)
źródło
Musisz ustawić
border-collapse: separate;
na stole; większość domyślnych arkuszy stylów przeglądarki zaczyna się odborder-collapse: collapse;
, która wykopuje odstępy między krawędziami.Ponadto odstępy między krawędziami: są włączane
TD
, a nieTR
.Próbować:
źródło
Możesz użyć wysokości linii w tabeli:
źródło
źródło
Zbyt późna odpowiedź :)
Jeśli zastosujesz
tr
element pływający do elementów, możesz odstępować między dwoma wierszami za pomocąmargin
atrybutu.źródło
display
właściwośćblock
na wiersz. Dzięki temu wiersz ma margines. Margines pionowy „ Dotyczy: wszystkich elementów z wyjątkiem tych z typami wyświetlania tabeli innymi niż podpis tabeli, tabela i tabela wstawiana ”. Ponieważtable-row
nie ma żadnego z tych wyjątków, nie liczy się to. Prawdopodobnie mógłbyś osiągnąć ten sam efekt, robiąctr {display:block;}
to. Byłbym jednak ostrożny w stosowaniu jednej z tych metod w skomplikowanej tabeli. Prawdopodobnie nie przyniesie oczekiwanych rezultatów.Aby stworzyć iluzję odstępów między rzędami, zastosuj kolor tła do rzędu, a następnie utwórz grubą ramkę z białym kolorem, aby utworzyć „przestrzeń” :)
źródło
Prawidłowym sposobem na podanie odstępów dla tabel jest użycie podkładki i odstępów między komórkami np
źródło
Natknąłem się na to, walcząc z podobnym problemem. Uważam, że odpowiedź Varuna Natryaja jest dość pomocna, ale zamiast tego użyłbym przezroczystej ramki.
Przezroczyste obramowania nadal mają szerokość.
źródło
Działa z większością najnowszych przeglądarek w 2015 roku. Proste rozwiązanie. Nie działa dla przezroczystości, ale w przeciwieństwie do odpowiedzi Thoronwen, nie mogę uzyskać przezroczystości do renderowania przy dowolnym rozmiarze.
źródło
Po prostu włóż
div
dotd
i ustaw następujące stylediv
:źródło
Zdaję sobie sprawę, że jest to odpowiedź na stary wątek i może nie być to żądane rozwiązanie, ale chociaż wszystkie sugerowane rozwiązania nie spełniły moich oczekiwań, to rozwiązanie dla mnie zadziałało.
Miałem 2 komórki tabeli, jedną z kolorem tła, drugą z kolorem obramowania. Powyższe rozwiązania usuwają ramkę, więc komórka po prawej stronie wydaje się unosić w powietrzu. Rozwiązanie, które wystarczyły było zastąpić
table
,tr
atd
z div i odpowiednich klas: stół byłobydiv id="table_replacer"
, tr byłobydiv class="tr_replacer"
i td byłobydiv class="td_replacer"
(zmiana zamykania znaczniki div, a także oczywiście)Aby uzyskać rozwiązanie mojego problemu, css to:
Mam nadzieję, że to komuś pomoże.
źródło
Możesz wypełnić elementy <td /> elementami <div /> i zastosować dowolny margines do tych div, które lubisz. Aby uzyskać wizualną przestrzeń między rzędami, możesz użyć powtarzającego się obrazu tła na elemencie <tr />. (To było rozwiązanie, którego właśnie użyłem dzisiaj i wydaje się, że działa zarówno w IE6, jak i FireFox 3, chociaż nie testowałem go dalej.)
Ponadto, jeśli nie chcesz modyfikować kodu serwera, aby umieścić <div /> s wewnątrz <td /> s, możesz użyć jQuery (lub czegoś podobnego), aby dynamicznie zawinąć zawartość <td /> w <div / >, umożliwiając stosowanie CSS według potrzeb.
źródło
Lub po prostu dodaj puste miejsce z wysokością marginesu między wierszami, które chcesz dodać odstępy
źródło
Oto proste i eleganckie rozwiązanie z kilkoma zastrzeżeniami:
Mając to na uwadze, spróbuj tego:
W rzeczywistości robisz naklejanie prostokąta
::before
bloku na górę wszystkich komórek w rzędzie, który chcesz poprzedzić przerwą. Bloki te wystają nieco z komórek, aby pokryć istniejące granice, ukrywając je. Te bloki są tylko górną i dolną ramką połączonymi ze sobą: górna ramka tworzy szczelinę, a dolna ramka ponownie tworzy wygląd oryginalnej górnej ramki komórek.Zauważ, że jeśli masz obramowanie wokół samej tabeli, a także komórek, musisz dodatkowo zwiększyć poziomo-margines „bloków”. Tak więc dla obramowania tabeli 4px zamiast tego użyjesz:
A jeśli
border-collapse:separate
zamiast tego używana jest tabelaborder-collapse:collapse
, musisz (a) użyć pełnej szerokości obramowania tabeli:... a także (b) zastąp podwójną szerokość obramowania, która teraz musi pojawić się poniżej odstępu:
Technikę można łatwo dostosować do wersji .gapafter, jeśli wolisz, lub do tworzenia szczelin pionowych (kolumnowych) zamiast szczelin rzędów.
Oto codepen, w którym można go zobaczyć w akcji: https://codepen.io/anon/pen/agqPpW
źródło
Tutaj działa to płynnie:
Przypuszczam, że możesz wypracować bardziej szczegółowy układ, określając, które td w razie potrzeby.
źródło
robienie tego pokazanego powyżej ...
usuwa pionowe wyrównanie kolumn, więc należy zachować ostrożność podczas jego używania
źródło
Czy próbowałeś:
Alternatywnie, każdy td może być również regulowany:
lub
źródło
div.el { display: table-row; margin: 10px; }
i margines nic nie robi. Wiem, że to trochę inne niż rzeczywisty stół, ale nie powinno być ...