Я хочу стилизовать последний 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», не имел границы, но, опять же, я не хочу использовать класс.
Я хочу, чтобы html оставался статичным и имел возможность изменять стиль без добавления кода или кучи классов и идентификаторов css.
Вы всегда можете просто поместить class = "last" на все последние ячейки и никогда не менять его, и использовать или не использовать его в соответствии с требованиями вашего дизайна.






Вы можете использовать относительные правила:
table td + td + td + td + td {
border: none;
}
Это работает, только если количество столбцов не определяется во время выполнения.
хех - тебе нравится такой подход!
У него есть свои применения, особенно если вы, как этот парень, не хотите слишком сильно менять HTML для поддержки CSS.
Это работает! Спасибо. Да, HTML статичен, и я не хочу добавлять кучу классов css или идентификаторов для стилизации ячеек.
@vchoke: если вас устраивает решение sblundy, не забудьте принять его.
Забавный трюк, но он менее гибкий, чем: last-child, и не работает лучше в IE ... Все же стоит запомнить!
Почему бы :last-child не стать очевидным решением, если вам наплевать на поддержку IE? Это просто уродливо ИМО ...
Что делать, если у меня есть стол с большим количеством <td>? Что, если я использую php для отображения данных в таблице из базы данных MySQL? Нужно ли мне помещать много td в CSS?
Селектор :last-child должен это делать, но это не поддерживается ни в одной версии IE.
Боюсь, у вас нет выбора, кроме как использовать класс.
Вы заговорили слишком рано, видимо, там была хитрость, чтобы избежать использования класса =)
Не совсем так,> IE8 поддерживает это, но пока еще не очень хорошо принят. Если вы можете жить без поддержки IE8 (с которой OP, похоже, все в порядке), это лучшее решение.
Немного устарело. Работает отлично!
Javascript - единственный жизнеспособный способ сделать это на стороне клиента (то есть CSS вам не поможет). В jQuery:
$("table td:last").css("border", "none");
С другой стороны, это нарушает модель контента / стиля / поведения.
использование jQuery для добавления имени класса, которое затем можно стилизовать с помощью CSS, является семантическим. например jQuery ('# корзина-итоговая таблица tfoot tr: last-child'). addClass ('последняя строка')
вы можете использовать псевдокласс last-child
table tr td:last-child {
border: none;
}
Это будет стилизовать только последний td. Он еще не полностью поддерживается, поэтому может быть неподходящим
Это стилизует последний столбец, а не строку.
Это то, что запросил OP, извините, если мое описание было немного неточным.
Это не прямой ответ на ваш вопрос, но использование <tfoot> может помочь вам достичь того, что вам нужно, и, конечно же, вы можете стилизовать tfoot.
нет, не будет. он говорит о последней ЯЧЕЙКЕ, а не о последнем РЯДЕ.
Если вы уже используете javascript, взгляните на jQuery. Он поддерживает независимый от браузера селектор «последний ребенок», и вы можете сделать что-то вроде этого.
$("td:last-child").css({border:"none"})
нет, last-child означает последний дочерний элемент родителя, поэтому мой селектор говорит: «Дайте мне последнего дочернего элемента в строке»
Спасибо, я использовал его, чтобы выделить строку Итого в таблице жирным шрифтом. Очень просто.
Во многих случаях это работает отлично, но будьте осторожны, если вы меняете классы, помните, что это установит стиль для этого элемента один раз, и это свойство больше не будет динамически изменяться с изменениями классов CSS.
Я думаю, что Никф прав. Из того, что я тестировал, и из документации на api.jquery.com/last-child-selector.
@Code, да думаю ты прав. Когда я изначально писал этот ответ, документация была немного двусмысленной.
Для 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>
Мой пример противоположен тому, что вы хотели сделать, но вы понимаете, о чем я :)
Это код, который добавит границу для всех узлов и удалит границу для последнего узла (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 и другим будущим поисковикам.
Идеально. Очень помогает при стилизации адаптивных таблиц. tr: last-child td: last-child == последний tr в таблице, последний td в tr
Вы можете использовать: last-of-type, чтобы поймать последний столбец вашей таблицы.
<style>
.table > tbody > tr > td:last-of-type {
/* Give your style Here; */
}
</style>
По какой причине вы не хотите использовать класс?