CSS для скрытия нескольких столбцов в таблице
У меня есть таблица, похожая на ту, что показана ниже на сайте SharePoint. Я не могу изменить таблицу, поскольку она генерируется динамически, но я могу добавить внешний CSS, чтобы переопределить ее стиль. Я должен показать только второй столбец и скрыть первый, третий и четвертый столбцы.
Псевдокласс для скрытия первого столбца -
table#student tr td:first-child { display: none; }
Пожалуйста, помогите мне с псевдоклассом или любым другим трюком, чтобы скрыть третий и четвертый столбец.
<table id="student">
<tr>
<td>Role</td>
<td>Merin</td>
<td>Nakarmi</td>
<td>30</td>
<tr>
<td>Role</td>
<td>Tchelen</td>
<td>Lilian</td>
<td>22</td>
</tr>
<tr>
<td>Role</td>
<td>Suraj</td>
<td>Shrestha</td>
<td>31</td>
</tr>
</table>
5 ответов:
CSS3:
table#student td { display: none; } table#student td:nth-child(2) { display: block; }
Используйте селектор
nth-child
, чтобы снять скрытие 2-го<td>
каждой строки, эффективно показывая 2-й столбец.
Можно использовать CSS3 :nth-child() селектор
td:nth-child(3), td:nth-child(4) { display: none }
Я удивлен, что никто не упомянул об общем селекторе братьев и сестер. (Подробнее здесь) Если вам нужно только показать второй столбец, я бы применил стиль
display: none;
к первой ячейке и ко всем ячейкам после Второй.
table#student td:first-child, table#student td:nth-child(2) ~ td { display: none; }
<table id="student"> <tr> <td>Role</td> <td>Merin</td> <td>Nakarmi</td> <td>30</td> <tr> <td>Role</td> <td>Tchelen</td> <td>Lilian</td> <td>22</td> </tr> <tr> <td>Role</td> <td>Suraj</td> <td>Shrestha</td> <td>31</td> </tr> </table>
Если вам по какой-то причине нужно поддерживать IE7 и IE8, вы можете заменить селектор
:nth-child()
на соседний селектор родственных элементов:table#student td:first-child, table#student td + td ~ td { display: none; }
Вот, пожалуйста.
CSS:
table#student tr td:first-child, table#student tr td:nth-child(3), table#student tr td:nth-child(4) { display: none; }
.hideFullColumn tr > .hidecol { display:none; }
Вы можете использовать .hideFullColumn в таблице и использовать .hidecol в теге, который вы хотите скрыть. Вам не нужно беспокоиться о td, так как они будут автоматически скрыты.
Псевдокласс хорош, но если у вас 50 столбцов и вам нужно скрыть 20, то вам придется повторить "td:nth-child(1),td:nth-child(2),....- 20 раз, помня об индексе. Но в этом случае вы можете добавить свое .hidecol класс по созданию th, так что вам не нужно пересматривать индекс.
Вы можете попробовать это и, пожалуйста, дайте мне знать, если это сработает.