Edit - Оригинальное название: Есть ли альтернативный способ достижения 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 был минимальным
- часть привлекательности, которую имеет для меня использование border-radius, - это постепенная деградация и прогрессивное улучшение. Используя border-radius для всех закругленных углов, я надеюсь, что в браузерах с поддержкой CSS3 будет постоянно округленный сайт, а в других - квадратный сайт (я смотрю на вас, IE).
Я знаю, что пытаться сделать это с помощью CSS3 сегодня может показаться ненужным, но у меня есть свои причины. Я также хотел бы отметить, что эта проблема является результатом спецификации w3c, а не плохой поддержки CSS3, поэтому любое решение будет по-прежнему актуальным и полезным, когда CSS3 получит более широкую поддержку.