Как сделать значки меню не картинками, а написать в html + css.
Этот вопрос возник у меня после того, как я сделал дизайн сайта адаптивным, и разместил сверху симпатичную менюшку из значков для меню, которые нарезал в Яндекс Картинках.
Радость создания испарилась как туман ясным утром, после очередной проверки скорости загрузки сайта.
Каждая малюсенькая картинка, предварительно адаптированная, грузилась около 200 ms. Солидная портянка с html грузится на порядок быстрее.
Вот тогда я решил попробовать написать значки кодом, и вот что получилось.
Размер значков я сделал 40 х 40 пикселей, для лучшего просмотра, но изменяя их число в коде, вы можете сделать их любого размера для себя.
Конверт почты:
CSS
.letter {
width: 40px;
height: 30px;
border: 2px solid #555;
border-radius: 2px;
position: relative;
}
.dog{
position: absolute;
top: 2px;
left: 12px;
width: 18px;
height: 18 px;
border-radius: 5px;
font-size: 20px;
font-weight: bold;
background: #fff;
z-index: 1;
}
.letter:before {
content: "";
position: absolute;
top: 0;
left: 19px;
height: 30px;
border-left: 3px solid #333;
transform: skewX(54deg);
}
.letter:after {
content: "";
position: absolute;
top: 0;
right: 19px;
height: 30px;
border-left: 3px solid #333;
transform: skewX(-54deg);
}
HTML
<div class="letter"> <div class="dog">@</div> </div>
Написать:
CSS
.pencil {
width: 50px;
height: 50px;
font-size: 40px;
font-weight: bold;
transform: rotate(120deg);
}
HTML
<div class="pencil">✎</div>
Меню:
CSS
.menus {
font-size: 40px;
font-weight: bold;
}
HTML
<div class="menus">≡</div>
Домашняя:
CSS
.lodge {
position: relative;
width: 50px;
height: 50px;
}
.lodge:before,
.lodge:after {
content: "";
position: absolute;
width: 30px;
height: 2px;
background: #333;
}
.lodge:before {
top: 19px;
left: 0;
transform: rotate(-45deg);
}
.lodge:after {
top: 19px;
left: 22px;
transform: rotate(45deg);
}
.wall {
position: absolute;
top: 25px;
left: 9px;
width: 30px;
height: 30px;
border: 2px solid #777;
}
.door {
position: absolute;
top: 39px;
left: 25px;
width: 10px;
height: 20px;
background: #777;
}
HTML
<div class="lodge"> <div class="wall"></div"≶ <div class="door"></div"≶ </div>
Настройки:
CSS
.gear; {
position;: relative;;
width: 40px;
height: 40px;
border-radius: 50%;
background: #777;
margin: 50px 0 0 10px;
}
.gear:before {
content: "";
position: absolute;
width: 20%;
height: 20%;
left: 40%;
top: 40%;
border-radius: inherit;
background: #fff;
}
.tooth1,
.tooth2,
.tooth3,
.tooth4,
.tooth5,
.tooth6 {
position: absolute;
top: -17px;
left: 0px;
width: 5px;
border: 20px solid transparent;
border-top: 25px solid #fff;
}
.tooth1 {
top: -21px;
left: -3px;
}
.tooth2 {
top: -12px;
left: 14px;
transform: rotate(60deg);
}
.tooth3 {
top: 6px;
left: 14px;
transform: rotate(120deg);
}
.tooth4 {
top: 15px;
left: -2px;
transform: rotate(180deg);
}
.tooth5{
top: 6px;
left: -18px;
transform: rotate(240deg);
}
.tooth6 {
top: -11px;
left: -19px;
transform: rotate(300deg);
}
HTML
<div class="gear"> <div class="tooth1"></div> <div class="tooth2"></div> <div class="tooth3"></div> <div class="tooth4"></div> <div class="tooth5"></div> <div class="tooth6"></div> </div>
Пуск:
CSS
.pusk {
position: relative;
width: 40px;
height: 40px;
border-radius: 50%;
background: #777;
margin: 50px 0 0 0;
}
.pusk:before {
content: "";
position: absolute;
left: 22%;
top: 22%;
width: 55%;
height: 55%;
border-radius: inherit;
box-shadow: 0 0 0 3px #fff;
background: #777;
}
.pusk:after {
content: "";
position: absolute;
left: 12px;
top: 12px;
width: 40%;
height: 3px;
border-radius: 1px;
box-shadow: 0 0 0 3px #777;
background: #fff;
transform: rotate(90deg);
z-index: 1;
}
HTML
<div class="pusk"></div>
Комментарий:
height: 30px;
position: relative;
border-radius: 5px;
background: #777;
margin-top: 50px;
}
.narrator:before {
content: "";
position: absolute;
top: 25px;
left: 5px;
border: 10px solid transparent;
border-top: 15px solid #777;
}
HTML
<div class="narrator""></div>
Пока всё. Будет время попробую нарисовать ещё. Значков для меню ещё много.
Возможно кто-то из Вас найдёт ошибки в коде, укажет как их исправить или предложит дополнения. Буду весьма признателен. И не только я.
Желаю творческих успехов!



всмысле иконки пишутся чисто кодом? Без изображения?

