Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2014, 17:30
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Скроллинг событие мыши
Скажите пожалуйста как организовать вот такой скролл с применением easing http://easings.net/ru

к примеру есть два блока, да
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"></script>
<div id="slide2"></div>
<div id="slide1"></div>
<style>
#slide1{
position:absolute;
width:100%;
height:100%;
background:rgb(61,115,153);
}
#slide2{
position:absolute;
width:100%;
height:100%;
background:rgb(255,95,64);

}
</style>	
<script>

  function addHandler(object, event, handler) {
    if (object.addEventListener) {
      object.addEventListener(event, handler, false);
    }
    else if (object.attachEvent) {
      object.attachEvent('on' + event, handler);
    }
    else alert("Обработчик не поддерживается");
  }
 
  addHandler(window, 'DOMMouseScroll', wheel);
  addHandler(window, 'mousewheel', wheel);
  addHandler(document, 'mousewheel', wheel);
 
  function wheel(event) {
    var delta; // Направление колёсика мыши
    event = event || window.event;
 
    if (event.wheelDelta) { // В Opera и IE
      delta = event.wheelDelta / 120;
     
      if (window.opera) delta = -delta; // Дополнительно для Opera
    }
    else if (event.detail) { // Для Gecko
      delta = -event.detail / 3;
    }
   
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
    
	if (delta<0){
	$('#slide1').animate({"top": "-100%"},  'easeInBounce');
	}
  }
</script>



Оба имеют абсолютное позиционирование и надо чтобы первый уехал вверх с эффектом по прокрутке колесика, подскажите кодом пожалуйста, так как я пробую не получается

Последний раз редактировалось imedia, 20.05.2014 в 18:53.
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2014, 18:44
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

// мини библа для удобства
(function(WheelControl) {
  WheelControl.prototype = {
    constructor: WheelControl,
    _freezed: true,
    _onwheel: function(fn) {
      var self = this;
      return this._onwheel.fn = function(e) {
        e = e || window.event;
        if (!e.preventDefault) {
          e.preventDefault = function() {
            e.returnValue = false;
          }
        }
        fn.call(self, (-e.detail / 3) || (e.wheelDelta / 120), e);
      }
    },
    bind: function(fn) {
      this._onwheel.fn = this._onwheel(fn);
      this.unfreeze();
      return this;
    },
    unbind: function() {
      this.freeze();
      this._onwheel.fn = null;
      return this;
    },
    freeze: function() {
      this._freezed = true;
      this.elem[this._params.removeName](this._params.wheelType, this._onwheel.fn, false);
      return this;
    },
    unfreeze: function() {
      if (this._onwheel.fn && this._freezed) {
        this.elem[this._params.addName](this._params.wheelType, this._onwheel.fn, false);
        this._freezed = false;
      }
      return this;
    }
  };
})(window.WheelControl = function WheelControl(elem) {
  if (!(this instanceof WheelControl)) {
    return new WheelControl(elem);
  }
  if (!(this.elem = elem)) {
    throw Error('The parameter must be an HTML element');
  }

  this._params = {
    addName: elem.addEventListener ? 'addEventListener' : 'attachEvent',
    removeName: elem.removeEventListener ? 'removeEventListener' : 'detachEvent',
    wheelType: elem.addEventListener ? ('onwheel' in document ? 'wheel' :
      'onmousewheel' in document ? 'mousewheel' : 'MozMousePixelScroll') : 'onmousewheel'
  };
});

