Як приховати стовпці в таблиці 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.