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