Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как изменить скрипт горизонтальной прокрутки? (https://javascript.ru/forum/dom-window/64859-kak-izmenit-skript-gorizontalnojj-prokrutki.html)

LADYX 09.09.2016 16:58

Как изменить скрипт горизонтальной прокрутки?
 
Добрый день! Как можно изменить скрипт горизонтальной прокрутки? А именно избежать использование в стиле свойства white-space. Огромное спасибо за помощь!

var $hor = $("#horizontal");

$("body").css('padding-bottom', $hor[0].scrollLeft = $hor[0].scrollWidth - $hor.outerWidth());

$(window).on('scroll', function () {
  var top = $(document).scrollTop();
  var width = $hor[0].scrollWidth - $hor.outerWidth();
  var lim = $hor.position().top - (width - $hor[0].scrollLeft) - ($(window).height() - $hor.outerHeight()) / 2;
  var delta = Math.min(Math.max(top - lim, 0), width);

  $hor[0].scrollLeft = width - delta;
  $("body").css({'padding-top': delta, 'padding-bottom': width - delta});
});


<style>
#horizontal {
  white-space: nowrap;
  font-size: 3em;
  overflow: hidden;
  margin: 0;
}

#horizontal > div {
  display: inline-block;
  width: 100%;
  white-space: normal;
}
</style>
<p></p>
<div id="horizontal">
<div style="background:silver">Как изменить скрипт горизонтальной прокрутки?</div>
<div style="background:antiquewhite">Как изменить скрипт горизонтальной прокрутки?</div>
</div>
<p></p>

рони 09.09.2016 17:25

LADYX,
макет в сборе попробуйте сделать, иначе непонятно как влияет white-space

LADYX 09.09.2016 20:41

Цитата:

Сообщение от рони (Сообщение 428174)
LADYX,
макет в сборе попробуйте сделать, иначе непонятно как влияет white-space

Посмотрите, пожалуйста, дополнил

рони 09.09.2016 21:04

LADYX,
а какой эффект вы хотите получить в результате?

LADYX 09.09.2016 21:29

На примере этой страницы - http://recruit.aif.ru/#id=3 Во время вертикальной прокрутки страницы как колесиком мыши, так и скроллингом, когда доходим до блока с узкой горизонтальной фотографией, страница останавливается с центрированием фотографии по вертикали страницы, и начинается горизонтальная прокрутка контента внутри этой фотографии, после чего продолжается вертикальная прокрутка страницы.

рони 09.09.2016 23:06

скрипт для эффекта с горизонтальной прокруткой при вертикальном скроле
 
LADYX,
возможный вариант ... и не могли бы вы удалить код растянуший страницу
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
var $hor = $("#horizontal");
$("body").css('padding-bottom', $(window).width()*2);
var delta = 0;
$(window).on('scroll', function () {
  var top = $(document).scrollTop();
  var width = $(window).width();
  var lim = $hor.position().top - (delta ) - ($(window).height() - $hor.outerHeight()) / 2;
  delta = Math.min(Math.max(top - lim, 0), width * 2);

  $("div:first", $hor).css({left : delta});
  $("div:last", $hor).css({left : -(width*2 - delta)});
  $("body").css({'padding-top': delta, 'padding-bottom': width*2 - delta});
});

});
  </script>
</head>

<body>
<style>
#horizontal {
  position: relative;
  width: 100%;
  font-size: 2em;
  border: 1px solid #0000FF;
  margin: 0;
  overflow: hidden;
  height: 150px;
}

#horizontal > div {
  width: 100%;
  position: absolute;
  left: -100%;
  top:25%;
}

p{
  height: 1000px;
}

</style>
<p></p>
<div id="horizontal">
<div style="background:silver">Как изменить скрипт горизонтальной прокрутки?1</div>
<div style="background:antiquewhite">Как изменить скрипт горизонтальной прокрутки?2</div>
</div>
<p></p>

</body>
</html>

LADYX 09.09.2016 23:39

рони
Код, который растягивал страницу, удалил.
Ваш код буду пробовать использовать. И хотел бы вам сказать огромное спасибо за помощь!

LADYX 09.09.2016 23:48

Да, у меня все работает! Ура!
рони
Огромное спасибо за помощь! Желаю вам Удачи!

LADYX 10.09.2016 13:28

рони,
Я дико извиняюсь! Попробовал использовать прокрутку в блоках. И не могу понять, у меня не получается. Первый блок виден, а второй хоть тресни, ну не прокручивается он, и все тут! Я вот набросал, посмотрите, пожалуйста, что я делаю не так, где моя ошибка. Еще раз прошу прощения https://jsfiddle.net/LADYX/3ep4pha5/

рони 10.09.2016 15:03

LADYX,
укажите селекторы перемещаемых блоков
$(".horizontal:first", $hor).css({left : delta});
  $(".horizontal:last", $hor).css({left : -(width*2 - delta)});


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