// =====================================================
// работа с минибиблой
// =====================================================
WheelControl(document).bind(function(delta, event) {
  // заморозим получение события колеса мыши
  this.freeze();

  // ... что-то тут делаем, анимируем, и прочие действия
  if (delta > 0) {
    // колесо крутят вверх, на начало страницы
  } else if (delta < 0) {
    // колесо крутят вниз, в конец страницы
  }

  // отменяем действие по умолчанию
  event.preventDefault();

  // теперь можем снова получать событие
  this.unfreeze();
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 20.05.2014 в 19:19.
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2014, 18:55
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

событие я поймал, смотрите код выше а вот с easing не получается
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2014, 19:08
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

и что же ты не можешь понять?
<script src="http://code.jquery.com/jquery-latest.js"></script>
<div id="slide2">Привет мир!</div>
<div id="slide1">Hello world!</div>
<style>
html, body {
  padding: 0;
  margin: 0;
}
#slide1 {
  top: 0;
  position: fixed;
  width:100%;
  height:100%;
  background:rgb(61,115,153);
}
#slide2 {
  top: 100%;
  position: fixed;
  width:100%;
  height:100%;
  background:rgb(255,95,64);
}
</style> 
<script>
// мини библа для удобства
(function(WheelControl) {
  WheelControl.prototype = {
    constructor: WheelControl,
    _freezed: true,
    _onwheel: function(fn) {
      var self = this;
      return this._onwheel.fn = function(e) {
        e = e || window.event;
        if (!e.preventDefault) {
          e.preventDefault = function() {
            e.returnValue = false;
          }
        }
        fn.call(self, (-e.detail / 3) || (e.wheelDelta / 120), e);
      }
    },
    bind: function(fn) {
      this._onwheel.fn = this._onwheel(fn);
      this.unfreeze();
      return this;
    },
    unbind: function() {
      this.freeze();
      this._onwheel.fn = null;
      return this;
    },
    freeze: function() {
      this._freezed = true;
      this.elem[this._params.removeName](this._params.wheelType, this._onwheel.fn, false);
      return this;
    },
    unfreeze: function() {
      if (this._onwheel.fn && this._freezed) {
        this.elem[this._params.addName](this._params.wheelType, this._onwheel.fn, false);
        this._freezed = false;
      }
      return this;
    }
  };
})(window.WheelControl = function WheelControl(elem) {
  if (!(this instanceof WheelControl)) {
    return new WheelControl(elem);
  }
  if (!(this.elem = elem)) {
    throw Error('The parameter must be an HTML element');
  }
 
  this._params = {
    addName: elem.addEventListener ? 'addEventListener' : 'attachEvent',
    removeName: elem.removeEventListener ? 'removeEventListener' : 'detachEvent',
    wheelType: elem.addEventListener ? ('onwheel' in document ? 'wheel' :
      'onmousewheel' in document ? 'mousewheel' : 'MozMousePixelScroll') : 'onmousewheel'
  };
});
 
// =====================================================
// работа с минибиблой
// =====================================================
WheelControl(document).bind(function(delta, event) {
  var self = this;

  // заморозим получение события колеса мыши
  self.freeze();
 
  // ... что-то тут делаем, анимируем, и прочие действия
  if (delta > 0) {
    $('#slide2').animate({"top": "100%"}, 'easeOutBounce');
    $('#slide1').animate({"top": "0"}, 'easeOutBounce', function() {
      self.unfreeze();
    });
  } else if (delta < 0) {
    $('#slide1').animate({"top": "-100%"}, 'easeOutBounce');
    $('#slide2').animate({"top": "0"}, 'easeOutBounce', function() {
      self.unfreeze();
    });
  }
 
  // отменяем действие по умолчанию
  event.preventDefault();
});
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 20.05.2014 в 19:19.
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2014, 19:15
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Но ваш код не работает в просмотрщике, кроме того если прописать easeOutQuart то нет не какой разницы между стандартной анимацией ease
http://easings.net/ru

Последний раз редактировалось imedia, 20.05.2014 в 19:18.
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2014, 19:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от imedia
в просмотрщике
что за просмотрщик?
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2014, 19:55
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

если на вашем коде просмотреть нажать, событие я сделал а вот easing easeOutQuart не идет
Ответить с цитированием
  #8 (permalink)  
Старый 20.05.2014, 20:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,127

Сообщение от imedia
easing easeOutQuart не идет
добавьте jquery-ui и добавьте duration
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие "наведение курсора мыши на элемент" SilentChild Элементы интерфейса 1 05.10.2011 16:06
Событие движения мыши GLeBaTi Events/DOM/Window 8 02.03.2011 16:01
Скроллинг Грида колесом мыши по горизонтали serega063 ExtJS 0 01.09.2010 13:14
Событие mouseout при наведении мыши на пункт меню WalterScott Events/DOM/Window 2 12.05.2009 22:05
Как имитировать событие мыши Andrey_V Общие вопросы Javascript 4 10.11.2008 16:39