#html #css #вёрстка
Как сделать накладывающиеся границы в CSS? Сайт пример ( окно навигации ). Нужно, чтобы border был на всех элементах по 2px, но так как элементы расположены вплотную друг к другу, получается, что между ними 4px: * { margin: 0; padding: 0; } body { padding: 50px 100px; background-color: #262626; } nav { width: 100%; height: 100px; display: flex; } .div1, .div3 { flex-basis: 100px; height: 100px; background-color: #44B3E2; margin: 0; padding: 0; flex-direction: row; } .div2 { flex: 1; height: 100px; background-color: #5EE244; flex-direction: row; } .div1, .div2, .div3 { border: 2px solid white; } .div1:hover, .div2:hover, .div3:hover { border-color: red; }
Ответы
Ответ 1
nav { display: flex; width: 400px; margin: 0 auto; height: 100px; border: 2px solid #3e3e3e; } .div1, .div2, .div3 { position: relative; flex-grow: 1; } .div1, .div2 { border-right: 2px solid #3e3e3e; } .div1:before, .div2:before, .div3:before { content: ''; position: absolute; top: -2px; right: -2px; bottom: -2px; left: -2px; z-index: 1; border: 2px solid transparent; } .div1:hover:before, .div2:hover:before, .div3:hover:before { border: 2px solid #e6c87c; } UPD - пояснение: Проблема в том, что Вы делаете видимые границы каждому элементу со всех сторон. Что делает код выше: Для родителя nav ставится граница в 2px. Чтобы не создавать лишние границы ставятся только границы справа, только блокам .div1 и .div2. Для детей (.div1, .div2, .div3) создается псевдоэлемент :before с размерами -2px с каждой стороны и невидимой границей в 2px, которая становится видимой (устанавливается цвет) при наведении, т.е.: .div1:hover:before, .div2:hover:before, .div3:hover:before { border: 2px solid #e6c87c; }Ответ 2
Может быть так: для родителя - border-collapse: collapse; для элементов - display: table-cell;
Комментариев нет:
Отправить комментарий