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


Фотография
- - - - -

Вертикальный скроллинг


Лучший Ответ Sliapy , 05 February 2015 - 11:02

 $(function() {
       $('a').smoothScroll();
      })
  })(jQuery)

Нужно переписывать инициализацию скрипта, чтобы он применялся к конкретным ссылкам, а не ко всем. Либо использовать параметр :not - http://api.jquery.com/not/

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 mdcsfk

mdcsfk

Отправлено 05 February 2015 - 04:10

Доброго времени суток)

 

На сайтах без каталогов Zoo я всегда использовал расширение smooth scroll для того, чтобы делать кнопочки, вызывающие красивый плавный скролл к элементу на странице с определенным ID.

 

Но вот не задача: триггером является ссылка типа <a href="#ID">Go</a>, видимо из-за этого возникает забавный баг в каталоге zoo: жмакнули по кнопке "добавить в корзину" и наблюдаем плавный скролл вверх страницы.

 

Собственно вопрос:

Как это явление обойти? можно ли изменить вид триггера? чтобы он был не <a href="#ID">Go</a>, а, скажем, <a href="#" name="IDscroll">Go</a>?

Или каким-либо другим образом отключить этот баг со скроллом вверх.

 

Плагин прикрепил к сообщению

 

js плагина:

var jQ = false;
function initJQ() {
  if (typeof(jQuery) == 'undefined') {
      if (!jQ) {
          jQ = true;
          document.write(unescape('<script type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\">%3C/script%3E'));
          document.write(unescape('<script>jQuery.noConflict();%3C/script%3E'));
      }
      setTimeout('initJQ()', 50);
  } else {


/*!
 * Smooth Scroll - v1.4.13 - 2013-11-02
 * https://github.com/kswedberg/jquery-smooth-scroll
 * Copyright (c) 2013 Karl Swedberg
 * Licensed MIT (https://github.com/kswedberg/jquery-smooth-scroll/blob/master/LICENSE-MIT)
 */

(function(t){function e(t){return t.replace(/(:|\.)/g,"\\$1")}var l="1.4.13",o={},s={exclude:[],excludeWithin:[],offset:0,direction:"top",scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficent:2,preventDefault:!0},n=function(e){var l=[],o=!1,s=e.dir&&"left"==e.dir?"scrollLeft":"scrollTop";return this.each(function(){if(this!=document&&this!=window){var e=t(this);e[s]()>0?l.push(this):(e[s](1),o=e[s]()>0,o&&l.push(this),e[s](0))}}),l.length||this.each(function(){"BODY"===this.nodeName&&(l=[this])}),"first"===e.el&&l.length>1&&(l=[l[0]]),l};t.fn.extend({scrollable:function(t){var e=n.call(this,{dir:t});return this.pushStack(e)},firstScrollable:function(t){var e=n.call(this,{el:"first",dir:t});return this.pushStack(e)},smoothScroll:function(l,o){if(l=l||{},"options"===l)return o?this.each(function(){var e=t(this),l=t.extend(e.data("ssOpts")||{},o);t(this).data("ssOpts",l)}):this.first().data("ssOpts");var s=t.extend({},t.fn.smoothScroll.defaults,l),n=t.smoothScroll.filterPath(location.pathname);return this.unbind("click.smoothscroll").bind("click.smoothscroll",function(l){var o=this,r=t(this),i=t.extend({},s,r.data("ssOpts")||{}),c=s.exclude,a=i.excludeWithin,f=0,h=0,u=!0,d={},p=location.hostname===o.hostname||!o.hostname,m=i.scrollTarget||(t.smoothScroll.filterPath(o.pathname)||n)===n,S=e(o.hash);if(i.scrollTarget||p&&m&&S){for(;u&&c.length>f;)r.is(e(c[f++]))&&(u=!1);for(;u&&a.length>h;)r.closest(a[h++]).length&&(u=!1)}else u=!1;u&&(i.preventDefault&&l.preventDefault(),t.extend(d,i,{scrollTarget:i.scrollTarget||S,link:o}),t.smoothScroll(d))}),this}}),t.smoothScroll=function(e,l){if("options"===e&&"object"==typeof l)return t.extend(o,l);var s,n,r,i,c=0,a="offset",f="scrollTop",h={},u={};"number"==typeof e?(s=t.extend({link:null},t.fn.smoothScroll.defaults,o),r=e):(s=t.extend({link:null},t.fn.smoothScroll.defaults,e||{},o),s.scrollElement&&(a="position","static"==s.scrollElement.css("position")&&s.scrollElement.css("position","relative"))),f="left"==s.direction?"scrollLeft":f,s.scrollElement?(n=s.scrollElement,/^(?:HTML|BODY)$/.test(n[0].nodeName)||(c=n[f]())):n=t("html, body").firstScrollable(s.direction),s.beforeScroll.call(n,s),r="number"==typeof e?e:l||t(s.scrollTarget)[a]()&&t(s.scrollTarget)[a]()[s.direction]||0,h[f]=r+c+s.offset,i=s.speed,"auto"===i&&(i=h[f]||n.scrollTop(),i/=s.autoCoefficent),u={duration:i,easing:s.easing,complete:function(){s.afterScroll.call(s.link,s)}},s.step&&(u.step=s.step),n.length?n.stop().animate(h,u):s.afterScroll.call(s.link,s)},t.smoothScroll.version=l,t.smoothScroll.filterPath=function(t){return t.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},t.fn.smoothScroll.defaults=s})(jQuery);

(function($) {
  $(function() {
       $('a').smoothScroll();
      })
  })(jQuery)
}
}
initJQ();


