Як приховати стовпці в таблиці HTML?


93

Я створив таблицю в ASPX. Я хочу приховати один із стовпців на основі вимоги, але немає атрибута, як visibleу побудові таблиці HTML. Як я можу вирішити свою проблему?

Відповіді:


171

Для цього потрібно використовувати Таблицю стилів.

<td style="display:none;">

1
як щодо лише першої колосенії з використанням css html
office 302

як мені додати до нього стилю, коли я створюю таблицю за допомогою JavaScript-сценарію (td);
офіс 302

1
@ office302 Застосувати цей стиль лише до першого td? Або ви хочете використовувати лише CSS - Це ви можете зробити щось подібнеtd:first-child { display:none; }
Anuraj

@Anuraj слід зазначити, що: підтримується перша дитина тощо> IE 11 та Edge, у будь-якому випадку хороший
Віталій Терзієв

88

Ви можете використовувати nth-childселектор CSS, щоб приховати цілий стовпець:

#myTable tr > *:nth-child(2) {
    display: none;
}

Це працює за умови, що комірка стовпця N (будь то a thабоtd ) завжди дочірній елемент Nth його рядки.

Ось демонстрація.


Якщо ви хочете, щоб номер стовпця був динамічним, ви можете зробити це, використовуючи querySelectorAllбудь-яку структуру, що представляє подібну функціональність, як jQueryтут:

$('#myTable tr > *:nth-child(2)').hide();

Демонстрація з jQuery

(Рішення jQuery також працює на застарілих браузерах, які не підтримуютьnth-child ).


1
Це може мати шкідливі побічні ефекти, див. Мою відповідь нижче щодо вдосконаленого рішення.
Рік Сміт,

@RickSmith Хороший момент. Оновив мій пост, щоб уникнути проблеми іншим способом (за допомогою дочірнього селектора).
Кос

дитячий селектор, безумовно, кращий. Хороша відповідь.
Рік Сміт,

Хороше рішення, але потрібно трохи більше розглянути справу colspan.
Cinoss

30

Ви також можете використовувати:

<td style="visibility:hidden;">
or
<td style="visibility:collapse;">

Різниця між ними, що "прихований" приховує клітинку, але вона утримує простір, але при "згортанні" простір не утримується як дисплей: немає. Це важливо при приховуванні цілого стовпця або рядка.


1
Я виявив, що для тегів div також згортання міститиме простір. Для тегів div вам довелося б використовувати display: none; для того, щоб по-справжньому зруйнуватися і не утримувати простір.
Дов Міллер

5
visibility: collapseрозроблений спеціально для обробки відображення / приховування комірок, оскільки існує різниця при перерахунку ширини / висоти комірки між цим та display:none. Див. Developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
SteveB

28

Відповідь Коса майже правильна, але може мати шкідливі побічні ефекти. Це правильніше:

#myTable tr td:nth-child(1), #myTable th:nth-child(1) {
    display: none;
}

CSS (каскадні таблиці стилів) буде каскадувати атрибути для всіх своїх дочірніх елементів. Це означає, що *:nth-child(1)буде приховано перший tdз кожного tr І прихований перший елемент усіх tdдітей. Якщо хтось із вашихtd є щось на кшталт кнопок, піктограм, входів чи виділень, перший з них буде прихований (ого!).

Навіть якщо ви цього зараз не робите немає речей, які будуть приховані, уявіть своє розчарування в дорозі, якщо вам потрібно додати. Не карайте свого майбутнього так, це буде болем для налагодження!

Моя відповідь буде тільки приховати перший tdі thна все trв #myTableцілості ваших інші елементи безпеки.



6

Ви також можете приховати стовпець, використовуючи елемент col https://developer.mozilla.org/en/docs/Web/HTML/Element/col

Щоб приховати другий стовпець у таблиці:

<table>
  <col />
  <col style="visibility:collapse"/>
  <tr><td>visible</td><td>hidden</td></tr>
  <tr><td>visible</td><td>hidden</td></tr>

Відомі проблеми: це не працюватиме в Google Chrome. Будь ласка, проголосуйте за помилку на https://bugs.chromium.org/p/chromium/issues/detail?id=174167


2

<style>
.hideFullColumn tr > .hidecol
{
    display:none;
}
</style>

використовуйте .hideFullColumn у таблиці та .hidecol у th. Вам не потрібно додавати клас у td окремо, оскільки це буде проблемою, оскільки індекс може не мати на увазі кожен td.


1

Ви також можете робити те, що vs dev пропонує програмно, призначивши стиль за допомогою Javascript, перебираючи стовпці та встановлюючи елемент td у певному індексі, щоб мати цей стиль.


0
<!doctype html>
<html lang="en">
<head>
<style id="myStyleSheet">
...
</style>

var column = 3;
var styleSheet = document.getElementById("myStyleSheet").sheet;
var rule = "table  tr td:nth-child("+ column +"),table th:nth-child("+ column +") 
{display: none}";
styleSheet.insertRule(rule);

2
Сподіваюся, це вирішить проблему, але, будь ласка, додайте до нього пояснення свого коду, щоб користувач отримав ідеальне розуміння того, чого він / вона насправді хоче.
Джайміл Патель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.