/ Сайтостроение / Scripts & jquery / Прилепленное меню

Прилепленное меню

HIT

06.11.2015

1389

Делаем шапку сайта (включающую логотип, меню и контакты) прилепленной к верхнему краю экрана, при перемотке сайта вниз.

Оборачиваем необходимый для «прилеплевания» блок в div id=»stick_menu».

В данном сайте верстка такая:

<div style="height: 1px;"></div>
<div id="header">
<div id="stick_menu">

<div class="head-order">
<div id="logo"><a href="<?php bloginfo('url'); ?>"><img class="visible" src="<?php echo get_theme_mod( 'true_logo' ); ?>"></a></div>
<div id="slogan"><table><tr><td><?php bloginfo('description'); ?></td></tr></table></div>
<div id="phone"><table><tr><td><i class="fa fa-phone"></i> <?php echo get_theme_mod( 'true_phone' ); ?></td></tr></table></div>
<div id="mail"><table><tr><td><a href="mailto:<?php echo get_theme_mod( 'true_email' ); ?>"><i class="fa fa-envelope-o"></i> <?php echo get_theme_mod( 'true_email' ); ?></a></td></tr></table></div>
</div>

<div id="nav-block">
<div id="navigate">

<nav role="navigation">
<?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
<li class="menu-item call-item" style="cursor:pointer;"><a><i class="fa fa-phone"></i> Звонок</a></li>
<li class="menu-item search-item" style="cursor:pointer;"><a><i class="fa fa-search"></i> Поиск</a></li>
</nav>

</div>
</div>

</div>
</div> <!-- конец header -->

Для того чтобы блок возвращался к исходному состоянию при полной перемотке вверх, надо добавить div с высотой 1px

<div style="height: 1px;"></div>

Script

$(document).ready(function() {

// Прилепленное меню

if($("div").is("#stick_menu")) {

var start_pos=$('#stick_menu').offset().top;
 $(window).scroll(function(){
  if ($(window).scrollTop()>=start_pos) {
      if ($('#stick_menu').hasClass()==false) $('#stick_menu').addClass('to_top');
  }
  else $('#stick_menu').removeClass('to_top');
 });

}

});

CSS

/*Приклееное меню*/

.to_top {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 99;
  background-color: rgba(0, 0, 0, 0.7);
}

.to_top li{
line-height: 20px !important;
font-size: 12px;
font-weight: bold;
transition: line-height 0.5s, background-color 0.5s, border 0.5s;
-webkit-transition: line-height 0.5s ease 0s, background-color 0.5s ease 0s, border 0.5s ease 0s;  
}

#stick_menu {
    float:left;
    width:100%;
    list-style:none;
    font-size: 12px;
    width: 80%;
    padding: 0 10%;
    background-color: rgba(0, 0, 0, 0.7);
    box-shadow: 0px 0px 16px #000;
}    

#stick_menu li {
    float:left;
    position:relative;
    display:block;
    width: 10%;
    line-height: 40px; 
    box-sizing: border-box;
    border-top: 2px solid rgba(255, 255, 255, 0);
    transition: line-height 0.5s, background-color 0.5s, border 0.5s;
    -webkit-transition: line-height 0.5s ease 0s, background-color 0.5s ease 0s, border 0.5s ease 0s;
}

#stick_menu li a {
	display:block;
	padding: 2px 10px;
	color:#fff;
	text-decoration:none;
        position: relative;
}

Для плавности эффекта перехода (чтоб не было скачков) для исходного элемента (в самом верхнем положении) прописать свойство высоты. В нашем случае div header

Чтоб менялись свойства элементов входящих в прилепленный header при прокрутке вниз надо добавлять свойства CSS, примеры:

#logo img {
width: 70%;
float: left;
transition: width 0.5s ease;
-webkit-transition: width 0.5s ease 0s;  
}

.to_top #logo img {width: 35%;}

#slogan table, #phone table, #mail table {
    vertical-align: middle;
    height: 50px;
    transition: height 0.5s ease;
    -webkit-transition: height 0.5s ease 0s; 
}
  
.to_top #slogan table, .to_top #phone table, .to_top #mail table {height: 25px;}

#nav-block {
  float: left;
  position: relative;
  width: 100%;
  height: 40px;
  transition: height 0.5s ease;
  -webkit-transition: height 0.5s ease 0s;
}

.to_top #nav-block {height: 30px;}

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Scrollspy jquery

Scrollspy jquery

Скрипт scrollspy jquery отслеживающий положение скрола, в котором мы находится в данный момент. Чаще всего это используется для изменения состояния меню, изменение фона, а также для каких-либо событий. Подключение скрипта Читать далее »

/
Манипуляции с меню

Манипуляции с меню

Проводим различные эксперименты и манипуляции с меню. Добавить пункт функцией Добавляем произвольный пункт меню при помощи функции (!данный пример будет работать только с установленным плагином woocommerce) add_filter( 'wp_nav_menu_items', 'my_account_loginout_link', 10, Читать далее »

Автоматическое меню, оглавление, измененное состояние меню

Автоматическое меню, оглавление, измененное состояние меню

Меню с изменяемым состоянием может применяться для различных задач, в т.ч. для меню лэндинга или для оглавления длинной страницы. Такое меню состоит из хэш-ссылок для перемещения по самой странице. Смысл Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Прилепленное меню
Вложения записи (Attachment)
Рекомендации для васВложения записи (Attachment)Opttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.