Border collapse для div: css — How to make borders collapse (on a div)?

Одна рамка между блоками CSS

04.02.2020

15870

В закладки

Несколько вариантов как схлопнуть (объединить) границы у рядом стоящих блоков.

1

C помощью свойств flex можно легко выстроить блоки одну линию или сетку, при этом у родительского элемента border указывается сверху и слева , а у элементов справа и снизу.

Если в конце остается пустое пространство, то последний элемент растянется на всю ширину:

<ul>
	<li>Блок №1</li>
	<li>Блок №2</li>
	<li>Блок №3</li>
	<li>Блок №4</li>
	<li>Блок №5</li>
	<li>Блок №6</li>
	<li>Блок №7</li>
</ul>

HTML

.block-list {
	display: flex;
	flex-wrap: wrap;
	list-style: none;
	padding: 0;
	margin: 0;
	border-top: 3px solid #2ec548;
	border-left: 3px solid #2ec548;
}
.
block-list li { flex: 1 0 235px; height: 120px; border-right: 3px solid #2ec548; border-bottom: 3px solid #2ec548; box-sizing: border-box; }

CSS

Результат:

2

Старый метод – у блоков с float: left или display: inline-block сделать отрицательный margin чтобы рамки наложились друг на друга, а у родителя эти отступы компенсировать с помощью padding.

Float заметны

<ul>
	<li>Блок №1</li>
	<li>Блок №2</li>
	<li>Блок №3</li>
	<li>Блок №4</li>
	<li>Блок №5</li>
	<li>Блок №6</li>
	<li>Блок №7</li>
</ul>

HTML

.block-list {
	display: block;
	overflow: hidden;
	list-style: none;
	padding: 3px 0 0 3px;
}
.block-list li {
	box-sizing: border-box;
	float: left;
	margin: -3px -3px 0 0;    
	width: 235px;
	height: 120px;
	border: 3px solid #84a1f3;
}

CSS

Результат:

Строчно-блочные элементы

Всё тоже самое как и в случаи с float, но дополнительно у родителя требуется установить font-size: 0, для удаления отступов.

<ul>
	<li>Блок №1</li>
	<li>Блок №2</li>
	<li>Блок №3</li>
	<li>Блок №4</li>
	<li>Блок №5</li>
	<li>Блок №6</li>
	<li>Блок №7</li>
</ul>

HTML

.block-list {
	display: block;
	list-style: none;
	padding: 3px 0 0 3px;
	font-size: 0;
}
.block-list li {
	box-sizing: border-box;
	display: inline-block;
	margin: -3px -3px 0 0;    
	width: 235px;
	height: 120px;
	border: 3px solid #936ab9;
	vertical-align: top;
	font-size: 24px;
}

CSS

Результат:

3

У таблиц есть свойство border-collapse, которое задает правило как отображать рамку между ячейками. Но вёрстку таблицами делать нельзя, поэтому на помощь приходит display table. В таком случаи меняется html-разметка:

<div>
	<ul>
		<li>Блок №1</li>
		<li>Блок №2</li>
		<li>Блок №3</li>
	</ul>
	<ul>
		<li>Блок №4</li>
		<li>Блок №5</li>
		<li>Блок №6</li>
	</ul>
	<ul>
		<li>Блок №7</li>
	</ul>
</div>

HTML

. block-list {
	display: table;
	border-collapse: collapse; 
}
.block-list ul {
	display: table-row;
}
.block-list li {
	display: table-cell;	
	box-sizing: border-box;
	width: 235px;
	height: 120px;
	border: 3px solid #b96a6a;
}

CSS

Результат:

04.02.2020

15870

#Border #CSS #HTML

В закладки

Другие публикации

CSS display table

CSS-свойство display table и другие, делают вывод группы элементов подобно таблице, но с ограничением – объединения ячеек colspan и rowspan не поддерживаются.

Сброс стилей (CSS reset)

Цель сброса стилей состоит в том, чтобы уменьшить разность отступов, размеров шрифтов заголовков и т.д. заданных по умолчанию в разных браузерах.

Текст в три колонки

Примеры, как вывести текст в три колонки одинаковой ширины и отступом между ними с помощью разных CSS-свойств.

Текст в две колонки

Несколько примеров, как вывести текст в две колонки одинаковой ширины и отступом между ними.

border-right-style | WebReference

Устанавливает стиль границы справа от элемента.

Краткая информация

Значение по умолчаниюНет
НаследуетсяНет
ПрименяетсяКо всем элементам
АнимируетсяНет

Синтаксис

border-right-style: none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset
Синтаксис
ОписаниеПример
<тип>Указывает тип значения.<размер>
A && B
Значения должны выводиться в указанном порядке.<размер> && <цвет>
A | BУказывает, что надо выбрать только одно значение из предложенных (A или B).normal | small-caps
A || BКаждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке.width || count
[ ]Группирует значения.[ crop || cross ]
*Повторять ноль или больше раз.[,<время>]*
+Повторять один или больше раз.<число>+
?Указанный тип, слово или группа не является обязательным.inset?
{A, B}Повторять не менее A, но не более B раз.<радиус>{1,4}
#Повторять один или больше раз через запятую.<время>#

Значения

none
Линия не отображается и значение её толщины обнуляется.
hidden
Имеет тот же эффект, что и none за исключением применения border-right-style к ячейкам таблицы, у которой значение свойства border-collapse установлено как collapse. В этом случае правая граница в ячейке не будет отображаться вообще.
dotted
Линия состоящая из набора точек.
dashed
Пунктирная линия, состоящая из серии коротких отрезков.
solid
Сплошная линия.
double
Двойная линия.
groove
Создаёт эффект вдавленной линии.
ridge
Создаёт эффект рельефной линии.
inset
Псевдотрёхмерная линия.
outset
Псевдотрёхмерная линия.

Вид указанных стилей представлен на рис. 1.

Рис.1. Стили границ

Песочница

Винни-Пух был всегда не прочь немного подкрепиться, в особенности часов в одиннадцать утра, потому что в это время завтрак уже давно окончился, а обед ещё и не думал начинаться. И, конечно, он страшно обрадовался, увидев, что Кролик достаёт чашки и тарелки.

none hidden dotted dashed solid double groove ridge inset outset

div {
  padding: 10px; 
  border: 5px #fc0;
  border-right-style: {{ playgroundValue }};
}

Пример

<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>border-right-style</title> <style> . line { border-right-color: #ef40b0; /* Цвет линии справа */ border-right-style: dotted; /* Стиль линии */ border-right-width: 3px; /* Толщина линии */ border-left-color: #ef40b0; /* Цвет линии слева */ border-left-style: dotted; /* Стиль линии */ border-left-width: 3px; /* Толщина линии */ padding: 0 10px; /* Расстояние между линией и текстом */ margin: 0 50px; /* Отступы справа и слева */ } </style> </head> <body> <div> Очевидно, что контрапункт контрастных фактур выстраивает громкостнoй прогрессийный период.  </div> </body> </html>

Результат данного примера показан на рис. 2.

Рис. 2. Применение свойства border-right-style

Объектная модель

Объект.style.borderRightStyle

Примечание

Браузер Internet Explorer до версии 6.0 включительно при толщине границы 1px отображает dotted как dashed. При толщине 2px и выше значение dotted работает корректно.

Эта ошибка исправлена в IE7, но только для всех границ толщиной 1px. Если одна из границ блока имеет толщину 2px и выше, то в IE7 значение dotted превращается в dashed.

Стиль границы в разных браузерах может несколько различаться при использовании значений groove, ridge, inset или outset.

Спецификация

СпецификацияСтатус
CSS Backgrounds and Borders Module Level 3Возможная рекомендация
CSS Level 2 (Revision 1)Рекомендация
Спецификация

Каждая спецификация проходит несколько стадий одобрения.

  • Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
  • Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
  • Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
  • Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
  • Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
  • Draft (Черновик спецификации) — первая черновая версия стандарта.

Браузеры

471213.511
1161
Браузеры

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.

Границы

См. также

  • border-bottom-style
  • border-left-style
  • border-style
  • border-top-style

css — Как свернуть границы (на div)?

спросил

Изменено 4 месяца назад

Просмотрено 147 тысяч раз

Предположим, у меня есть разметка вида: http://jsfiddle.net/R8eCr/1/

 
<дел> <дел> <дел> <дел>
<дел> <дел> <дел> <дел>
<дел> <дел> <дел> <дел>
. ..

Затем CSS

 .container {
    дисплей: таблица;
    граница коллапса: коллапс;
}
.столбец {
    плыть налево;
    переполнение: скрыто;
    ширина: 120 пикселей;
}
.клетка {
    отображение: таблица-ячейка;
    граница: 1px сплошной красный;
    ширина: 120 пикселей;
    высота: 20 пикселей;
    -webkit-box-sizing: рамка-бокс;
    -moz-box-sizing: рамка-бокс;
    box-sizing: граница-коробка;
}
 

У меня есть внешний div с дисплеем : table; граница коллапса: коллапс; и ячейки с отображением : таблица-ячейка почему они до сих пор не рушатся? Что мне здесь не хватает?

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

3

Используйте простое отрицательное поле вместо отображения : таблица .

Обновлено в скрипке JS-скрипт

 .container {
    стиль границы: сплошной;
    цвет границы: красный;
    ширина границы: 1px 0 0 1px;
    отображение: встроенный блок;
}
. столбец {
    плыть налево;
    переполнение: скрыто;
}
.клетка {
    граница: 1px сплошной красный;
    ширина: 120 пикселей;
    высота: 20 пикселей;
    поле: -1px 0 0 -1px;
}
.clearfix {
    ясно: оба;
}
 

0

Вместо границы используйте box-shadow :

 box-shadow:
    2px 0 0 0 #888,
    0 2px 0 0 #888,
    2px 2px 0 0 #888, /* Только для исправления угла */
    2px 0 0 0 #888 вставка,
    0 2px 0 0 #888 вставка;
 

Демо: http://codepen.io/Hawkun/pen/rsIEp

6

вот демонстрация

сначала вам нужно исправить синтаксическую ошибку ее

 отображение: таблица-ячейка;
 

не diaplay: table-cell;

 .контейнер {
    дисплей: таблица;
    граница коллапса: коллапс
}
.столбец {
    дисплей: таблица-строка;
}
.клетка {
    отображение: таблица-ячейка;
    граница: 1px сплошной красный;
    ширина: 120 пикселей;
    высота: 20 пикселей;
    -webkit-box-sizing: рамка-бокс;
    -moz-box-sizing: рамка-бокс;
    box-sizing: граница-коробка;
}
 

2

Почему бы не использовать схема ? Это то, что вам нужно:

 контур: 1 пиксель сплошной красный;
 

2

Вы также можете использовать отрицательные поля:

 . column {
  плыть налево;
  переполнение: скрыто;
  ширина: 120 пикселей;
}
.клетка {
  граница: 1px сплошной красный;
  ширина: 120 пикселей;
  высота: 20 пикселей;
  box-sizing: граница-коробка;
}
.cell: не (: первый ребенок) {
  верхнее поле: -1px;
}
.column: не (: первый ребенок) > .cell {
  поле слева: -1px;
} 
 <дел>
  <дел>
    <дел>
    <дел>
    <дел>