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 получит более широкую поддержку.
источник
Ответы:
Я понял. Вам просто нужно использовать некоторые специальные селекторы.
Проблема с закруглением углов таблицы заключалась в том, что элементы td также не округлялись. Вы можете решить это, сделав что-то вроде этого:
Теперь все вокруг правильно, за исключением того, что все еще есть проблема
border-collapse: collapse
сломать все.Обходной путь - добавить
border-spacing: 0
и оставить значениеborder-collapse: separate
по умолчанию на столе.источник
border-spacing: 0;
стиль границы?border-spacing: 0;
как Рамон рекомендую исправить это для меня. Убедитесь , что вы добавляетеborder-radius
иborder-spacing
стили к<th>
или<td>
элементам, а не<thead>
или<tbody>
.border-spacing: 0; border-collapse: separate;
Следующий метод работает (протестировано в Chrome), используя вместо «реальной» границы
box-shadow
спред1px
.источник
Если вам нужно решение только для CSS (не нужно устанавливать
cellspacing=0
в HTML), которое допускает границы в 1px (что вы не можете сделать сborder-spacing: 0
решением), я предпочитаю делать следующее:border-right
иborder-bottom
для ваших таблиц ячеек (td
иth
)border-top
border-left
first-child
иlast-child
селекторы, вокруг соответствующих углов для ячеек таблицы в четырех углах.Смотрите демо здесь.
Учитывая следующий HTML:
СМ. Пример ниже:
источник
table.Info
класс имеет к чему-либо?Вы пытались использовать
table{border-spacing: 0}
вместоtable{border-collapse: collapse}
???источник
border-spacing: 0
том, что у вас не может быть границы в 1 пиксель, верно? Потому что границы складываются, а не разрушаются.border-collapse: separate; border-spacing: 0; border-radius: 10px; overflow: hidden;
дал именно то, что мне было нужно.Вам, вероятно, придется поместить другой элемент вокруг стола и стилизовать его с закругленной границей.
В рабочем проекте указано, что
border-radius
не применяется к элементам таблицы, если значениеborder-collapse
равноcollapse
.источник
overflow:hidden;
Как сказал Ян, решение состоит в том, чтобы поместить таблицу в div и установить ее так:
С
overflow:hidden
квадратными углами не будет течь через div.источник
overflow: hidden
любым всплывающим окном / всплывающей подсказкой будет ограничено размерами оболочки.Насколько мне известно, единственный способ сделать это - изменить все ячейки следующим образом:
А потом чтобы получить границу снизу и обратно
:last-child
недопустимо в ie6, но если вы используете,border-radius
я предполагаю, что вам все равно.РЕДАКТИРОВАТЬ:
Если вы посмотрите на страницу примера, то, возможно, вам удастся обойти это с помощью пробелов и отступов.
Толстые серые границы, которые вы видите, на самом деле являются фоном таблицы (вы можете четко это увидеть, если измените цвет границы на красный). Если вы установите ячейку в ноль (или эквивалентно:),
td, th { margin:0; }
серые «границы» исчезнут.РЕДАКТИРОВАТЬ 2:
Я не могу найти способ сделать это только с одним столом. Если вы измените строку заголовка на вложенную таблицу, вы, возможно, сможете получить желаемый эффект, но это будет больше работы, а не динамический.
источник
Я попытался обойти, используя псевдоэлементы
:before
и:after
наthead th:first-child
иthead th:last-child
В сочетании с упаковкой стола
<div class="radius borderCCC">
смотри jsFiddle
Работает для меня в Chrome (13.0.782.215) Дайте мне знать, если это работает для вас в других браузерах.
источник
На самом деле вы можете добавить свой
table
внутриdiv
как оболочку. и затем назначьте этиCSS
коды оболочке:источник
Данные ответы работают только тогда, когда вокруг стола нет границ, что очень ограничивает!
У меня есть макрос в SASS для этого, который полностью поддерживает внешние и внутренние границы, достигая того же стиля, что и border-collapse: collapse, фактически не указывая его.
Протестировано в FF / IE8 / Safari / Chrome.
Дает хорошие округленные границы в чистом CSS во всех браузерах, но IE8 (изящно ухудшается), поскольку IE8 не поддерживает border-radius :(
Некоторые старые браузеры могут потребовать префиксы для работы с
border-radius
, так что не стесняйтесь , чтобы добавить эти префиксы в код по мере необходимости.Этот ответ не самый короткий - но он работает.
Чтобы применить этот стиль, просто измените
отметьте следующее:
и обязательно включите вышеуказанные стили CSS в ваш HTML.
Надеюсь это поможет.
источник
border-radius
.Для таблицы с полями и прокруткой используйте это (заменить переменные,
$
начальные тексты)Если вы используете
thead
,tfoot
илиth
просто заменитьtr:first-child
иtr-last-child
иtd
с ними.HTML:
источник
У меня такая же проблема. удалить
border-collapse
полностью и использовать:cellspacing="0" cellpadding="0"
в HTML-документе. пример:источник
Я просто написал сумасшедший набор CSS для этого, который, кажется, отлично работает:
источник
Решение с border-collapse: отдельно для таблицы и отображения: inline-table для tbody и thead.
источник
Я новичок в HTML и CSS, и я также искал решение для этого, вот что я нахожу.
Я пробую, угадайте, как это работает :)
источник
Нашел этот ответ после того, как столкнулся с той же проблемой, но обнаружил, что это довольно просто: просто дайте таблице переполнение: скрыто
Нет необходимости в элементе упаковки. Конечно, я не знаю, сработало ли бы это 7 лет назад, когда вопрос был задан изначально, но сейчас это работает.
источник
Стол с закругленными углами и с окаймленными ячейками. Использование решения @Ramon Tayag .
Ключ должен использовать,
border-spacing: 0
как он указывает.Решение с использованием SCSS .
источник
Я начал экспериментировать с «дисплей» , и я обнаружил , что:
border-radius
,border
,margin
,padding
, вtable
отображаются:Например
Но нам нужно установить
width
каждый столбецисточник
Вот недавний пример того, как реализовать таблицу с закругленными углами от http://medialoot.com/preview/css-ui-kit/demo.html . Он основан на специальных селекторах, предложенных Джоэлем Поттером выше. Как видите, он также включает в себя магию, чтобы сделать IE немного счастливее. Он включает несколько дополнительных стилей для чередования цвета строк:
источник
Вот способ:
Или
источник
Я всегда так делаю, используя Sass
источник
border-collapse: collapse
включенным.border-collapse: collapse
. Прости еще раз, я подожду твоего обновления.Наилучшее решение на данный момент исходит от вашего собственного решения и выглядит так:
источник
Border-radius теперь официально поддерживается. Итак, во всех приведенных выше примерах вы можете удалить префикс «-moz-».
Другой трюк заключается в использовании того же цвета для верхнего и нижнего рядов, что и ваша граница. Все три цвета одинаковы, он сливается и выглядит как идеально округленный стол, хотя и не выглядит физически.
источник