Адаптивная шапка сайта (float vs flex)
Вы здесь: Главная — CSS — CSS3 — Адаптивная шапка сайта (float vs flex)
Я большой сторонник минимализма при планировании HTML структуры сайта. Любой сайт начинается с шапки и если у вас небольшое меню, то желательно логотип и навигацию, разместить в один ряд. Само собой, наша шапка должна быть адаптивной. Кроме того, сделаем нашу верстку двумя разными способами, используя технологию – float и flex. В конце статьи, сделаем вывод, как быстрее и проще сверстать адаптивную шапку.
Демонстрация шапки на float
Первый способ (float)
HTML разметка
Внутри хедера справа будет логотип, а слева навигационный блок с тремя ссылками меню. Разметка – проще некуда.
<header>
<a href="#logo">Логотип сайта</a>
<nav>
<a href="#home">Главная</a>
<a href="#contact">Контакты</a>
<a href="#about">О нас</a>
</nav>
</header>
CSS код
В потоке документа, ссылки, заняли бы место под логотипом, но мы меняем естественный ход событий и для логотипа прописываем float: left, а для блока nav – float: right. Как бы разводим их по разные стороны хедера.
See the Pen Адаптивная шапка сайта (float) by porsake (@porsake) on CodePen.
Делаем шапку адаптивной
На ширине экрана 500 пикселей и выше, мы отменяем обтекание float, там где оно было. После отмены, ссылки меню повели себя так, как и должны – встали в столбик. Мы получили адаптивную шапку первым способом (float).
@media screen and (max-width: 500px) {
header a {
float: none;
display: block;
text-align: left;
}
nav {
float: none;
}
}
Демонстрация шапки на flex
Второй способ (flex)
HTML разметка
Здесь нам пришлось логотип обернуть в блок с классом wrap-logo, иначе не получиться развести логотип и меню по разные стороны, меню будет прилипать к логотипу.
<header>
<div>
<a href="#logo">Логотип сайта</a>
</div>
<nav>
<a href="#home">Главная</a>
<a href="#contact">Контакты</a>
<a href="#about">О нас</a>
</nav>
</header>
CSS код
Обратите внимание, что в селекторе header, появилось много дополнительных свойств, по сравнению с флоатами.
display: flex; /* Включаем режим Flexbox. */
flex-direction: row; /* Держим элементы в строке */
justify-content: space-between; /* Распределяем элементы внутри шапки */
flex-wrap: wrap; /* Разрешаем перенос элементов на новую строку */
See the Pen Адаптивная шапка сайта (flex) by porsake (@porsake) on CodePen.
Что у нас с адаптивностью? При уменьшении экрана, блок с ссылками меню, сам переносится на новую строку и встает под логотипом. Отвечает за это свойство flex-wrap: wrap. Иными словами мы получили адаптивную шапку без медиа-запросов.
Вывод
Плюсы флексов:
На экранах смартфонов, шапка на flex-ах почти в 2 раза занимает меньше места по высоте, это огромный плюс. Мы не тратили время на медиа-запросы.Минусы флексов:
Нам пришлось создать лишний блок, написать больше кода в стилях.
Плюсы флоатов:
Простой и понятный код.
Минусы флоатов:
Необходимость в медиа-запросах и отмены флоатов (clearfix).
Плюсов и минусов примерно одинаково. Но если вы хорошо освоите флексы, то минусов не останется. Так, что я выбираю флексы.
- Создано 07.12.2018 10:30:00
-
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Создание шапки сайта с использованием CSS3
Думали ли Вы о изменении шапки своего сайта? Как известно, шапка — наиболее важная часть любого сайта. В первую очередь все пользователи обращают внимание на эту часть сайта. И чем она более опрятная и четкая, тем лучше остается мнение о сайте у посетителей. В этом уроке мы покажем, как создать высококачественную современную шапку для сайта. В шапке сайта будут логотип, несколько ссылок в правом верхнем углу, выпадающее меню и форма поиска.
Перед тем, как начать, посмотрите, что именно мы будем создавать:
Демонстрация работы
Посмотрите пример, и приступим к программированию.
Шаг 1. Код HTML
Вначале нужно создать нашу шапку со всеми вышеупомянутыми элементами:
index.html
<div> <!-- логотип --> <a href="#"><img src="images/logo.png"></a> <!-- дополнительные ссылки сверху --> <div> <a href="#">About us</a> <a href="#">Help</a> <a href="#">Contact Us</a> </div> <!-- меню --> <div> <nav> <ul> <li><a href="index.php">Home</a> <ul> <li><a href="#"><span></span>Facebook</a></li> <li><a href="#"><span></span>Google</a></li> <li><a href="#"><span></span>RSS</a></li> <li><a href="#"><span></span>Skype</a></li> <li><a href="#"><span></span>Stumbleupon</a></li> </ul> </li> <li><a href="#">Faces</a> <ul> <li><a href="#"><span></span>menu element 1</a></li> <li><a href="#"><span></span>menu element 2</a></li> <li><a href="#"><span></span>menu element 3</a></li> <li><a href="#"><span></span>menu element 4</a></li> <li><a href="#"><span></span>menu element 5</a></li> </ul> </li> <li><a href="#">Clubs</a> <ul> <li><a href="#"><span></span>menu element 1</a></li> <li><a href="#"><span></span>menu element 2</a></li> <li><a href="#"><span></span>menu element 3</a></li> <li><a href="#"><span></span>menu element 4</a></li> <li><a href="#"><span></span>menu element 5</a></li> </ul> </li> <li><a href="#">Photos</a> <ul> <li><a href="#"><span></span>menu element 1</a></li> <li><a href="#"><span></span>menu element 2</a></li> <li><a href="#"><span></span>menu element 3</a></li> <li><a href="#"><span></span>menu element 4</a></li> <li><a href="#"><span></span>menu element 5</a></li> </ul> </li> <li><a href="#">Videos</a></li> <li><a href="#">Games</a></li> <li><a href="#">Blog</a> <ul> <li><a href="#"><span></span>menu element 1</a></li> <li><a href="#"><span></span>menu element 2</a></li> <li><a href="#"><span></span>menu element 3</a></li> <li><a href="#"><span></span>menu element 4</a></li> <li><a href="#"><span></span>menu element 5</a></li> </ul> </li> <li><a href="#">Classifieds</a></li> </ul> </nav> <!-- форма поиска --> <div> <form role="search" method="get"> <input type="text" placeholder="search..." name="s" value="" autocomplete="off" /> </form> </div> </div> </div>
В этом коде легко разобраться. Здесь меню на обычной структуре ul – li и простая форма поиска.
Шаг 2. Код CSS
Теперь основной этап — задать стили подготовленной шапке сайта. Для начала общие стили для самой шапки, ссылок в правом верхнем углу и логотипа:
/* стили шапки */ #header { border:1px solid; border-color:rgba(0,0,0,0.1); border-bottom-color:rgba(0,0,0,0.2); border-top:none; background:#f7f7f7; background:-webkit-linear-gradient(top, #f7f7f7, #f4f4f4); background:-moz-linear-gradient(top, #f7f7f7, #f4f4f4); background:-o-linear-gradient(top, #f7f7f7, #f4f4f4); background:linear-gradient(to bottom, #f7f7f7, #f4f4f4); background-clip:padding-box; border-radius:0 0 5px 5px; margin: auto; position: relative; width: 1000px; } #header a { color: #4C9FEB; } #header a:hover { color: #FF7D4C; } #logo { float: left; margin: 15px 10px; } #logo img { border: 0; } #links { float: right; font-size: 12px; margin: 10px 20px 0; overflow: hidden; text-shadow: 0 1px 0 #FFFFFF; } #links a { border-left: 1px solid #DEDEDE; margin-left: 7px; padding-left: 8px; text-decoration: none; } #links a:first-child { border-width: 0; } Теперь зададим следующие стили для выпадающего меню на чистом CSS3: /* стили меню */ #navmenu { background: -webkit-linear-gradient(#f6f6f6, #e9eaea) repeat scroll 0 0 transparent; background: -moz-linear-gradient(#f6f6f6, #e9eaea) repeat scroll 0 0 transparent; background: linear-gradient(#f6f6f6, #e9eaea) repeat scroll 0 0 transparent; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f6f6', endColorstr='#e9eaea',GradientType=0 ); border-radius: 0 0 4px 4px; border-top: 1px solid #D1D1D1; box-shadow: -1px 1px 0 rgba(255, 255, 255, 0.8) inset; clear: both; height: 51px; padding-top: 1px; } #menu { float: left; } #menu a { text-decoration: none; } #menu ul { list-style: none; margin: 0; padding: 0; } #menu > ul > li { float: left; padding-bottom: 12px; } #menu ul li a { border-color: #D1D1D1; border-image: none; border-style: solid; border-width: 0 1px 0 0; box-shadow: -1px 0 0 rgba(255, 255, 255, 0.8) inset, 1px 0 0 rgba(255, 255, 255, 0.8) inset; color: #333333; display: block; font-size: 14px; height: 30px; line-height: 30px; padding: 11px 15px 10px; text-shadow: 0 1px 0 #FFFFFF; } #menu ul li a:hover { background: -webkit-linear-gradient(#efefef, #e9eaea) repeat scroll 0 0 transparent; background: -moz-linear-gradient(#efefef, #e9eaea) repeat scroll 0 0 transparent; background: linear-gradient(#efefef, #e9eaea) repeat scroll 0 0 transparent; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#e9eaea',GradientType=0 ); } #menu > ul > li.active > a { background: -webkit-linear-gradient(#55A6F1, #3F96E5) repeat scroll 0 0 transparent; background: -moz-linear-gradient(#55A6F1, #3F96E5) repeat scroll 0 0 transparent; background: linear-gradient(#55A6F1, #3F96E5) repeat scroll 0 0 transparent; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#55A6F1', endColorstr='#3F96E5',GradientType=0 ); border-bottom: 1px solid #2D81CC; border-top: 1px solid #4791D6; box-shadow: -1px 0 0 #55A6F1 inset, 1px 0 0 #55A6F1 inset; color: #FFFFFF; margin: -1px 0 -1px -1px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); } #menu > ul > li.active > a:hover { background: -webkit-linear-gradient(#499FEE, #3F96E5) repeat scroll 0 0 transparent; background: -moz-linear-gradient(#499FEE, #3F96E5) repeat scroll 0 0 transparent; background: linear-gradient(#499FEE, #3F96E5) repeat scroll 0 0 transparent; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#499FEE', endColorstr='#3F96E5',GradientType=0 ); } #menu > ul > li:first-child > a { border-radius: 0 0 0 5px; }
И, наконец, все, что нам осталось, — создать выпадение подпунктов меню. Эти стили создадут плавно выезжающий вложенный уровень меню:
/* выпадающее меню */ #menu ul ul { background: -webkit-linear-gradient(#F7F7F7, #F4F4F4) repeat scroll 0 0 padding-box transparent; background: -moz-linear-gradient(#F7F7F7, #F4F4F4) repeat scroll 0 0 padding-box transparent; background: linear-gradient(#F7F7F7, #F4F4F4) repeat scroll 0 0 padding-box transparent; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F7F7F7', endColorstr='#F4F4F4',GradientType=0 ); border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 5px 5px 5px 5px; box-shadow: 0 1px 0 #FFFFFF inset; height: 0; margin-top: 10px; opacity: 0; overflow: hidden; padding: 0; position: absolute; visibility: hidden; width: 250px; z-index: 1; -webkit-transition: all .5s; -moz-transition: all .5s; -ms-transition: all .5s; -o-transition: all .5s; transition: all .5s; } #menu ul li:hover ul { height: 195px; margin-top: 0\9; opacity: 1; visibility: visible; } #menu ul ul a { border-right-width: 0; border-top: 1px solid #D1D1D1; box-shadow: 0 1px 0 #FFFFFF inset; color: #444444; height: 24px; line-height: 24px; padding: 7px 12px; text-shadow: 0 1px 0 #FFFFFF; } #menu ul ul li:first-child a { border-top-width: 0; } #menu ul ul a .icon { background-position: 50% 50%; background-repeat: no-repeat; display: block; float: left; height: 24px; margin-right: 10px; width: 24px; } #menu ul ul a .icon.elem0 { background-image: url("../images/elem.png"); } #menu ul ul a .icon.elem1 { background-image: url("../images/fb.png"); } #menu ul ul a .icon.elem2 { background-image: url("../images/go.png"); } #menu ul ul a .icon.elem3 { background-image: url("../images/rs.png"); } #menu ul ul a .icon.elem4 { background-image: url("../images/sk.png"); } #menu ul ul a .icon.elem5 { background-image: url("../images/su.png"); } /* поисковая форма */ #search { margin:13px 10px 0 0; float: right; } #search form { background: url("../images/search.gif") no-repeat scroll 5% 50% transparent; border: 1px solid #CCCCCC; border-radius: 3px 3px 3px 3px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.05) inset, 0 1px 0 #FFFFFF; height: 26px; padding: 0 25px; position: relative; width: 130px; } #search form:hover { background-color: #F9F9F9; } #search form input { color: #999999; font-size: 13px; height: 26px; text-shadow: 0 1px 0 #FFFFFF; background: none repeat scroll 0 0 transparent; border: medium none; float: left; outline: medium none; padding: 0; width: 100%; } #search form input.placeholder, #search form input:-moz-placeholder { color: #C4C4C4; }
Демонстрация работы
Заключение
Мы закончили привлекательную и опрятную шапку для сайта с выпадающим меню. Надеемся, этот урок Вам пригодится!
Автор урока Andrew Prikaznov
Перевод — Дежурка
Смотрите также:
Header шаблонов, 1,582 шаблонов для бесплатной загрузки
векторный набор горизонтальных сетевых баннеров и заголовков с белым фоном
векторный набор горизонтальных сетевых баннеров
резюме баннеры дизайн
резюме баннер
вектор резюме журнал макет шаблон дизайна
векторный дизайн шаблона макета журнала
резюме баннер дизайн фона или заголовок шаблоны с волной
черная пятница продажи баннер
синий корпоративный бизнес карта
современный голубой многоугольник баннеры
промышленный баннер в социальных сетях
редактируемый шаблон поста в instagram для цифрового маркетинга
современные голубую волну баннеры
резюме баннер дизайн фона или заголовок шаблоны с волной
резюме баннер дизайн фона или заголовок шаблоны с волной
оранжевый корпоративный бизнес карту заголовка шаблон проектирования набор плоских
завод промышленных баннеров
синий корпоративный бизнес карту заголовка шаблон проектирования набор плоских
акварель бизнеса вектор коллекцию
пригласительные билеты на хэллоуин
абстрактный веб дизайн баннера или шаблоны заголовков с волной
вектор резюме журнал макет шаблон дизайна
баннер с современным дизайном красочные градиент
черная пятница продажи баннер
редактируемый шаблон поста instagram розовое золото для цифрового маркетинга
обуви верхний баннер
вектор резюме журнал макет шаблон дизайна
вектор резюме журнал макет шаблон дизайна
акварель цветочные многоцелевой баннер комплекс
набор веб баннеры в стандартных размеров вектор резюме шаблоны дизайн с справочная информация и заголовок диагональные полоски и кнопку
современные facebook покрытия
элегантный баннер с освещением в силу счастливого рождества
бизнес facebook покрытия
корпоративные facebook покрытия
вектор резюме журнал макет шаблон дизайна
спа брошюра / флаер шаблон
резюме волнистые заголовок со светом
резюме баннер дизайн фона или заголовок шаблоны с волной
резюме баннер дизайн фона или заголовок шаблоны с акварели
вектор резюме журнал макет шаблон дизайна
редактируемый шаблон поста instagram для цифрового маркетинга
акварель бизнеса вектор коллекцию
вселенная баннер
корпоративный бизнес facebook покрытия
черная пятница продажи баннер
black friday sale banner
abstract header banner
набор веб баннеров в стандартных размерах дизайн вектор абстрактные шаблоны с и заголовок диагональные полосы и кнопки
вектор резюме журнал макет шаблон дизайна
«бизнес баннер шаблон
Популярные шаблоны в HTML, CSS и PSD форматах, а также UI исходники
Друзья, сегодня я предлагаю Вам скачать совершенно бесплатно и самые популярные исходники для создания сайта с чистого лица. Да и не просто ресурса, а сайта с современным дизайном! Тут Вы сможете скачать Несколько классных шаблонов для сайта в форматах HTML, CSS и PSD. А так же несколько популярных UI элементов с помощью которых создаётся дизайн для сайта и приложения. Я думаю, что данная подборка окажется Вам очень полезной.
Спасибо огромное http://www.noupe.com и рекомендую:
Bootstrap шаблон для фото сайта
Демо Ι Скачать
Одностраничный портфолио шаблон в HTML
Демо Ι Скачать
Простая форма входа на HTML и CSS
Демо и скачать
Минималистический Bootstrap шаблон
Демо Ι Скачать
Email шаблон в стиле Flat
Скачать
Портфолио шаблон для фотографий на HTML
Демо Ι Скачать
Различные элементы дизайна для веб проектов
Скачать
Минималистический и в стиле Flat HTML шаблон для ресторанов
Демо Ι Скачать
Одностраничный и цветной шаблон в формате PSD
Скачать
Портфолио шаблон для сайта в Flat
Скачать
Одностраничный и очень стильный PSD шаблон
Скачать
Элегантный одностраничный PSD шаблон для небольших компаний
Скачать
Окно для презентации приложения
Скачать
Простой шаблон в PSD для креативных агентств
Скачать
Одностраничный шаблон для бизнеса
Скачать
Мобильный интерфейс для крутого приложения
Скачать
Разноцветные UI исходники для создания дизайна
Скачать
Современный дизайн UI для мобильных приложений
Скачать
Дизайн для социальных приложений в синих тонах
Скачать
UI исходники для новостных сайтов
Скачать