Треугольники на концах в header меню на CSS

185
21 ноября 2018, 08:00

Уважаемые коллеги. Подскажите как сделать такие концы меню в хедере. Элементы при :hover должны менять бэкграунд и добавляться border слева и справа. При наведении на крайние элементы списка треугольники тоже должны подсвечиваться. а сама менюшка сделана фиксированной(просто для инфы). Подскажите как реализовать такие треугольнички и что ВАЖНО - у них есть border

Answer 1

Пример

*, 
*:before, 
*:after { 
  box-sizing: border-box; 
} 
 
* { 
  margin: 0; 
  padding: 0; 
} 
 
body { 
  background: #000; 
} 
 
.navbar {} 
 
.navbar__menu { 
  margin: 15px auto; 
  background: #fff; 
  display: flex; 
  align-items: center; 
  justify-content: space-between; 
  height: 70px; 
  max-width: 700px; 
  border-top: 2px solid green; 
  border-bottom: 2px solid green; 
} 
 
.navbar__item { 
  list-style: none; 
  height: 100%; 
  width: 25%; 
} 
 
.navbar__link { 
  padding-left: 15px; 
  padding-right: 15px; 
  color: #000; 
  position: relative; 
  height: 100%; 
  display: flex; 
  align-items: center; 
  justify-content: center; 
} 
 
.navbar__item:first-of-type .navbar__link:before, 
.navbar__item:first-of-type .navbar__link:after, 
.navbar__item:last-of-type .navbar__link:before, 
.navbar__item:last-of-type .navbar__link:after { 
  content: ''; 
  position: absolute; 
  top: 0; 
  width: 0; 
  height: 0; 
  border-style: solid; 
} 
 
.navbar__item:first-of-type .navbar__link:before, 
.navbar__item:first-of-type .navbar__link:after { 
  right: 100%; 
} 
 
.navbar__item:first-of-type .navbar__link:before { 
  top: -2px; 
  border-width: 0 70px 70px 0; 
  border-color: transparent green transparent transparent; 
} 
 
.navbar__item:first-of-type .navbar__link:after { 
  border-width: 0 66px 66px 0; 
  border-color: transparent #fff transparent transparent; 
} 
 
.navbar__item:last-of-type .navbar__link:before, 
.navbar__item:last-of-type .navbar__link:after { 
  left: 100%; 
} 
 
.navbar__item:last-of-type .navbar__link:before { 
  top: -2px; 
  border-width: 70px 70px 0 0; 
  border-color: green transparent transparent transparent; 
} 
 
.navbar__item:last-of-type .navbar__link:after { 
  border-width: 66px 66px 0 0; 
  border-color: #fff transparent transparent transparent; 
} 
 
.navbar__item:hover .navbar__link { 
  background: green; 
  color: #fff; 
} 
 
.navbar__item:hover:first-of-type .navbar__link:after, 
.navbar__item:hover:last-of-type .navbar__link:after { 
  opacity: 0; 
}
<nav class="navbar"> 
  <ul class="navbar__menu"> 
    <li class="navbar__item"><a href="#" class="navbar__link">Link</a></li> 
    <li class="navbar__item"><a href="#" class="navbar__link">Link</a></li> 
    <li class="navbar__item"><a href="#" class="navbar__link">Link</a></li> 
    <li class="navbar__item"><a href="#" class="navbar__link">Link</a></li> 
  </ul> 
</nav>

Answer 2

Тут несколько вариантов, первый clip-path можно и бордерами

.nav { 
  width: 100%; 
  background: blue; 
  color: white; 
  -webkit-clip-path: polygon(0 0, 100% 0, 92% 100%, 5% 100%); 
  clip-path: polygon(0 0, 100% 0, 92% 100%, 5% 100%); 
  padding: 5px; 
} 
 
.nav ul{ 
  display: flex; 
  flex-direction: row; 
  flex-wrap: wrap; 
  } 
   
.nav li{ 
  text-transform: uppercase; 
  list-style: none; 
  padding: 0 1rem; 
}
<nav class="nav"> 
  <ul> 
    <li>первый</li> 
    <li>второй</li> 
    <li>третий</li> 
  </ul> 
</nav>

READ ALSO
Переход на с# под веб: классический asp или core?

Переход на с# под веб: классический asp или core?

Решил перейти с PHP на C# для работы под вебКак я понял, есть 2 актуальных фрейморка, для перехода:

194
Неправильный POST запрос с JSON данными

Неправильный POST запрос с JSON данными

Реализовываю API запросы на биржу криптовалют BTC-AlphaВ частности вот такой запрос, который позволяет приобретать на бирже разные валюты

135
Telegram api не подключается

Telegram api не подключается

Для тестирования написал небольшой клиент, идет бесконечное подключение(в streamRead)

182
Размытие Label при перерисовке

Размытие Label при перерисовке

Label привязан к позициям курсора мыши (как подсказка)

147