Как скрыть строку HTML-таблицы <tr>, чтобы она не занимала места?

105

Как я могу скрыть строку таблицы HTML, <tr>чтобы она не занимала места? У меня есть несколько <tr>Сета к style="display:none;", но они до сих пор влияют на размер таблицы и граница таблицы отражает скрытые строки.

MikeN
источник
2
Они постоянно показываются / скрываются? Или когда они спрятаны, действительно ли они ушли навсегда? Потому что вы можете использовать javascript, чтобы просто удалить строку, и это, вероятно, решит вашу проблему.
brettkelly
Я хочу начать их как скрытые, а затем показать их, если пользователь нажимает кнопку, чтобы «показать больше». Когда они скрыты, я не хочу, чтобы они занимали вертикальное пространство.
MikeN
У меня была такая же проблема, если вы удалите () строку с помощью javascript, она все равно займет некоторое место в IE6. no way around sucky IE
mkoryak
1
Какой тип документа вы используете? Я согласен с тем, что тот простой факт, что вы публикуете сообщение на SO с хорошим представителем, указывает на то, что вы, вероятно, знаете достаточно, чтобы избежать режима причуд ... но единственный глупый вопрос - это тот, который не задают. ... и, конечно, про волнистых попугаев.
Дэвид требует восстановить Монику на работе
1
Я только что тестировал в FF 3.5 и IE8 - оба скрывают строку с отображением: нет
17 из 26

Ответы:

37

Я действительно хотел бы увидеть стиль вашего ТАБЛИЦА. Например, «граница-коллапс»

Только предположение, но это может повлиять на то, как отображаются «скрытые» строки.

хорошо
источник
2
Спасибо! Это был недостающий стиль.
MikeN
100

Можете ли вы включить код? Я style="display:none;"все время добавляю в свою таблицу строки, и это эффективно скрывает всю строку.

Кальвин
источник
работал у меня. Я пытался установить видимость: скрыто раньше :(
Toadums
Еще есть интервал: /
fatuhoku
как предотвратить изменение ширины таблицы, когда вы показываете скрытые строки, я не хочу фиксировать макет таблицы
PirateApp
57

Вы можете установить, <tr id="result_tr" style="display: none;">а затем показать его с помощью JavaScript:

var result_style = document.getElementById('result_tr').style;
result_style.display = 'table-row';
Джамшид Хашими
источник
5
Прохладно! это то, что я искал :)
kmario23
4
Спасибо!! Спрятаться было легко, но вернуть их оказалось проблематично.
Джеффри Кейв, 05
это изменяет ширину таблицы, я делаю фильтр, в котором строки должны отображаться скрытыми в зависимости от того, что находится внутри окна поиска
PirateApp
13

Подумал, что я бы добавил к этому возможное другое решение:

<tr style='visibility:collapse'><td>stuff</td></tr>

Я тестировал его только в Chrome, но поместив это в <tr>скрытую строку ПЛЮС, все ячейки внутри строки по-прежнему влияют на ширину столбцов. Иногда я делаю дополнительную строку внизу таблицы с несколькими разделителями, которые делают так, чтобы определенные столбцы не могли быть меньше определенной ширины, а затем скрывать строку с помощью этого метода. (Я знаю, что вы должны иметь возможность делать это с другим CSS, но я никогда не заставлял это работать)

Опять же, я нахожусь в чисто хромированной среде, поэтому я понятия не имею, как это работает в других браузерах.

rgbfawed
источник
1
Это работает в большинстве современных браузеров, за заметным исключением Safari, который отображает пробелы, а не скрывает строку: developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten
8

Если display: none;не работает, как насчет настройки height: 0;? В сочетании с отрицательным полем (равным или превышающим высоту верхней и нижней границ, если таковые имеются) для дальнейшего удаления элемента? Не думаю, что position: absolute; top: 0; left: -4000px;это сработает, но, возможно, стоит попробовать.

С моей стороны, использование display: noneработает нормально.

Дэвид просит восстановить Монику
источник
4

Добавьте некоторые из следующих значений: line-height: 0px; font-size: 0px; height: 0px; margin: 0; padding: 0;

Я забываю, кто это делает. Думаю, для IE6 это line-height.

s_hewitt
источник
4

У меня была такая же проблема, я даже добавил style = "display: none" в каждую ячейку.

В итоге я использовал HTML-комментарии <!-- [HTML] -->

Саймон Хьюз
источник
4

Вы можете использовать стиль display: none с tr, чтобы скрыть, и он будет работать со всеми браузерами.

Шахид Сиддик
источник
3
var result_style = document.getElementById('result_tr').style;
result_style.display = '';

у меня отлично работает ..

Виньеш
источник
2

Это случилось со мной, и я был сбит с толку, почему. Затем я заметил, что если удалить какие-либо nbsp; у меня было внутри строк, значит, строки не занимали места.

Кевин Х
источник
-1

Вам нужно поставить изменение типа ввода на скрытый, все его функции работают, но он не отображается на странице

<input type="hidden" name="" id="" value="">

пока установлен тип ввода, вы можете изменить остальные. Удачи!!

user5431987
источник
-3

У меня была такая же проблема, и я решил ее. Ранее css был переполнен: скрытый; z-индекс: 999999;

Меняю его на overflow: visible;

Рэй Иннов
источник
-3

HTML:

<input type="checkbox" id="attraction" checked="checked" onchange="updateMap()">poi.attraction</input>

JavaScript:

function updateMap() {
     map.setOptions({'styles': getStyles() });
} 

function getStyles() {
    var styles = [];
    for (var i=0; i < types.length; i++) {
      var style = {};
      var type = types[i];
      var enabled = document.getElementById(type).checked;
      style['featureType'] = 'poi.' + type;
      style['elementType'] = 'labels';
      style['stylers'] = [{'visibility' : (enabled ? 'on' : 'off') }];
      styles.push(style);
    }
    return styles;
}
alpc
источник
-5

position: absolute удалит его из потока макета и должен решить вашу проблему - элемент останется в DOM, но не повлияет на другие.

user2415617
источник
fwiw Я думаю, что это отличное решение, если вы хотите скрыть столбец в определенных ситуациях. в дополнение добавлюopacity: 0
Grapho
-5

Вы можете установить

<table>
  <tr style="visibility: hidden"></tr>
</table> 
Рами Саид
источник
5
С visibility: hidden;элементом все равно будет место, вот в чем разница между visibilityи displayсвойствами
Дмитрий Пашкевич
Используй вот так<table><tr style="display: none;"><td></td></tr></table>
Сану