Добавьте рамку-низ к строке таблицы <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;
}

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;на тра


6
установка границы на tr бесполезна, даже если граница свернута. Вы должны установить его на tds of tr
Раду Симионеску

9
@RaduSimionescu Неправильно, он отлично работает на грани trрухнул.
Styphon

Не влияет на FF 45.0.1.
Имрек

41

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

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

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


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

30

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

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

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

table {
  border-collapse: collapse;
}

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;
}

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.

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

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


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;
}

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

Отсутствует 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.