Анимация с скрытием слайдера при прокрутки вверх+привязка к кукам
Всем привет. :victory:
Попался знакомый извращенец:blink: просит сделать такую вещь 1. Первый заход на сайт - слайдер открыт (вне зависимости от страницы). 2. Переход на любую страницу - слайдер закрыт (спрятан) 3. Если сайт уже вверху, при скроллинге вверх слайдер должен сразу появляться (выезжать) 4. При сколлинге вниз - прятаться. :help: Пункт 1 понятно привязка и проверка к кукам Пункт 2 связан с пунктом 1 Пункт 3 ВОТ тут проблема не могу понять как сделать и куда копать/ Нашел что то похожее но не то <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #hid{ width: 50px; height: 50px; background: #FF0000; opacity: 0; position: fixed; } body{ height: 1500px; } </style> [JS] <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(document).ready(function(){ $(window).scroll(function(){ var bo = $(this).scrollTop(); var a = $("#hid").css('opacity') $("#hid").html(bo); if ( bo >= 200 && a == 0) {$("#hid").stop().animate({'opacity':'1'},500)}; if ( bo < 200 && a == 1) {$("#hid").stop().animate({'opacity':'0'},500)}; }) }) </script>[/JS] </head> <body> <div id="hid"> </div> </body> </html> Прошу помочь куда копать. |
Пошел по пути scrollTop но видимо надо bind() и на колесико вверх
Помогите пожалуйста сделать типо такого-же только с bind()и на колесико вверх при значении 0
$(document).ready(function(){ $(window).scroll(function(){ var bo = $("body").scrollTop(); if ( bo > 50 ) { $("#bigslider").fadeOut(); } else { $("#bigslider").css("display","block"); }; }) }) |
mylifegod,
немогли бы вы пояснить что такое Переход на любую страницу и Если сайт уже вверху? |
Продолжаем делать велосипед
Переход на любую страницу имеется ввиду внутренний переход.
То есть эмулирую что должно быть: Я зашел на сайт вижу слайдер Перешел в любой раздел слайдер спрятан Но если я на любой странице в самом начале сделаю скрол вверх то слайдер должен появиться и далее когда я скролю вниз слайдер должен прятаться. Я разделил задачу на 2 этапа
Пока застрял на 1 этапе. так как начал делать с scrolTop но не получиться сделать так как скрол должен быть минус 0 а это не возможно. Подсказали что надо реализовать с условиями bind() на колесико вверх.:write: |
mylifegod,
ставите функцию на скролл -- скрол больше чем ранее -- блок показываем -- если меньше скрываем - или вам нужно скрола нет показываем скрол есть прячем? |
1 -Зашел - показываем
2 -Перешел на другую страницу прячем 3 -Пролистнул в самый вверх уперся делает скрол вверх и слайдер появился, скролит вниз слайдер прячется.:blink: |
Scroll спрятать блок при скроле
mylifegod,
пункт 2 так и остался для меня загадкой пункт 3 <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #bigslider{ width: 100px; height: 50px; background: #FF0000; position: fixed; display: none; } body{ height: 1500px; } </style> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(document).ready(function() { var first = localStorage.first; !first && $("#bigslider").css({"display" : "block"}); localStorage.first = 1; $(window).scroll(function() { var bo = $(this).scrollTop(); if (bo) { $("#bigslider:visible").fadeOut(); } else { $("#bigslider:hidden").fadeIn() }; }) }) </script> </head> <body> <div id="bigslider"> </div> </body> </html> |
рони спс но я пошел другим путем помоги допилить
$(function () { var getCookie=function(e){var o=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return o?decodeURIComponent(o[1]):void 0}; var setCookie=function(e,o,r){r=r||{};var i=r.expires;if("number"==typeof i&&i){var t=new Date;t.setTime(t.getTime()+1e3*i),i=r.expires=t}i&&i.toUTCString&&(r.expires=i.toUTCString()),o=encodeURIComponent(o);var n=e+"="+o;for(var a in r){n+="; "+a;var v=r[a];v!==!0&&(n+="="+v)}document.cookie=n}; / показывать слайдер сразу, или нет / var temp1 = getCookie("lapa-slider-first-set"); if(temp1 != 1) { $("#bigslider").show(); setCookie("lapa-slider-first-set", "1", {expires: 86400 * 90}); } / показать слайдер, когда камера = 0 и скролит вверх / var firstScroll = 0; $(document).scroll(function() { var oy = $(document).scrollTop(); if(oy == 0) { $(document).scrollTop(1); return; } if(firstScroll == 2) { if(oy > 1) { firstScroll = 0; $(document).scrollTop(1); $("#bigslider").animate({height: "0px"}, 500, function(){ $("#bigslider").hide(); }); } return; } if(oy > 1) { firstScroll = 0; return; } if(firstScroll == 0) { firstScroll = 1; return; } firstScroll = 2; $("#bigslider").show(); $("#bigslider").animate({height: "436px"}, 500, function(){ $("#bigslider").css("height", "100%"); }); }); }); Почти все сделал только теперь косяки другие 1 - не корректно работает на safari iphone/ipad (слайдер показывается и тут же прячется ) 2 - слайдер при переходе на другую страницу при первой прокрутки не работает вверх а только когда пролистнул вниз а потом вверх 3- Слайдер при переходе на другую страницу при первом всплытии выскакивает без анимации. |
mylifegod,
посмотрите пост 7 снова 2 раза -- он делает всё что вам нужно, более ничем помочь не могу. |
последний вариант кода: может кому пригодиться. :)
$(function () { var getCookie=function(e){var o=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return o?decodeURIComponent(o[1]):void 0}; var setCookie=function(e,o,r){r=r||{};var i=r.expires;if("number"==typeof i&&i){var t=new Date;t.setTime(t.getTime()+1e3*i),i=r.expires=t}i&&i.toUTCString&&(r.expires=i.toUTCString()),o=encodeURIComponent(o);var n=e+"="+o;for(var a in r){n+="; "+a;var v=r[a];v!==!0&&(n+="="+v)}document.cookie=n}; $(document).scrollTop(1); var temp1 = getCookie("lapa-slider-first-set"); if(temp1 != 1) { $("#bigslider").animate({height: "show"}, 500); setCookie("lapa-slider-first-set", "1", {expires: 86400 * 90}); } var firstScroll = 0; $(document).scroll(function() { var oy = $(document).scrollTop(); if(oy == 0) { $(document).scrollTop(1); return; } if(firstScroll == 2) { if(oy > 1) { firstScroll = 0; $(document).scrollTop(1); $("#bigslider").animate({height: "hide"}, 500); } return; } if(oy > 1) { firstScroll = 0; return; } if(firstScroll == 0) { firstScroll = 1; return; } firstScroll = 2; $("#bigslider").animate({height: "show"}, 500); }); }); |
Часовой пояс GMT +3, время: 02:41. |