Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   FancyBox переопределяет вертикальный скролл ? (https://javascript.ru/forum/dom-window/40775-fancybox-pereopredelyaet-vertikalnyjj-skroll.html)

ilyas-> 19.08.2013 19:01

FancyBox переопределяет вертикальный скролл ?
 
Есть такая проблема в последней версии всем известного плагина FancyBox когда модальное-iFrame окно всплывает то оно затрагивает вертикальный скролл страницы, на странице много контента и соответственно вертикальный скролл длинный, при всплытии плагин берет и убирает существующий скролл и заместо него просто резервирует скролл без ползунка, у меня на сайте некоторые блоки с position:fixed дергаются изза этого переопределения скролла.
Вот привожу ссылку на страницу где можете сами лицезреть мною описанное(нажмите на iFrame). Перепробовал все что знаю в итоге не получается сделать так чтобы скролл страницы вообще не затрагивался и не переопределялся

Есть старая версия плагина FancyBox в ней как раз скролл не затрагивается скролл вот ссылка, внизу ссылки на iFrame. Как сделать также на новой версии плагина FancyBox чтобы не затрагивался вообще вертикальный скролл как на старой ?

danik.js 19.08.2013 19:08

По ссылке (в примерах) не вижу никаких скачков. Скроллбар "блокируется", да, но скачков не наблюдаю. Я кстати раньше сам встречал подобные косяки, отписывался на гитхабе. Вроде в последней версии косяк исправили, но не факт что в некоторых случаях он проявляется. Давай ссылку на демку с проблемой.

ilyas-> 19.08.2013 22:06

переопределение заключается в удалении ползунка и просто резервировании места, как сделать чтобы не трогал скролл вообще и скролл с ползунком оставался ?

danik.js 19.08.2013 22:38

Там есть опция, lock вроде. Смотри документацию короче.

рони 19.08.2013 22:50

ilyas->,
$(".fancybox").fancybox({
    helpers:  {
             overlay : {
            showEarly : false
        }
    }
});

ilyas-> 20.08.2013 07:18

Цитата:

Сообщение от рони (Сообщение 268257)
ilyas->,
$(".fancybox").fancybox({
    helpers:  {
             overlay : {
            showEarly : false
        }
    }
});

В какое место добавить ваш код в мой ?
$(document).ready(function(){

function fancybox_show()
{

$(function () {
    $.fancybox.open([
        {
            type: 'iframe',
            href : '/vk.html'              
           // title : '
		  
        }
    ], {
        padding : 0,
		autoSize: false,
        autoDimensions: false,
        width: 416,
        height: 416,
        fitToView: false,
        margin: 0
    });
});
 helpers:  {
             overlay : {
            showEarly : false
        }
    }
}
var date = new Date();
var mSec = 20*1000;

function show_fancybox(){

  if($.cookie('fancybox_show')){}else{
    // запускаем fancybox
fancybox_show();
       
   date.setTime(date.getTime()+mSec);
   
   $.cookie('fancybox_show', date.getTime(),{ path: "/", expires: date});
  }
}

$(function(){
   show_fancybox();
   setInterval(show_fancybox, 5000);
})

});

рони 20.08.2013 11:17

ilyas->,http://jsfiddle.net/XaWZE/
{
		padding : 0,
		autoSize: false,
        autoDimensions: false,
        width: 416,
        height: 416,
        fitToView: false,
        margin: 0 ,
        helpers : {
        overlay : {
            locked : false
        }
    }


	}

ilyas-> 20.08.2013 16:03

Цитата:

Сообщение от рони (Сообщение 268322)
ilyas->,http://jsfiddle.net/XaWZE/
{
		padding : 0,
		autoSize: false,
        autoDimensions: false,
        width: 416,
        height: 416,
        fitToView: false,
        margin: 0 ,
        helpers : {
        overlay : {
            locked : false
        }
    }


	}

Спасиба помогло

gradov81 07.11.2014 18:01

Цитата:

Сообщение от рони (Сообщение 268257)
ilyas->,
$(".fancybox").fancybox({
    helpers:  {
             overlay : {
            showEarly : false
        }
    }
});

У меня этот вариант решает проблему с вызовом первого изображения. Если нажать "Next" или "Prev" страница скролится вверх.
Как решить эту проблему, не знаете?

рони 07.11.2014 18:19

gradov81,
наличие кода повышает вероятность, что вам ответят

gradov81 07.11.2014 22:09

Цитата:

Сообщение от рони (Сообщение 339632)
gradov81,
наличие кода повышает вероятность, что вам ответят


Это родной код рекомендуемый создателем fancybox. При его использовании, если в css есть html {height: 100%;}, происходит скрол в верхнюю часть страницы когда нажимаешь на фото:

$(document).ready(function() {
$(".fancybox").fancybox({
openEffect : 'none',
closeEffect : 'none'
});
});

Этим кодом устраняется эта проблема (взят с этой страницы форума):

$('.fancybox').fancybox({
padding : 0,
helpers: {
overlay: {
locked: false
}
}
});

при вызове фото скрола нет, а вот при нажатии на прокрутку следующего или предыдущего фото срабатывает скрол в верхнюю часть.
Если не ошибаюсь, за прокрутку фото отвечает функция:
$.fancybox.next
$.fancybox.prev

При срабатывании этих функций происходит скрол вверх страницы.

рони 07.11.2014 22:41

gradov81,
http://fancyapps.com/fancybox/

если там у вас непрыгает, значит в вашем коде не учитывается нажатие на ссылку и идёт по ней переход.
либо вёрстка барахлит, либо return false нужен.

пишите макет
смотрите код ниже -- прыгает или нет???
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>

  <script type='text/javascript' src="http://fancyapps.com/fancybox/source/jquery.fancybox.js"></script>
  <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css">


  <style type='text/css'>
     div.hh{
       height: 2000px;
     }
    html {height: 100%;}
  </style>



<script type='text/javascript'>
$(function(){
$(document).ready(function() {
 $(".fancybox").fancybox({
 openEffect : 'none',
 closeEffect : 'none'
 });
 });

});

</script>


</head>
<body>
<div class="hh"></div>
  <a rel="gallery" class="fancybox" href="http://fancyapps.com/fancybox/demo/1_b.jpg"><img src="http://fancyapps.com/fancybox/demo/1_s.jpg" alt=""/></a>

<a rel="gallery" class="fancybox" href="http://fancyapps.com/fancybox/demo/2_b.jpg"><img src="http://fancyapps.com/fancybox/demo/2_s.jpg" alt=""/></a>


</body>


</html>

gradov81 08.11.2014 12:14

Цитата:

Сообщение от рони (Сообщение 339688)
gradov81,

если там у вас непрыгает, значит в вашем коде не учитывается нажатие на ссылку и идёт по ней переход.
либо вёрстка барахлит, либо return false нужен.

пишите макет
смотрите код ниже -- прыгает или нет???

Проблема с
html, body {
height:100%;
}
Без него всё работает корректно, но разваливается вёрстка.
Я не силён Javascript, но думаю эту проблему можно решить с помощью него.
Может кто поможет?

рони 08.11.2014 12:25

Цитата:

Сообщение от gradov81
Может кто поможет?

кто вам без кода поможет?

danik.js 08.11.2014 16:55

Цитата:

Сообщение от gradov81
html, body {
height:100%;
}

html{height:100%} оставить можно, а body - нет. Если верстка разваливается, значит она сделана криво, js не сделает ее ровней ))


Часовой пояс GMT +3, время: 02:07.