Возможно ли это через CSS?
я стараюсь
tr.classname {
border-spacing: 5em;
}
но безрезультатно. Может я что не так делаю?
ну, я использую ff3, поскольку я знаю, что, предположительно, поддерживает правила, но сейчас я ищу исправление в ff3. Я пробовал пробелы и отступы, пока не повезло. productlistingitem - основная таблица <table class = "productListingItem" border = "0" cellpadding = "10" cellspacing = "0"> <tr> <tr> <td class = "dragItem">
Возможно, это потому, что border-spacing - это атрибут, связанный с table, а не tr. Попробуйте table.classname {border-spacing:5em}. Note: IE8 поддерживает свойство border-spacing, если указан! DOCTYPE.
Я использую line-height, когда нет границ.
Отвечает ли это на ваш вопрос? CSS: как создать промежуток между строками в таблице?






В родительской таблице попробуйте установить
border-collapse:separate;
border-spacing:5em;
Плюс объявление границы, и посмотрите, достигнет ли это желаемого эффекта. Однако помните, что IE не поддерживает модель «разделенных границ».
Да, этот метод бы будет идеальным, за исключением того, что IE 7 его не поддерживает. Для поддержки браузера см .: quirksmode.org/css/tables.html
Кроме того, он контролирует интервал между всеми строками в таблице, вы не можете установить интервал между строками для отдельных строк (это то, чего может желать OP).
Это несовместимо между Chrome и Firefox. Если у вас есть thead и tbody, он будет отображать двойной border-spacing между ними в Chrome (но один в Firefox).
Это фактический ответ, специально установите border-spacing: 0 1em, чтобы получить интервал только между строками.
@igneosaur Я пытался сделать то, что вы сказали, но он все равно добавил интервал между всеми строками, а не только между первыми двумя. Можете ли вы предоставить рабочий jsfiddle?
@ user3281466 А, ну, мне удалось заставить его работать с отдельными строками, но мне пришлось сделать что-то другое; он немного меняет стили на столе, что может вызвать другие проблемы. display:block в строках нарушает функцию автоматического выравнивания, которую делают таблицы, но в любом случае здесь JSFiddle, возможно, он решит вашу проблему: jsfiddle.net/5dhsrLx3
Круто, братан! Мне не нужно добавлять скрипт в каждую строку таблицы.
Не думайте о поддержке IE, никто этим не пользуется, никто не будет использовать и никому это тоже не нравится.
Для GridView также добавьте CellSpacing = "- 1" GridLines = "none"
Теперь, когда IE7 практически не используется, это решение идеально!
когда я добавляю этот код, мой стиль border-color исчезает. Кто-нибудь может сказать мне, почему это происходит?
@igneosaru @ simon-east, не могли бы вы объяснить мне, почему пропадает мой стиль border-color?
Попытался ли ты:
tr.classname { margin-bottom:5em; }
В качестве альтернативы, каждый td также можно настроить:
td.classname { margin-bottom:5em; }
или же
td.classname { padding-bottom:5em; }
Это действительно работает? У меня div.el { display: table-row; margin: 10px; }, и маржа ничего не делает. Я знаю, что это немного отличается от реальной таблицы, но этого не должно быть ...
Строки / ячейки таблицы не имеют полей.
Вы не можете изменить поле ячейки таблицы. Но вы МОЖЕТЕ изменить заполнение. Измените отступы TD, чтобы увеличить ячейку и отодвинуть текст в сторону с увеличенным отступом. Однако если у вас есть границы, это все равно будет не совсем то, что вам нужно.
Да, отступ будет сдвигать границу вниз, поэтому border-bottom и padding-bottom означают, что граница будет ниже отступа.
Вам необходимо использовать отступы в ваших элементах td. Что-то вроде этого должно помочь. Конечно, вы можете получить тот же результат, используя верхний отступ вместо нижнего.
В приведенном ниже коде CSS знак «больше» означает, что заполнение применяется только к элементам td, которые являются прямыми дочерними элементами элементов tr с классом spaceUnder. Это позволит использовать вложенные таблицы. (Ячейки C и D в примере кода.) Я не уверен в поддержке браузером прямого дочернего селектора (например, IE 6), но это не должно нарушать код в любых современных браузерах.
/* Apply padding to td elements that are direct children of the tr elements with class spaceUnder. */
tr.spaceUnder>td {
padding-bottom: 1em;
}<table>
<tbody>
<tr>
<td>A</td>
<td>B</td>
</tr>
<tr class = "spaceUnder">
<td>C</td>
<td>D</td>
</tr>
<tr>
<td>E</td>
<td>F</td>
</tr>
</tbody>
</table>Это должно выглядеть примерно так:
+---+---+
| A | B |
+---+---+
| C | D |
| | |
+---+---+
| E | F |
+---+---+
За исключением того, что это вообще не решает проблему, когда ваши строки имеют цвет фона, и вы действительно хотите WHITESPACE между вашими строками.
@Simon: Пробел обычно относится к пустому пространству, а не конкретно к белому цвету. Если вы хотите раскрасить пространство между строками, вы можете попробовать использовать свойство CSS <code> border-bottom </code> в td-elements. Это, вероятно, будет правильно отображаться только с границей в 1 пиксель. Другое, но не столь элегантное решение - использовать пустую строку.
@Jan: Да, именно моя точка зрения ... Довольно сложно поместить пустое пространство прозрачный между строками. В некоторых случаях ваше решение помогает, но не решает эту проблему. Вставка пустой строки таблицы может сработать, но это ужасно. bottom-border, установленный на прозрачный, также может работать, но я не уверен, насколько он совместим с несколькими браузерами.
@Simon: У Коулмана есть уродливое, но рабочее решение вашей проблемы.
Один вопрос по этому поводу. Почему не работает при простом применении, например. style= padding-bottom: 5px прямо в HTML, но только когда я помещаю стиль в свой CSS?
@Magnilex. Можно добавить стиль непосредственно в html, но в своем примере я использовал CSS, так как вы обычно хотите применить заполнение ко всей строке ячеек, а это означает, что вам придется повторить style = "padding-bottom: 5px" на каждом элементе td.
К сожалению, это не работает, когда вы пытаетесь использовать vertical-align: middle для текста.
@Simon Я бы использовал границу с цветом фона. Электронная почта в формате HTML научила меня этому подвоху.
@SimonEast Я решил эту проблему наличия строк с фоном, используя linear-gradient, который имеет "резкие" остановки и использует цвет transparent по краям. Здесь описаны резкие линейные градиенты, например: css-tricks.com/css3-gradients
Вы можете заполнить элементы <td /> элементами <div /> и применить любые поля к тем div, которые вам нравятся. Для визуального пространства между строками вы можете использовать повторяющееся фоновое изображение в элементе <tr />. (Это решение, которое я использовал только сегодня, и, похоже, оно работает как в IE6, так и в FireFox 3, хотя я больше не тестировал его.)
Кроме того, если вы не хотите изменять код сервера, чтобы поместить <div /> внутрь <td />, вы можете использовать jQuery (или что-то подобное) для динамического обертывания содержимого <td /> в <div / >, позволяя применять CSS по желанию.
Слишком поздно ответ :)
Если вы примените float к элементам tr, вы можете установить интервал между двумя строками с помощью атрибута margin.
table tr{
float: left
width: 100%;
}
tr.classname {
margin-bottom:5px;
}
Это страшно. Фактически это устанавливает для свойства display значение block для строки. Это позволяет строке иметь поле. Вертикальное поле «Применимо к: всем элементам, кроме элементов с типами отображения таблицы, отличными от table-caption, table и inline-table». Поскольку table-row не входит ни в одно из этих исключений, он не учитывается. Вероятно, вы могли бы добиться того же эффекта, выполняя tr {display:block;}. Но я бы с осторожностью использовал любой из этих методов в сложной таблице. Скорее всего, это не приведет к тому, чего вы ожидаете.
Страшно, но сработало. Не в ie7, но размещение ячеек непосредственно в таблице работает в ie7.
плавающие строки - не лучшее решение ... особенно если ваша страница больше, чем в 2 раза ширины строки. добавьте атрибут ширины к обоим тегам
Хорошо ты можешь сделать
tr.classname td {background-color:red; border-bottom: 5em solid white}
Убедитесь, что цвет фона установлен на td, а не на строке. Это должно работать в большинстве браузеров ... (Chrome, т.е. & ff протестирован)
Это создает странные проблемы с вертикальным выравниванием, по крайней мере, в Firefox.
поскольку у меня есть фоновое изображение за столом, имитировать его с белым отступом не получится. Я решил поместить пустую строку между каждой строкой контента:
<tr class = "spacer"><td></td></tr>
затем используйте css, чтобы дать промежуточным рядам определенную высоту и прозрачный фон.
Я думаю, это, наверное, более гибкий вариант. Вы не всегда можете заранее контролировать, когда вам понадобится место (динамически генерируемые страницы).
Это напоминает мне 90-е годы, когда поддержка CSS практически отсутствовала, а таблицы использовались для большей части макета. Я все еще даю ему +1, потому что другие «ответы» не лучше с точки зрения фактического освобождения места в строках таблицы между.
@labyrinth С 90-х годов мало что изменилось. Что касается HTML, все стало намного мощнее и запутаннее.
У вас есть таблица с альбомами id с любыми данными ... Я пропустил trs и tds
<table id = "albums" cellspacing = "0">
</table>
В css:
table#albums
{
border-collapse:separate;
border-spacing:0 5px;
}
это сработало для меня. Первый аргумент border-spacing - это горизонтальный интервал между ячейками, а второй - вертикальный интервал.
Не всегда нужно использовать причудливый CSS, если старый добрый HTML может с этим справиться :)
можно ли подать заявку только на тр внутри "тела"?
почему это не принятый ответ?
делать это, как показано выше ...
table tr{ float: left width: 100%; } tr.classname { margin-bottom:5px; }
удаляет выравнивание по вертикали, поэтому будьте осторожны при его использовании
tr {
display: block;
margin-bottom: 5px;
}
я бы предпочел display: inline-block;
Или просто добавьте пробел с высотой поля между строками, в которые вы хотите добавить интервал
Вы можете попробовать добавить разделительную строку:
html:
<tr class = "separator" />
css:
table tr.separator { height: 10px; }
Для IE tr без тела не распознается. также добавьте фиктивный тег td.
Проблема в том, что в HTML5 Валидатор W3C выдаст ошибку, сообщающую: «Ширина строки таблицы 0 столбцов, что меньше количества столбцов, установленного первой строкой».
Хорошо, я добавил еще <tr>, <td> и <p> и установил видимость p-тега на скрытый .. Работает тоже. :-)
Правильный способ задать интервал для таблиц - использовать cellpadding и cellspacing, например.
<table cellpadding = "4">
Вы можете сделать это с помощью CSS, что, я бы сказал, более «правильно» (помимо того, что это более элегантно, перемещение стилей из разметки в CSS экономит пропускную способность).
Это не экономит пропускную способность. На самом деле я использую больше. Предполагая, что вы не добавляете таблицу стилей только для этого, вам нужно добавить селектор и, возможно, идентификатор или имя в эту таблицу. Это больше не меньше байтов.
Вам необходимо установить border-collapse: separate; на стол; большинство таблиц стилей по умолчанию для браузера начинаются с border-collapse: collapse;, что исключает интервал границ.
Кроме того, border-spacing: используется для TD, а не для TR.
Пытаться:
<html><head><style type = "text/css">
#ex { border-collapse: separate; }
#ex td { border-spacing: 1em; }
</style></head><body>
<table id = "ex"><tr><td>A</td><td>B</td></tr><tr><td>C</td><td>D</td></tr></table>
</body>
border-spacing также для таблицы, а не td
Спасибо. Ранее я поблагодарил вас за исправление комментария, но чрезмерно усердный редактор, который хотел изменить мой стиль и сломал код в процессе, также удалил мою благодарность. Я сейчас помещаю его сюда, где его нельзя редактировать.
Чтобы создать иллюзию расстояния между строками, примените цвет фона к строке, а затем создайте толстую рамку белого цвета, чтобы образовалось «пространство» :)
tr
{
background-color: #FFD700;
border: 10px solid white;
}
Я наткнулся на это, борясь с аналогичной проблемой. Я нашел ответ Варуна Натраджа весьма полезным, но вместо этого я бы использовал прозрачную рамку.
td { border: 1em solid transparent; }
Прозрачные границы по-прежнему имеют ширину.
Я понимаю, что это ответ на старый поток и, возможно, не то решение, которое запрошено, но, хотя все предложенные решения не дали того, что мне было нужно, это решение сработало для меня.
У меня было 2 ячейки таблицы, одна с цветом фона, другая с цветом границы. Вышеупомянутые решения удаляют границу, поэтому ячейка справа будет казаться плавающей в воздухе.
Решение, которое помогло, заключалось в замене table, tr и td на div и соответствующие классы: table будет div id = "table_replacer", tr будет div class = "tr_replacer", а td будет div class = "td_replacer" (также очевидно, измените закрывающие теги на div)
Чтобы получить решение моей проблемы, css:
#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, это решение эквивалентно использованию обычной таблицы, шаблона tr, td и стиля tr {display: block;}, которые я пробовал. Проблема: таблица выглядит иначе, поскольку элементы td не отображаются в соответствии с шириной таблицы, а остаются в пределах tr. Означает, что элементы td всех строк больше не выровнены по вертикали.
Вы можете использовать высота линии в таблице:
<table style = "width: 400px; line-height:50px;">
Вы правы, но текст также получит высоту строки, что не очень хорошо, я думаю, вы должны увидеть Коулмана! У него хорошее решение
Просто поместите div в td и установите следующие стили div:
margin-bottom: 20px;
height: 40px;
float: left;
width: 100%;
Из сети разработчиков Mozilla:
The border-spacing CSS property specifies the distance between the borders of adjacent cells (only for the separated borders model). This is equivalent to the cellspacing attribute in presentational HTML, but an optional second value can be used to set different horizontal and vertical spacing.
За этой последней частью часто следят. Пример:
.your-table {
border-collapse: separate; /* allow spacing between cell borders */
border-spacing: 0 5px; /* NOTE: syntax is <horizontal value> <vertical value> */
ОБНОВИТЬ
Теперь я понимаю, что OP хочет, чтобы определенные, отдельные строки имели увеличенный интервал. Я добавил настройку с элементами tbody, которая выполняет это без нарушения семантики. Однако я не уверен, поддерживается ли он во всех браузерах. Я сделал это в Chrome.
Пример ниже предназначен для демонстрации того, как вы можете сделать так, чтобы таблица существовала из отдельных строк, полностью раскрывающаяся сладость CSS. Также с настройкой tbody в первом ряду был увеличен интервал. Не стесняйтесь использовать!
Уведомление о поддержке: IE8 +, Chrome, Firefox, Safari, Opera 4+
.spacing-table {
font-family: 'Helvetica', 'Arial', sans-serif;
font-size: 15px;
border-collapse: separate;
table-layout: fixed;
width: 80%;
border-spacing: 0 5px; /* this is the ultimate fix */
}
.spacing-table th {
text-align: left;
padding: 5px 15px;
}
.spacing-table td {
border-width: 3px 0;
width: 50%;
border-color: darkred;
border-style: solid;
background-color: red;
color: white;
padding: 5px 15px;
}
.spacing-table td:first-child {
border-left-width: 3px;
border-radius: 5px 0 0 5px;
}
.spacing-table td:last-child {
border-right-width: 3px;
border-radius: 0 5px 5px 0;
}
.spacing-table thead {
display: table;
table-layout: fixed;
width: 100%;
}
.spacing-table tbody {
display: table;
table-layout: fixed;
width: 100%;
border-spacing: 0 10px;
}<table class = "spacing-table">
<thead>
<tr>
<th>Lead singer</th>
<th>Band</th>
</tr>
</thead>
<tbody>
<tr>
<td>Bono</td>
<td>U2</td>
</tr>
</tbody>
<tbody>
<tr>
<td>Chris Martin</td>
<td>Coldplay</td>
</tr>
<tr>
<td>Mick Jagger</td>
<td>Rolling Stones</td>
</tr>
<tr>
<td>John Lennon</td>
<td>The Beatles</td>
</tr>
</tbody>
</table>Если мне нужно было вертикальное пространство между двумя конкретными строками, я просто добавил разделительную строку <tr> <td colspan = "2" style = "padding-bottom: 1em;"> </td> </tr>
Это будет работать, но семантически неверно (например, ваша строка разделителя не является фактической строкой с данными, как другие строки. Это может раздражать людей, использующих программы чтения с экрана или другие вспомогательные устройства, а также для целей индексирования и это может не иметь большого значения, но хорошо держать это в голове при разработке веб-сайта :)
Это верно, если он действительно использует таблицу для представления таблицы. Если он просто использует таблицу как способ отображения данных в табличной форме, тогда я бы сказал, что имеет больше смысла вставлять строку для представления промежутка между двумя элементами, а не просто добавлять интервал к элементам td выше или ниже линии, потому что пользователь хочет добавить пробел между двумя строками, а не увеличивать размер элементов в строке.
Работает с большинством последних браузеров 2015 года. Простое решение. Это не работает для прозрачности, но, в отличие от ответа Торонвена, я не могу получить прозрачность для рендеринга любого размера.
tr {
border-bottom:5em solid white;
}
Здесь это работает плавно:
#myOwnTable td { padding: 6px 0 6px 0;}
Я полагаю, вы могли бы разработать более детализированный макет, указав, какой td, если это необходимо.
Взгляните на атрибут граница-коллапс: отдельный (по умолчанию) и свойство пограничный интервал.
Сначала вы должны отдельный их с граница-коллапс, затем вы можете определить пространство между столбцами и строками с пограничный интервал.
Оба эти свойства CSS на самом деле хорошо поддерживаются в каждом браузере, глянь сюда.
table {border-collapse: separate; border-spacing: 10px 20px;}
table,
table td,
table th {border: 1px solid black;}<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>Это правильный ответ
Это работает, только если вы работаете с белыми ячейками и белым фоном.
@Sixteen Это неправда .. Почему он должен отличаться другим цветом?
Я неправильно понял ответ, мой плохой. После повторной проверки это решение показалось мне хорошим и отлично работает.
Вот простое и элегантное решение с некоторыми оговорками:
Имея это в виду, попробуйте следующее:
td {padding:5px 8px;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 -10px 5px; /* 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 */
}
На самом деле вы вставляете прямоугольный блок ::before в верхнюю часть всех ячеек в строке, которую вы хотите, перед промежутком. Эти блоки немного выступают из ячеек, перекрывая существующие границы, скрывая их. Эти блоки представляют собой просто верхнюю и нижнюю границу, зажатые вместе: верхняя граница образует зазор, а нижняя граница воссоздает внешний вид исходной верхней границы ячеек.
Обратите внимание, что если у вас есть рамка вокруг самой таблицы, а также ячеек, вам необходимо дополнительно увеличить горизонтальный край ваших «блоков». Итак, для границы таблицы 4px вместо этого вы должны использовать:
margin:-5px -12px 5px; /* 14px = original 10px + 2px for 'uncollapsed' part of table border */
И если ваша таблица использует border-collapse:separate вместо border-collapse:collapse, вам нужно (а) использовать полную ширину границы таблицы:
margin:-5px -14px 5px; /* 14px = original 10px + 4px full width of table border */
... а также (b) замените двойную ширину границы, которая теперь должна появиться ниже пробела:
border-bottom:4px solid blue; /* i.e. 4px = cell top border + previous row's bottom border */
Этот метод легко адаптируется к версии .gapafter, если вы предпочитаете, или для создания вертикальных (столбцов) промежутков вместо промежутков между строками.
Вот код, где вы можете увидеть это в действии: https://codepen.io/anon/pen/agqPpW
Лучший способ - добавить tr между двумя tr, как показано ниже,
<tr>
<td height = "5" colspan = "2"></td>
</tr>
Что такое браузер и можете ли вы предоставить фрагмент кода (html / css)?