W moim dokumencie HTML mam tabelę z dwiema kolumnami i wieloma wierszami. Jak mogę zwiększyć odstęp między pierwszą a drugą kolumną za pomocą CSS? Próbowałem zastosować „margin-right: 10px;” do każdej komórki po lewej stronie, ale bez efektu.
96
Odpowiedzi:
Zastosuj to do swojego pierwszego
<td>
:Przykład HTML:
źródło
border-collapse: separate
separate
border-spacing: 5px;
border-spacing
dodaje również odstępy między rzędami. Niestety nie ma osobnej właściwości dla odstępów w pionie i poziomie.border-spacing
przyjmuje dwa argumenty - jeden dla poziomu i jeden dla pionu.Słowo ostrzeżenia: chociaż
padding-right
może rozwiązać twój konkretny problem (wizualny), nie jest to właściwy sposób dodawania odstępów między komórkami tabeli. To, copadding-right
robi dla komórki, jest podobne do tego, co robi z większością innych elementów: dodaje przestrzeń w komórce. Jeśli komórki nie mają obramowania, koloru tła lub czegoś innego, co utrudnia grę, może to naśladować efekt ustawienia odstępu między komórkami, ale nie inaczej.Jak ktoś zauważył, specyfikacje marginesów są ignorowane dla komórek tabeli:
Specyfikacja CSS 2.1 - Tabele - Wizualny układ zawartości tabeli
Jaki jest zatem „właściwy” sposób? Jeśli chcesz zastąpić
cellspacing
atrybut tabeli, toborder-spacing
(zborder-collapse
wyłączonym) jest zamiennikiem. Jeśli jednak wymagane są „marginesy” na komórkę, nie jestem pewien, jak można to poprawnie osiągnąć za pomocą CSS. Jedynym hackem, o którym przychodzi mi do głowy, jest użyciepadding
jak powyżej, unikanie stylizacji komórek (kolory tła, obramowania itp.) I zamiast tego używanie kontenerów DIV wewnątrz komórek, aby zaimplementować taką stylizację.Nie jestem ekspertem od CSS, więc mógłbym się mylić w powyższym (co byłoby świetnie wiedzieć! Też chciałbym mieć rozwiązanie CSS dla marginesów komórek tabeli).
Twoje zdrowie!
źródło
Jeśli nie możesz użyć dopełnienia (na przykład masz obramowania w td), spróbuj tego
źródło
Zdaję sobie sprawę, że jest to dość spóźnione, ale dla przypomnienia, możesz również użyć do tego selektorów CSS (eliminując potrzebę stosowania stylów wbudowanych). Ten CSS stosuje dopełnienie do pierwszej kolumny każdego wiersza:
A to byłby twój HTML, bez CSS !:
Pozwala to na znacznie bardziej eleganckie znaczniki, szczególnie w przypadkach, w których musisz wykonać wiele specyficznego formatowania za pomocą CSS.
źródło
margines nie działa niestety na pojedynczych komórkach, jednak możesz dodać dodatkowe kolumny między dwiema komórkami, między którymi chcesz umieścić spację ... inną opcją jest użycie obramowania w tym samym kolorze co tło ...
źródło
Możesz to po prostu zrobić:
Żaden CSS nie jest wymagany :) To 10px to Twoja przestrzeń.
źródło
Spróbuj
padding-right
. Nie wolno ci umieszczaćmargin
między komórkami.źródło
Korzystanie z border-collapse: oddzielne;nie działa dla mnie, ponieważ potrzebuję tylko marginesu między komórkami tabeli, a nie po bokach tabeli.
Wymyśliłem następne rozwiązanie:
- CSS
- HTML
źródło
To rozwiązanie sprawdza się zarówno dla osób
td
, które potrzebująborder
ipadding
do stylizacji.(Testowane w Chrome 32, IE 11, Firefox 25)
Zaktualizowano 2016
Firefox obsługuje teraz to bez
inline-block
i zestawuwidth
źródło
W ten sposób nie można wyróżnić poszczególnych kolumn w komórce. Moim zdaniem najlepszą opcją jest dodanie litery a
style='padding-left:10px'
w drugiej kolumnie i zastosowanie stylów do wewnętrznego elementu div lub elementu. W ten sposób można uzyskać iluzję większej przestrzeni.źródło
Jeśli masz kontrolę nad szerokością tabeli, wstaw dopełnienie z lewej strony we wszystkich komórkach tabeli i wstaw ujemny lewy margines na całej tabeli.
Uwaga: szerokość tabeli musi uwzględniać szerokość dopełnienia / marginesu. Na przykładzie powyższego wizualna szerokość tabeli wyniesie 700 pikseli.
To nie jest najlepsze rozwiązanie, jeśli używasz obramowań w komórkach tabeli.
źródło
ROZWIĄZANIE
Uważam, że najlepszym sposobem rozwiązania tego problemu jest połączenie prób i błędów oraz przeczytanie tego, co zostało napisane przede mną:
http://jsfiddle.net/MG4hD/
Jak widać, dzieje się kilka dość trudnych rzeczy ... ale głównym powodem, dla którego można to dobrze wyglądać, są:
ELEMENT RODZICIELSKI (UL): border-collapse: oddzielne; border-spacing: .25em; margin-left: -,25em;
CHILD ELEMENTS (LI): wyświetlacz: tabela-komórka; Vertical-align: do środka;
HTML
CSS
źródło
Idąc za rozwiązaniem Ciana polegającym na ustawianiu obramowania zamiast marginesu, odkryłem, że można ustawić kolor obramowania na przezroczysty, aby uniknąć konieczności dopasowania koloru do tła. Działa w FF17, IE9, Chrome v23. Wydaje się, że to przyzwoite rozwiązanie, pod warunkiem, że nie potrzebujesz również rzeczywistej granicy.
źródło
Używanie dopełnienia nie jest prawidłowym sposobem robienia tego, może zmienić wygląd, ale nie jest to, czego chciałeś. To może rozwiązać twój problem.
źródło
Możesz użyć obu z nich:
Ale lepiej jest używać z % .
źródło
%
Jeśli wypełnienie nie działa dla Ciebie, innym sposobem obejścia problemu jest dodanie dodatkowych kolumn i ustawienie marginesu przez szerokość za pomocą
<colgroup>
. Żadne z powyższych rozwiązań wypełnienia nie działało dla mnie, ponieważ próbowałem nadać samej granicy komórki margines, a to ostatecznie rozwiązało problem:Stylizuj obramowanie komórek tabeli, używając: nth-child, tak aby druga i trzecia kolumna wyglądały na jedną kolumnę.
źródło