Добавьте рамку-низ к строке таблицы <tr>

386

У меня есть таблица 3 на 3. Мне нужен способ добавить границу для нижней части каждой строки trи придать ей определенный цвет.

Сначала я попробовал прямой путь, а именно:

<tr style="border-bottom:1pt solid black;">

Но это не сработало. Поэтому я добавил CSS следующим образом:

tr {
border-bottom: 1pt solid black;
}

Это все еще не сработало.

Я бы предпочел использовать CSS, потому что тогда мне не нужно добавлять styleатрибут в каждую строку. Я не добавил borderатрибут в <table>. Я надеюсь, что это не влияет на мой CSS.

Санграм Нандхиле
источник
В качестве примечания: если встроенный стиль (первый пример в вашем вопросе) не работает, маловероятно, что встроенный стиль (второй пример) будет работать. Вам также следует изучить
Tass
Если вы хотите иметь нижнюю границу для таблицы tr, вы можете следовать этому jsfiddle.net/7awN4
AllenC
6
Просто примечание, чтобы побудить будущих искателей прокрутить вниз ответ @Nathan Manousos, ниже - это, вероятно, решение, которое вы ищете
henry

Ответы:

400

У меня была такая проблема раньше. Я не думаю, что trмогу принять стиль границы напрямую. Мой обходной путь должен был стилизоватьtd s в строке:

<tr class="border_bottom">

CSS:

tr.border_bottom td {
  border-bottom:1pt solid black;
}
tsherif
источник
28
Обратите внимание, что при использовании этого решения у вас, скорее всего, будет разрыв на границе между тд. Ответ simoncereska заботится об этом, но имейте в виду, что он может выглядеть не очень хорошо с пунктирными или пунктирными типами границ (потому что они не являются непрерывными)
Griddo
24
Вы также можете исправить это, добавив cellspacing="0"в качестве атрибута <table>(см. Этот вопрос ). Не знаю, как это будет выглядеть с пунктирными или пунктирными границами.
Стефан ван ден Аккер
5
trможно использовать моделирование границ в модели свертывания границ. @ Санграм, подумай о том, чтобы принять ответ, который учитывает это, а не этот, нет?
Роберт Симер
Это не будет работать, если между ячейками таблицы есть отступы. Если есть отступы, то граница будет явно разделена на части.
Тимоти Гонсалес
и вашему столу нужен этот стиль <table style = "border-collapse: collapse">
Огуз,
511

Добавьте border-collapse:collapseк своей таблице правило:

table { 
    border-collapse: collapse; 
}

Ссылка на сайт

Натан Манусос
источник
2
Это не работает само по себе. Вы все еще не можете стилизовать строку, но вы можете стилизовать ячейки.
Ренан
49
Вы не правы, @Renan. Свертывающаяся модель границ - это именно то, что делает границы строк стилизованными. Согласно разделу CSS 17.6 : В отдельной модели границ «Строки, [...] не могут иметь границ (т. Е. Пользовательские агенты должны игнорировать свойства границ для этих элементов)». «В модели сворачивающихся границ можно указать границы, которые окружают все или часть ячейки, строки [и] группы строк [...]» И, кстати: это работает в моем браузере (Chromium 37).
Роберт Симер
12
Я думаю, что некоторые люди могут запутаться (как я), и не замечают, что стиль сужения границ должен быть установлен на столе, а не на строке.
Porlune
Похоже, что Chrome не имеет этой функции, хотя он поддерживает другие функции коллапса границы.
Liqun Sun
72

Используйте border-collapse:collapseна столе и border-bottom: 1pt solid black;на тра

Jpduro
источник
6
установка границы на tr бесполезна, даже если граница свернута. Вы должны установить его на tds of tr
Раду Симионеску
9
@RaduSimionescu Неправильно, он отлично работает на грани trрухнул.
Styphon
Не влияет на FF 45.0.1.
Имрек
41

использование

border-collapse:collapse как написал Натан и вам нужно установить

