CSS, используемый в этой ссылке , таков:
#octagon {
width: 100px;
height: 100px;
background: red;
position: relative;
}
#octagon:before {
content: "";
position: absolute;
top: 0;
left: 0;
border-bottom: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
#octagon:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
border-top: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
Он состоит из самого элемента div, который имеет прямоугольную форму.Используя псевдоклассы :before
и :after
, добавляется контент для создания двух трапеций, которые завершают восьмиугольник.Умно это сохраняет фактическое количество тегов на единицу, используя более интересные биты CSS.
Истоки этой техники можно найти здесь .
Вот быстрое демо .Синяя часть - это :before
CSS, а зеленая - :after
CSS.И даже лучше, вот демо , которое позволяет прозрачный фон!(спасибо @GGG).