Перейти к содержимому


Скроллинг в начало страницы


  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 26 November 2012 - 08:55 PM

Нашел в инете такую вот,на мой взгляд, полезную штуку, как авто скроллинг вверх экрана при нажатии на определенную кнопку (картинку). Удобно, если на странице очень много текста, а пользователю захочется быстро вернуться к самому началу этой страницы.Может, кому пригодиться :)

В head.tpl.html вставляем :

<![if !lte IE 8.0]>
{literal}
<script type="text/javascript">
(function() {
function $(id){
return document.getElementById(id);
}
function goTop(acceleration, time) {
acceleration = acceleration || 0.1;
time = time || 12;
var dx = 0;
var dy = 0;
var bx = 0;
var by = 0;
var wx = 0;
var wy = 0;
if (document.documentElement) {
  dx = document.documentElement.scrollLeft || 0;
  dy = document.documentElement.scrollTop || 0;
}
if (document.body) {
  bx = document.body.scrollLeft || 0;
  by = document.body.scrollTop || 0;
}
var wx = window.scrollX || 0;
var wy = window.scrollY || 0;
var x = Math.max(wx, Math.max(bx, dx));
var y = Math.max(wy, Math.max(by, dy));
var speed = 1 + acceleration;
window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
if(x > 0 || y > 0) {
  var invokeFunction = "top.goTop(" + acceleration + ", " + time + ")"
  window.setTimeout(invokeFunction, time);
}
return false;
}
//*
function scrollTop(){
var el = $('gotop');
var stop = (document.body.scrollTop || document.documentElement.scrollTop);
if(stop>400){
  if(el.style.display!='block'){
   el.style.display='block';
   smoothopaque(el, 0, 100, 1);
  }
}
else
  el.style.display='none';
return false;
}
// Плавная смена прозрачности
function smoothopaque(el, startop, endop, inc){
op = startop;
// Устанавливаем прозрачность
setopacity(el, op);
// Начинаем изменение прозрачности
setTimeout(slowopacity, 1);
function slowopacity(){
  if(startop < endop){
   op = op + inc;
   if(op < endop){
    setTimeout(slowopacity, 1);
   }
  }else{
   op = op - inc;
   if(op > endop){
    setTimeout(slowopacity, 1);
   }
  }
  setopacity(el, op);
};
};
// установка opacity
function setopacity(el, opacity){
el.style.opacity = (opacity/100);
el.style.filter = 'alpha(opacity=' + opacity + ')';
};
if (window.addEventListener){
window.addEventListener("scroll", scrollTop, false);
window.addEventListener("load", scrollTop, false);
}
else if (window.attachEvent){
window.attachEvent("onscroll", scrollTop);
window.attachEvent("onload", scrollTop);
}
window['top'] = {};
window['top']['goTop'] = goTop;  
})();
</script>
{/literal}
<![endif]>

В style.css :

.scrollTop{
  background:url(ссылка на картинку) 0 0 no-repeat;
  display:block; width:50px; height:50px;
  position:fixed; bottom:10px; left:47%;
  z-index:2000;
}
.scrollTop:hover{ background-position:0 -58px; }

"Ссылка на картинку" - ссылка на свою картинку, которая будет появлятся при скроллинге (например какая нибудь симпатичная стрелочка). Один из вариантов картинки прилагаю. Ширина и высота в стилях указана исходя из размера именно этой картинки.

В index.tpl.html где нибудь в подвале вставляем :

<![if !lte IE 8.0]>
<a id="gotop" class="scrollTop" href="#" onclick="top.goTop(); return false;"></a>
<![endif]>

Коды
<![if !lte IE 8.0]>
и
<![endif]>
нужны, так как в этом замечательном продукте Microsoft (IE 8 и ниже) все это дело работает не совсем так, как нужно :)

Прикрепленные файлы

  • Прикрепленный файл  arr.png   4.04К   41 Количество загрузок:

  • 2

#2 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 26 November 2012 - 09:37 PM

Помилуйте, ну зачем такой длинный код для такого простого действия? Достаточно простой ссылки:

<a href="#" onclick="scroll(0,0); return false">вверх страницы</a>

  • 0

#3 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 26 November 2012 - 10:38 PM

Так и быть, милую :) Данная штука может быть интересна не самим скроллингом конечно, а, скорее тем, с каким эффектом он происходит и, благодаря этому, возможностью прокручивать экран вверх с любого места страницы, а не только с самого ее низа (или другого фиксированного положения). Но, не спорю, код слишком громоздкий и, возможно, никому не нужный.
  • 1

#4 Absolut

    Пользователь

  • Download User
  • PipPip
  • 17 сообщений
Репутация: 1
Начинающий

Отправлено 25 September 2013 - 04:00 PM

Спасибо за скрипт! Очень полезная на мой взгляд вещь, особенно, когда много товаров просматриваешь и лень нажать кнопку "Home". В архиве готовые файлы для стандартного шаблона, может кому понадобится.

Прикрепленные файлы


  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 September 2013 - 06:41 PM

В архиве готовые файлы для стандартного шаблона, может кому понадобится

Большинство сайтов на ShopCMS используют библиотеку Jquery, а с ней эта кнопка делается намного проще.
Файл arr.png берем из первого сообщения темы.

1. в файл style.css добавляем

/* button "to top" */
.scrollTop{background:url(arr.png) 0 0 no-repeat; display:block; width:50px; height:50px; position:fixed; bottom:10px; right:15%; z-index:2000;}  
.scrollTop:hover{ background-position:0 -58px; }  


2. в файл user.js добавляем


(function($){
$(function(){
var e = $(".scrollTop"),
speed = 500;

e.click(function(){
$("html:not(:animated)" +( !$.browser.opera ? ",body:not(:animated)" : "")).animate({ scrollTop: 0}, 500 );
return false; //важно!
});
//появление
function show_scrollTop(){
( $(window).scrollTop()>300 ) ? e.fadeIn(600) : e.hide();
}
$(window).scroll( function(){show_scrollTop()} ); show_scrollTop();
});

})(jQuery)



3. перед </body> в index.tpl.html вставляем


<a class='scrollTop' href='#header' style='display:none;'></a>


Писал не я, просто буквально на днях возникла надобность. Найдено в инете.
  • 2
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 Absolut

    Пользователь

  • Download User
  • PipPip
  • 17 сообщений
Репутация: 1
Начинающий

Отправлено 27 September 2013 - 03:44 PM

2 badisoft

Ну как вам не сказать спасибо в очередной раз! Благодарствую и конечно же +1 к репутации!!!

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

<![if !lte IE 8.0]>
<link href="style.css" id=defaultCSS rel=stylesheet type=text/css>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script src="Путь до файла up.js" type="text/javascript"></script>
<a id="gotop" class="scrollTop" href="#" onclick="top.goTop(); return false;"></a>


Данный метод от первоначально предложенного варианта отличает моментальная прокрутка к началу страницы, как говорится красоты нет, но свою работу выполняет как положено.

Сообщение отредактировал Absolut: 02 October 2013 - 11:30 PM

  • 0