php

<?php
// No direct access
defined( '_JEXEC' ) or die;

/**
 *
 * @package     Joomla.Plugin
 * @subpackage  System.Smooth_scroll
 * @since       2.5+, 3.0+
 * @copyright	Copyright (c)2013 ELLE / JoomExt.ru
 * @license	GNU GPLv3 http://www.gnu.org/licenses/gpl.html or later
 * @version 	1.0 Stable
 */

class plgSystemSmooth_scroll extends JPlugin
{
	/**
	 * Class Constructor
	 * @param object $subject
	 * @param array $config
	 */
	public function __construct( & $subject, $config )
	{
		parent::__construct( $subject, $config );
		$this->loadLanguage();
	}

	public function onBeforeCompileHead(){

    	$app = JFactory::getApplication();
		$doc = JFactory::getDocument();

		if ($app->isAdmin()) return true;

        if (version_compare(JVERSION, '3', 'ge')) JHtml::_('jquery.framework');
        $doc->addScript(JURI::base().'media/smooth_scroll/js/jquery.smooth-scroll.min.js');

	}
}

еще один php

<?php
// No direct access
defined( '_JEXEC' ) or die;

class plgSystemSmooth_ScrollInstallerScript
{

	function postflight( $type, $parent )
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery( true );
		$query->update( '#__extensions' )->set( 'enabled=1' )->where( 'type=' . $db->q( 'plugin' ) )->where( 'element=' . $db->q( 'smooth_scroll' ) );
		$db->setQuery( $query )->execute();

	}
}

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


  • 0

#2 laRus

laRus

Отправлено 05 February 2015 - 09:31

На сайтах без каталогов Zoo я всегда использовал расширение

... заставили слегка понервничать! Ясно дело, когда к чему-нибудь привыкаешь, хочется чтобы именно это всегда и работало (жаль, не всегда так получается)...

Сразу "помчалась" (sweat) проверять, будет ли мой любимый scroll работать с Zoo+JBZoo ... уф, он работает! И никаких конфликтов! (а люблю я его за то, что он легко и красиво настраивается; можно выбрать, какую JS библиотеку использовать;... и в очередной раз не подвел! :) ... а, да, и еще он бесплатный)

Посмотрите , вдруг тоже понравится (и, сам главное, не надо в не своем коде ковыряться. А это, однако ж, приятно!  ;) )

 

 

P.S. Хотите smooth? O0  Тоже есть - ВОТ, - и тоже работает без проблем (проверила только что)

Успехов!  :)


Сообщение отредактировал Ursa: 05 February 2015 - 09:41

  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#3 Sliapy

Sliapy

Отправлено 05 February 2015 - 11:02   Лучший Ответ

 $(function() {
       $('a').smoothScroll();
      })
  })(jQuery)

Нужно переписывать инициализацию скрипта, чтобы он применялся к конкретным ссылкам, а не ко всем. Либо использовать параметр :not - http://api.jquery.com/not/


  • 1
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#4 mdcsfk

mdcsfk

Отправлено 05 February 2015 - 15:04

Благодарю)

Может кому-то пригодится, решение выглядит так:

(function($) {
  $(function() {
       $('a').not( ".jsAddToCart" ).smoothScroll();
      })
  })(jQuery)
}
}
initJQ();

файл media/smooth_scroll/js/jquery.smooth-scroll.min.js


  • 0




Click to return to top of page in style!