Додати рядок межі до рядка таблиці <tr>


385

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

Спочатку я спробував прямий шлях, тобто:

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

Але це не спрацювало. Тому я додав CSS так:

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

Це все ще не спрацювало.

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


Як бічне зауваження, якщо вбудований стиль (перший приклад у вашому запитанні) не працює, навряд чи вбудований стиль (другий приклад) буде спрацьовувати. Ви також повинні вивчити
Tass

Якщо ви хочете мати граничне
AllenC

6
Лише зауваження, щоб заохотити майбутніх пошукових працівників прокручуватися до відповіді @Nathan Manousos, нижче - це, мабуть, рішення, яке ви шукаєте
Генрі

Відповіді:


400

У мене була така проблема раніше. Я не думаю, що trможна безпосередньо брати стильову форму. Моє вирішення полягало в тому, щоб стилювати стилі tdв ряд:

<tr class="border_bottom">

CSS:

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

27
Зауважте, що використовуючи це рішення, ви, швидше за все, матимуть проміжок у межі між td. Відповідь simoncereska бере на це увагу, але пам’ятайте, що це може виглядати непогано з пунктирними або пунктирними типами меж (бо вони не є суцільними)
Griddo,

24
Ви також можете виправити це, додавши cellspacing="0"як атрибут до <table>(див. Це питання ). Не знаю, як це буде виглядати з пунктирними або пунктирними рамками.
Стефан ван ден Аккер

5
trможе застосовувати стилі рамки в руйнується моделі рамки. @Sangram, подумайте про прийняття відповіді, яка враховує її замість цієї, ні?
Роберт Сімер

Це не спрацює, якщо між клітинками таблиці є прокладка. Якщо буде прокладка, то межа буде помітно розбита на шматки.
Тимофій Гонсалес

і ваш стіл потребує цього стилю <table style = "border-колапс: колапс">
Oguz

510

Додайте border-collapse:collapseдо правила таблиці:

table { 
    border-collapse: collapse; 
}

Посилання


2
Це само по собі не працює. Ви все одно не можете стилізувати рядок, але ви можете стилізувати клітинки.
Ренан

49
Ви помиляєтесь, @Renan. Руйнується модель меж - це саме те, що робить межі рядків стилістичними. Згідно з розділом 17.6 CSS : В окремій моделі кордону "Рядки, [...] не можуть мати межі" (тобто агенти користувача повинні ігнорувати властивості кордону для цих елементів). " "У моделі руйнування, що згортається, можна вказати межі, які оточують всю або частину комірки, групу рядків [та] рядків [...]" І до речі: вона працює в моєму браузері (Chromium 37).
Роберт Сімер

12
Я думаю, що деякі люди можуть заплутатися (як я) і не помічають, що стиль обвалу кордону потрібно встановлювати на столі, а не на рядку.
Порлуне

Здається, що Chrome не має цієї функції, хоча він підтримує інші функції краху кордону.
Liqun Sun

72

Використовуйте border-collapse:collapseна столі та border-bottom: 1pt solid black;на tr


6
встановлення кордону на тр є марним, навіть якщо межа оббита. ви повинні встановити його на tds tr
Раду Сіміонеску

9
@RaduSimionescu Неправильно, він прекрасно працює на trрубежі зі зрушенням .
Стифон

Немає ефекту у FF 45.0.1.
imrek

41

Використовуйте

border-collapse:collapse як написав Натан, і вам потрібно встановити

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


Ось так я б і зробив! Додайте кордон на td та використовуйте кордон-згортання на столі
Sayan

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дляtr's. Використовуйтенатомістьtr td { border-bottom: ... }оголошенняtr.oddrow td { border-bottom: ... }
vladr

4
Блок дисплея може зруйнувати макет таблиці. Борд-колапс: колапс на самій таблиці, безумовно, найкраще рішення
N4ppeL

7

Ви можете використовувати box-shadowвластивість для підроблення межі trелемента. box-shadowДля регулювання товщини відрегулюйте положення Y (внизу зображене як 2 пікселя).

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 із властивістю нижньої межі!

Без кордону 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'>

ви не можете поставити кордон на tr. Відредагована відповідь для уточнення цього.
Декко

Ось найпростіша і найточніша відповідь.
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.