Як я можу вибрати всі tr
елементи, крім першого, tr
у таблиці з CSS?
Я спробував скористатися цим методом, але виявив, що він не працює.
<tr>
та інший клас для інших.
Як я можу вибрати всі tr
елементи, крім першого, tr
у таблиці з CSS?
Я спробував скористатися цим методом, але виявив, що він не працює.
<tr>
та інший клас для інших.
Відповіді:
Додавши клас до першого tr
чи наступного tr
s. Не існує способу вибору рядків, які потрібно вибрати лише за допомогою CSS.
Однак якщо ви не переймаєтесь Internet Explorer 6, 7 або 8:
tr:not(:first-child) {
color: red;
}
tr:not(:first-of-type)
на потенційне рішення, якщо ви шукаєте першу інстанцію конкретного селектора, а не першу узагальнену дитину.
Я здивований, що ніхто не згадав про використання комбінаторів братів і сестер, які підтримуються IE7 та пізнішими версіями:
tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */
Вони обидва функціонують точно так само (у будь-якому випадку в HTML-таблицях), як:
tr:not(:first-child)
elem + elem
- це чудове загальне рішення, коли елементи, на які потрібно націлити, - не єдині діти. Наприклад, якщо за <h2>
кодом дотримується декілька <p>
тегів, то перший <p>
не є в цьому випадку першою дитиною.
ідеальне рішення, але не підтримується в IE
tr:not(:first-child) {css}
другим рішенням буде стилювання всіх tr, а потім перезапис css для першої дитини:
tr {css}
tr:first-child {override css above}
звучить як "перший рядок", про який ви говорите, - це ваш заголовок таблиці - тому ви дійсно повинні подумати про використання thead
та tbody
розмітку ( натисніть тут ), що призведе до "кращої" розмітки (семантично правильної, корисної для таких речей, як екранізатори ) та простіші можливості для перегляду css для веб-переглядача ( table thead ... { ... }
)
Хоча на запитання вже є гідна відповідь, я просто хочу наголосити, що :first-child
тег стосується типу предмета, який представляє дітей.
Наприклад, у коді:
<div id"someDiv">
<input id="someInput1" />
<input id="someInput2" />
<input id="someInput2" />
</div
Якщо ви хочете вплинути лише на два інші елементи з запасом, але не на перший, ви зробите це:
#someDiv > input {
margin-top: 20px;
}
#someDiv > input:first-child{
margin-top: 0px;
}
тобто, оскільки input
s - діти, ви б розмістили first-child
на вхідній частині селектора.
Вибачте, я знаю, що це старе, але чому б не стилювати всі елементи tr так, як ви хочете, всі, окрім першого, і використовувати клас psuedo: first-child, коли ви скасовуєте те, що ви вказали для всіх елементів tr.
Краще описано на цьому прикладі:
tr {
border-top: 1px solid;
}
tr:first-child {
border-top: none;
}
/ Патрік
Ще один варіант:
tr:nth-child(n + 2) {
/* properties */
}
Можливо, хтось може принести користь, нижче, що я використав
ol li:not(:first-child) {
background: black;
color: white;
}
Ви також можете використовувати селектор класів псевдо у своєму CSS таким чином:
.desc:not(:first-child) {
display: none;
}
Це не застосовуватиме клас до першого елемента з класом .desc.
Ось JSFiddle з прикладом: http://jsfiddle.net/YYTFT/ , і це хороше джерело для пояснення селекторів класів псевдо: http://css-tricks.com/pseudo-class-selectors/
first-child
ігнорує заняття.
Ви можете створити клас і використовувати його, коли визначите всі ваші майбутні, які ви хочете (або не хочете) вибирати CSS.
Це було б зроблено письмово
<tr class="unselected">
а потім у вашому css, що містить рядки (і використовує команду вирівнювання тексту як приклад):
unselected {
text-align:center;
}
selected {
text-align:right;
}