Изменить - Исходное название: Есть ли альтернативный способ достижения border-collapse:collapse
в CSS
(для того, чтобы иметь свернутую округленную таблицу углов)?
Так как оказывается, что простое ограничение границ таблицы не решает проблему с корнем, я обновил заголовок, чтобы лучше отразить обсуждение.
Я пытаюсь создать таблицу с закругленными углами, используя свойство CSS3
border-radius
. Стили таблицы, которые я использую, выглядят примерно так:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
Вот проблема. Я также хочу установить свойство border-collapse:collapse
, и когда это установлено, border-radius
перестает работать. Есть ли способ, основанный на CSS, я могу получить тот же эффект, что и border-collapse:collapse
, фактически не используя его?
редактирует:
Я сделал простую страницу, чтобы продемонстрировать проблему здесь (только Firefox/Safari).
Похоже, что большая часть проблемы заключается в том, что установка таблицы с закругленными углами не влияет на углы угловых элементов td
. Если таблица была всего одного цвета, это не было бы проблемой, так как я мог просто сделать верхние и нижние углы td
округленными для первой и последней строки соответственно. Тем не менее, я использую разные цвета фона для таблицы, чтобы различать заголовки и полосы, поэтому внутренние элементы td
также отображали свои закругленные углы.
Резюме предлагаемых решений:
Окружение стола другим элементом с круглыми углами не работает, потому что квадратные углы стола "истекают".
Задание ширины рамки до 0 не сворачивает таблицу.
Внизу td
углы по-прежнему квадрат после установки ячейки в ноль.
Использование JavaScript вместо этого позволяет избежать проблемы.
Возможные решения:
Таблицы генерируются в PHP, поэтому я могу просто применить другой класс к каждому из внешних th/tds и пометить каждый угол отдельно. Я бы предпочел не делать этого, поскольку он не очень изящный и немного боль для применения к нескольким таблицам, поэтому, пожалуйста, продолжайте предлагать предложения.
Возможное решение 2 - использовать JavaScript (jQuery, в частности) для создания углов. Это решение также работает, но все же не совсем то, что я ищу (я знаю, что я придирчив). У меня есть две оговорки:
- Это очень легкий сайт, и я бы хотел, чтобы JavaScript был максимально минимальным
- часть обращения, использующего радиус границы, для меня - грациозная деградация и прогрессивное совершенствование. Используя граничный радиус для всех закругленных углов, я надеюсь иметь последовательно округленный сайт в браузерах с поддержкой CSS3 и последовательно квадратный сайт в других (я смотрю на вас, IE).
Я знаю, что попытка сделать это с помощью CSS3 сегодня может показаться ненужной, но у меня есть причины. Я также хотел бы отметить, что эта проблема является результатом спецификации w3c, а не плохой поддержки CSS3, поэтому любое решение будет по-прежнему актуальным и полезным, когда CSS3 будет иметь более широкую поддержку.