Стилизация последнего td в таблице с помощью css

Я хочу стилизовать последний TD в таблице без использования класса CSS для конкретного TD.

<table>
  <tbody>
    <tr>
      <td>One</td>
      <td>Two</td>
      <td>Three</td>
      <td>Four</td>
      <td>Five</td>
    </tr>
  </tbody>
</table>

table td 
{ 
  border: 1px solid black;
}

Я хочу, чтобы TD, содержащий текст «Five», не имел границы, но, опять же, я не хочу использовать класс.

По какой причине вы не хотите использовать класс?

ya23 11.12.2008 19:19

Я хочу, чтобы html оставался статичным и имел возможность изменять стиль без добавления кода или кучи классов и идентификаторов css.

vchoke 11.12.2008 19:58

Вы всегда можете просто поместить class = "last" на все последние ячейки и никогда не менять его, и использовать или не использовать его в соответствии с требованиями вашего дизайна.

Nicole 23.02.2010 02:54
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
67
3
163 220
15
Перейти к ответу Данный вопрос помечен как решенный

Ответы 15

Ответ принят как подходящий

Вы можете использовать относительные правила:

table td + td + td + td + td {
  border: none;
}

Это работает, только если количество столбцов не определяется во время выполнения.

хех - тебе нравится такой подход!

nickf 11.12.2008 19:03

У него есть свои применения, особенно если вы, как этот парень, не хотите слишком сильно менять HTML для поддержки CSS.

sblundy 11.12.2008 19:05

Это работает! Спасибо. Да, HTML статичен, и я не хочу добавлять кучу классов css или идентификаторов для стилизации ячеек.

vchoke 11.12.2008 19:07

@vchoke: если вас устраивает решение sblundy, не забудьте принять его.

PhiLho 11.12.2008 19:09

Забавный трюк, но он менее гибкий, чем: last-child, и не работает лучше в IE ... Все же стоит запомнить!

PhiLho 11.12.2008 19:17

Почему бы :last-child не стать очевидным решением, если вам наплевать на поддержку IE? Это просто уродливо ИМО ...

Jesse 07.09.2011 00:59

Что делать, если у меня есть стол с большим количеством <td>? Что, если я использую php для отображения данных в таблице из базы данных MySQL? Нужно ли мне помещать много td в CSS?

Mai 23.02.2015 05:15

Селектор :last-child должен это делать, но это не поддерживается ни в одной версии IE.

Боюсь, у вас нет выбора, кроме как использовать класс.

Вы заговорили слишком рано, видимо, там была хитрость, чтобы избежать использования класса =)

Albert 12.12.2008 01:33

Не совсем так,> IE8 поддерживает это, но пока еще не очень хорошо принят. Если вы можете жить без поддержки IE8 (с которой OP, похоже, все в порядке), это лучшее решение.

Jesse 07.09.2011 00:59

Немного устарело. Работает отлично!

dbrin 19.12.2013 23:49

Javascript - единственный жизнеспособный способ сделать это на стороне клиента (то есть CSS вам не поможет). В jQuery:

$("table td:last").css("border", "none");

С другой стороны, это нарушает модель контента / стиля / поведения.

Christopher Done 29.08.2009 14:39

использование jQuery для добавления имени класса, которое затем можно стилизовать с помощью CSS, является семантическим. например jQuery ('# корзина-итоговая таблица tfoot tr: last-child'). addClass ('последняя строка')

Jonathan Day 09.04.2012 05:07

вы можете использовать псевдокласс last-child

table tr td:last-child {
    border: none;
}

Это будет стилизовать только последний td. Он еще не полностью поддерживается, поэтому может быть неподходящим

Это стилизует последний столбец, а не строку.

ceejayoz 20.09.2011 21:38

Это то, что запросил OP, извините, если мое описание было немного неточным.

Neil Aitken 20.09.2011 22:18

Это не прямой ответ на ваш вопрос, но использование <tfoot> может помочь вам достичь того, что вам нужно, и, конечно же, вы можете стилизовать tfoot.

нет, не будет. он говорит о последней ЯЧЕЙКЕ, а не о последнем РЯДЕ.

nickf 12.12.2008 03:25

Если вы уже используете javascript, взгляните на jQuery. Он поддерживает независимый от браузера селектор «последний ребенок», и вы можете сделать что-то вроде этого.

$("td:last-child").css({border:"none"})

нет, last-child означает последний дочерний элемент родителя, поэтому мой селектор говорит: «Дайте мне последнего дочернего элемента в строке»

joshperry 19.09.2009 00:13

Спасибо, я использовал его, чтобы выделить строку Итого в таблице жирным шрифтом. Очень просто.

