Многие уже научились создавать меню со скругленными углами на чистом CSS3. А что если кому-нибудь захочется создать закругленные элементы с расширяющимися закругленными границами? Да еще и на чистом CSS3?

Стив Смит решил эту задачу и мы сейчас рассмотрим ее решение. Результат получится точно таким как на картинке сверху. И так, начнем.

<!doctype html>
<html>
  <head>
    <title>CSS3 расходящиеся к низу скругленные границы</title>
  </head>
  <body>
    <ul>
      <li><a href="#">Главная</a></li>
      <li><a href="#">О компании</a></li>
      <li><a href="#">Продукция</a></li>
      <li><a href="#">Сервисы</a></li>
      <li><a href="#">Контактная информация</a></li>
    </ul>
  </body>
</html>

HTML разметка создана, теперь можно перейти к стилю CSS.

html {
  background:#efefef;
}

body {
  margin:0;
  padding:0;
  color:#222;
  font:13px "Helvetica Neue", Helvetica, Arial, sans-serif;
}

ul {
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:30px;
  background:#959DA5;
  border-bottom:1px solid #333;
  margin:0;
  padding:10px 16px 0;
  list-style:none;
}

ul li {
  float:left;
  margin:0 20px 0 0;
  padding:0;
}

ul a {
  display:block;
  color:#fff;
  text-decoration:none;
  padding:0 15px;
  line-height:29px;
  height:29px;
  font-weight:bold;
  background:#464646;
  border:1px solid #333;
  border-bottom:none;
  -webkit-font-smoothing:antialiased;
  -webkit-border-top-left-radius:8px;
  -webkit-border-top-right-radius:8px;
  -moz-border-radius:8px 8px 0 0;
  border-top-left-radius:8px;
  border-top-right-radius:8px;
  text-shadow:#000 0 -1px 0;
  /* Это необходимо для предотвращения зубчатые границы в Webkit. */
  -webkit-background-clip: padding-box;
}

ul li.current a {
  background:#efefef;
  color:#222;
  height:30px;
  text-shadow:#fff 0 1px 0;
  /* Это необходимо для предотвращения зубчатые границы в Webkit. */
  -webkit-background-clip: padding-box;
}

Применив этот стиль к нашей разметке мы увидим:

Теперь нам надо создать скругленные снизу границы, да еще и так, чтобы они "разъезжались". Сделаем так: с помощью псевдоэлементов :before и :after мы создадим небольшие блоки и расположим их у подножия наших пунктов меню. Позиционировать эти псевдоэлементы мы будем абсолютно, так что придется позиционировать их относительно самих пунктов. Просто обратите на это внимание. И так.

ul li {
  position:relative;
}

ul li:before, ul li:after {
  content:'';
  width:9px;
  height:8px;
  position:absolute;
  z-index:2;
  bottom:0;
  background:#464646;
}

ul li:before {
  left:-8px;
}

ul li:after {
  right:-8px;
}

ul li.current:before, ul li.current:after {
  background:#efefef;
  bottom:0;
  -webkit-background-clip: padding-box;
}

Теперь смотрим результат:

Теперь осталось только закруглить. Немного меняем наш CSS:

ul a {
  position:relative;
}

ul a:before, ul a:after {
  content:'';
  width:10px;
  height:8px;
  position:absolute;
  z-index:3;
  bottom:-1px;
  background:#959DA5;
  overflow:hidden;
  border-bottom:1px solid #333;
  -webkit-background-clip: padding-box;

}

ul a:before {
  left:-11px;
  border-bottom-right-radius:8px;
  -webkit-border-bottom-right-radius:8px;
  -moz-border-radius-bottomright:8px;
  border-right:1px solid #222;
}

ul a:after {
  right:-11px;
  border-bottom-left-radius:8px;
  -webkit-border-bottom-left-radius:8px;
  -moz-border-radius-bottomleft:8px;
  border-left:1px solid #222;
}

ul li.current a:before, ul li.current a:after {
  bottom:0;
}

И... та-да!

Срочно смотрим демо.

Поддерживается всеми последними браузерами. Вот так легко мы добились с вами закругленных и расходящихся углов снизу без дополнительных элементов.

Оригинальная статья на английском и без адаптации.

(Visited 233 times, 1 visits today)