Много раз делал выезжающую с боку панель, но каждый раз то использовал готовый скрипт то скачивал скрипт jquery типа slidepanel. В последнее время делаю серьездный проект и все скрипты приходится писать вручную, слайдер с разными всплывающими блоками, различные табы, менюшки. В общем сегодня выложу маленький скрипт позволяющий сделать красивую кнопку с выезжающим блоком - сделать обратный звонок.
Начнем:
1)Вставим на страничку блок с кнопкой и блок с панелью обратного звонка, там будут два поля для заполнения кнопка и картинка с консультантом.
Still have questions? Fill in the form and we
will callback+6 531 581 164
2)пропишем стили для кнопки и блока:
#callback {
background: url(../images/btn-callback.png) top left no-repeat;
display: inline-block;
width: 51px;
height: 362px;
bottom: 140px;
right: 0px;
position: fixed;
z-index: 4;
opacity: 0;
cursor: pointer;
transition: opacity 0.5s linear;
}
#callback.visible {
/* the button becomes visible */
visibility: visible;
opacity: 0.5;
}
#callback.fade-out {
/* if the user keeps scrolling down, the button is out of focus and becomes less visible */
opacity: 1;
}
#callback:hover {
background: url(../images/btn-callback.png) top right no-repeat;
}
#callback_panel{
padding:10px 20px;
display: block;
width:260px;
height:340px;
bottom: 142px;
right: -300px;
position: fixed;
z-index: 4;
background: url('../images/popup-bg.png') repeat;
}
#callback_panel p.header{
font-family: 'Roboto Condensed', sans-serif;
font-size:24px;
color:#3298da;
text-align: center;
margin:10px 0 5px;
text-transform: uppercase;
}
#callback_panel p.phone{
font-family: 'Roboto Condensed', sans-serif;
font-size:32px;
color:#008c33;
text-align: center;
margin:10px 0 5px;
text-transform: uppercase;
}
#callback_panel p.text{
color: #333333;
font-size: 14px;
text-align: center;
}
#callback_panel .logo{
background: url('../images/callback_logo.png') left center no-repeat;
width: 270px;
margin-left:-10px;
position: relative;
height: 160px;
display: block;
margin-top:5px;
margin-bottom:5px;
}
#callback_panel .logo >span:first-of-type{
position: absolute;
right:0px;
top:50px;
font-size:16px;
font-weight: bold;
color: #3298da;
text-align: right;
}
#callback_panel .logo >span:last-of-type{
position: absolute;
right:0px;
top:70px;
font-size:14px;
color: #3298da;
text-align: right;
}
В коде конечно много лишних стилей, например стили позиционирования текста в блоке с картинкой ил размеры шрифтов. Но если обратите внимание у кнопки с ID callback есть два дополнительных класса: visible и fadeout. Сейчас выложу код javascript где вы поймете зачем эти классы, они позволяют при прокрутке страницы медленно появлятся и скрываться. В общем код в студию)
ВЫЕЗЖАЮЩАЯ ПАНЕЛЬ НА JQUERY
jQuery(document).ready(function($) {
// browser window scroll (in pixels) after which the "back to top" link is shown
var offset = 500,
//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
offset_opacity = 500,
//duration of the top scrolling animation (in ms)
scroll_top_duration = 900,
var $callback = $('#callback');
//hide or show the "back to top" link
$(window).scroll(function () {
( $(this).scrollTop() > offset ) ? $callback.addClass('visible') : $callback.removeClass('visible fade-out');
if ($(this).scrollTop() > offset_opacity) {
$callback.addClass('fade-out');
}
});
$callback.on('click', function () {
if($(this).hasClass('open')) {
$("#callback_panel").animate({right: '-300px'}, 500);
$("#callback").animate({right: '0px'}, 500);
$("#callback").removeClass('open');
}else{
$("#callback_panel").animate({right: '0px'}, 500);
$("#callback").animate({right: '300px'}, 500);
$("#callback").addClass('open');
}
});
});
И так что мы сделали: задали высоту при которой стоит отображать кнопку обратного звонка. Высоту при которой будем прятать кнопку. При скроле страницы добавляем селекторы к нашей кнопке.
Дальше если мы нажимаем на кнопку то условным оператором if else проверяем если класс open. Если нет то с анимацией добавляем к кнопке и блоку позиционирование. То есть панель была за пределами экрана -300px. Меняем значение на 0. То же самое для кнопки, что бы она уезжала плавно с блоком и добавляем класс open. Если класс присутствует то прячем блок и убираем класс. Все очень просто и эффективно работает. И не нужно подключать дополнительные скрипты типа jQuery TabSlideOut
Надеюсь вам понравился этот маленький урок. А по этой ссылке можно скачать выезжающую панель на jquery
Василий
Здравствуйте Евгений, а где я могу увидеть пример работы данной формы. Спасибо.
Поляков Е.
Добрый день, Василий.
Выложил исходники подобной панели. Ссылка в конце статьи. https://yadi.sk/d/UxvwcTKpmRJnh
Василий
Спасибо большое))