Rick 22.10.2009 18:56

Во многих случаях это работает отлично, но будьте осторожны, если вы меняете классы, помните, что это установит стиль для этого элемента один раз, и это свойство больше не будет динамически изменяться с изменениями классов CSS.

Nicole 23.02.2010 01:58

Я думаю, что Никф прав. Из того, что я тестировал, и из документации на api.jquery.com/last-child-selector.

Code Commander 09.12.2010 23:21

@Code, да думаю ты прав. Когда я изначально писал этот ответ, документация была немного двусмысленной.

joshperry 10.12.2010 00:09

Для IE, как насчет использования выражения CSS:

<style type = "text/css">
table td { 
  h: expression(this.style.border = (this == this.parentNode.lastChild ? 'none' : '1px solid #000' ) );
}
</style>

Вы можете использовать элемент col, как указано в HTML 4.0 (связь). Работает в любом браузере. Вы можете присвоить ему идентификатор, класс или встроенный стиль. Единственное предостережение в том, что это влияет на весь столбец во всех строках. Пример:

<table>
    <col />
    <col width = "50" />
    <col id = "anId" />
    <col class = "whatever" />
    <col style = "border:1px solid #000;" />
    <tbody>
        <tr>
            <td>One</td>
            <td>Two</td>
            <td>Three</td>
            <td>Four</td>
            <td>Five</td>
        </tr>
    </tbody>
</table>

Мой пример противоположен тому, что вы хотели сделать, но вы понимаете, о чем я :)

Darko Z 12.12.2008 00:42

Это код, который добавит границу для всех узлов и удалит границу для последнего узла (TD).

<style type = "text/css">
    body {  
        font-family:arial;font-size: 8pt;  
    }  
    table td{
        border-right: #666 1px solid
    }  

    table td {  
        h: expression(this.style.border = (this == this.parentNode.lastChild ? 'none' : 'border-right:  0px solid' ) );  
    }  
</style>
<table>
    <tr>
        <td>Home</td>
        <td>sunil</td>
        <td>Kumar</td>
        <td>Rayadurg</td>
        <td>Five</td>
        <td>Six</td>
    </tr>
</table>

Наслаждаться ...

Я хочу то же самое вместо границы, я хотел использовать изображения ... :-)

В jQuery при условии, что таблица создается статически или динамически до выполнения следующего:

$("table tr td:not(:last-child)").css({ "border-right":"1px solid #aaaaaa" });

Просто добавляет правую границу к каждой ячейке в строке таблицы, кроме последней ячейки.

Существует также другой подход ... и это будет работать для таблиц, которые не являются статическими ... в основном используйте <th> вместо <td> для этого столбца:

<style type = "text/css">
 table td { border: 1px solid black; }
 table th { border: 0px; }
<style>
<table>
  <tbody>
    <tr>
      <td>One</td>
      <td>Two</td>
      <td>Three</td>
      <td>Four</td>
      <th>Five</th>
    </tr>
    <tr>
      <td>One</td>
      <td>Two</td>
      <td>Three</td>
      <td>Four</td>
      <th>Five</th>
    </tr>
  </tbody>
</table>

Я тоже искал способ сделать это и обнаружил, что это может быть полезно другим людям:

#table td:last-of-type { border: none; }

Обратите внимание, что он также не поддерживается IE.

Вы можете использовать псевдокласс :last-of-type:

tr > td:last-of-type {
    /* styling here */
}

См. MDN для получения дополнительной информации и совместимости с различными браузерами. Ознакомьтесь с Рекомендации W3C CSS для получения дополнительной информации.

попробуйте с:

tr:last-child td:last-child{
    border:none;
    /*any other style*/
}

это повлияет только на самый последний элемент td в таблице, если он единственный (иначе вам просто нужно будет идентифицировать свою таблицу). Хотя это очень общий характер, и он будет адаптирован к последнему TD, если вы добавите больше контента в свою таблицу. Так что если это частный случай

td:nth-child(5){
    border:none;
}

должно хватить.

Пожалуйста, предоставьте дополнительную информацию и подробности того, как это решает вопрос. Это поможет OP и другим будущим поисковикам.

SnareChops 29.01.2016 03:39

Идеально. Очень помогает при стилизации адаптивных таблиц. tr: last-child td: last-child == последний tr в таблице, последний td в tr

André R. Kohl 18.08.2020 14:56

Вы можете использовать: last-of-type, чтобы поймать последний столбец вашей таблицы.

<style>
.table > tbody > tr > td:last-of-type {
    /* Give your style Here; */
}
</style>

Другие вопросы по теме