td { border-bottom: 1px solid #000; }

simoncereska
источник
Вот так я бы тоже это сделал! Добавить границу на тд и использовать бордюр-коллапс на столе
Саян
30

Здесь много неполных ответов. Поскольку вы не можете применить границу к trтегу, вам нужно применить его к тегам tdили thследующим образом:

td {
  border-bottom: 1pt solid black;
}

В результате между ними останется небольшое пространство td, что нежелательно, если вы хотите, чтобы граница выглядела так, как будто это trтег. Чтобы, так сказать, «заполнить пробелы», вам нужно использовать border-collapseсвойство tableэлемента и установить его значение collapseследующим образом:

table {
  border-collapse: collapse;
}
dmeyer
источник
8

использование

table{border-collapse:collapse}
tr{border-top:thin solid}

Замените "тонкое твердое тело" на свойства CSS.

Джесси
источник
7

Показать строку в виде блока.

tr {
    display: block;
    border-bottom: 1px solid #000;
}

и отображать альтернативные цвета просто:

tr.oddrow {
    display: block;
    border-bottom: 1px solid #F00;
}
Jeremey
источник
11
Не очень хорошая идея, чтобы установитьdisplay: blockдляtrs. Используйтеtr td { border-bottom: ... }объявлениеtr.oddrow td { border-bottom: ... }вместо
vladr
4
блок display может разрушить таблицу layout.border-collapse: коллапс на самой таблице определенно является лучшим решением
N4ppeL
7

Вы можете использовать box-shadowсвойство, чтобы подделать границу trэлемента. Отрегулируйте положение Y box-shadow(ниже обозначено как 2px), чтобы отрегулировать толщину.

tr {
  -webkit-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  -moz-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
}
Ян Брюс
источник
6

Я пытался добавить

    table {
      border-collapse: collapse;
    }   

рядом с

    tr {
      bottom-border: 2pt solid #color;
    }

а затем прокомментировал коллапс границы, чтобы увидеть, что сработало. У меня просто работал tr селектор со свойством bottom-border!

Без границ CSS отл.

Без границ CSS отл.

Нет границы Фото в прямом эфире

Нет границы Фото в прямом эфире

CSS Border ex.

CSS Border ex.

Стол с бордюром в прямом эфире

Стол с бордюром в прямом эфире

MUFN
источник
2

При использовании этого метода я обнаружил, что пространство между элементами td вызывает разрыв на границе, но не стоит бояться ...

Один из способов обойти это:

<tr>
    <td>
        Example of normal table data
    </td>

    <td class="end" colspan="/* total number of columns in entire table*/">
        /* insert nothing in here */ 
    </td>
</tr>

С помощью CSS:

td.end{
    border:2px solid black;
}
DaveTheRave
источник
2

<td style="border-bottom-style: solid; border-bottom: thick dotted #ff0000; ">

Вы можете сделать то же самое для всего ряда.

Существует border-bottom-style, border-top-style, border-left-style, border-right-style. Или простоborder-style это относится ко всем четырем границам одновременно.

Вы можете увидеть (и ПОПРОБУЙТЕ СЕБЯ онлайн) более подробную информацию здесь

Давид Сильва-Баррера
источник
2

Несколько интересных ответов. Так как вы просто хотите, чтобы граница снизу (или сверху), вот еще два. Предполагая, что вы хотите синюю рамку толщиной 3 пикселя. В разделе стиля вы можете добавить

.blueB {background-color:blue; height:3px} or
hr {background-color:blue; color:blue height:3px}

В коде таблицы либо

<tr><td colspan='3' class='blueB></td></tr> or
<tr><td colspan='3'><hr></td></tr>
Говард Кэри Моррис
источник
1

Другое решение этой проблемы - это border-spacingсвойство:

table td {
  border-bottom: 2px solid black;
}

table {
  border-spacing: 0px;
}
<table>
 <tr>
   <td>ABC</td>
   <td>XYZ</td>
</table>

Евгений Коньков
источник
1

Отсутствует CSS-граница снизу:

<table>
    <thead>
        <tr>
            <th>Title</th>
        </tr>
        <tr>
            <th>
                <hr>
            </th>
        </tr>
    </thead>
</table>
Гил Перес
источник
0

Вы не можете поставить границу для элемента tr. Это сработало для меня в Firefox и IE 11:

<td style='border-bottom:1pt solid black'>
стержень
источник
Вы не можете поставить границу на Тр. Отредактированный ответ, чтобы уточнить это.
Decko
Это самый простой и точный ответ.
JamesC
-3

HTML

<tr class="bottom-border">
</tr>

CSS

tr.bottom-border {
  border-bottom: 1px solid #222;
}
Викас
источник
2
бесполезно без коллапса: коллапс;
m1crdy