CSS-трюк для отображения границы таблицы и ячеек, когда ячейки не пустые, и отсутствия границы в противном случае

Есть ли способ убедиться, что таблица и содержащиеся в ней ячейки имеют границу только тогда, когда ячейки не пусты? Если все ячейки таблицы пусты, то границы не должно быть видно.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
3 200
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Дайте пустым ячейкам одно имя класса, а непустым - другое. Один класс определяет границу, другой - без нее.

Не контролируйте HTML. Просто контролируйте CSS, и класс применяется к таблице.

SharePoint Newbie 26.11.2008 22:14

Насколько мне известно, это не входит в возможности CSS, лучший вариант, который я могу придумать, - это динамическое применение классов либо через серверный код при заполнении данных, либо через JavaScript после загрузки страницы в браузер.

Ответ принят как подходящий

См. Свойство CSS пустые ячейки.

Вы, должно быть, делаете что-то не так. См. Тестовый пример: liranuna.com/strager/empty-cells.html Убедитесь, что вы применяете свойство empty-cells к вашим td и th, а не к самой таблице.

strager 26.11.2008 22:23

Но он говорит о самом столе. Удалите весь контент из вашего тестового примера, и вы увидите маленький красный прямоугольник. Я понимаю, что спрашивающий ничего не хотел видеть: «Если все ячейки таблицы пусты, то границы не должно быть видно».

buti-oxa 26.11.2008 23:19

Ах, я неправильно понял проблему. Не совсем уверен, как возникнет эта ситуация; таблицы должны, по крайней мере, иметь заголовки и тому подобное, почти во всех случаях и DATA.

strager 26.11.2008 23:28

Похоже, что свойство пустых ячеек, предложенное Strager, может помочь. Если он не делает то, что вам нужно, я бы посмотрел на использование какой-нибудь умной библиотеки javascript, например jQuery. Вероятно, вы можете установить ловушку для обновления стиля границы ячейки на getBorderStyle (this), когда содержимое этой ячейки изменяется.

Посмотрите на ловушку jquery "change" здесь: http://docs.jquery.com/Events/change Если вы выберете все свои ячейки (что вы можете сделать с помощью селектора css) и добавите ловушку изменения для запуска какой-то написанной вами функции updateBorder () или какой-то другой, у вас все должно быть хорошо. Я предполагаю, что это будет примерно так:

$("table.someClass td").change(function() { updateBorder(this) })

Отрисовка границ ячеек частично зависит от того, сворачиваете ли вы границы или нет. Если они не свернуты, граница по умолчанию не отображается, если нет содержимого ячейки. Это можно переключить с помощью свойства CSS пустые ячейки.

Если вы сворачиваете границы, вы теряете возможность управлять отображением границ в зависимости от наличия содержимого ячейки.

Единственный способ сделать это с помощью чистого CSS полагается на очень современный браузер. Для этого вам нужно будет использовать расширенные селекторы CSS. Например, вы можете использовать tr: empty, чтобы найти ячейки без дочерних элементов в них, для обычного текста вам нужно будет сделать еще кое-что.

К сожалению, они существуют только в CSS3, поэтому, если вы не можете использовать javascript или коснуться разметки, вы сможете выполнить это только в самых последних браузерах.

Чтобы узнать больше о селекторах CSS3 Кликните сюда

Другие вопросы по теме