refactor(polyfill) scrollIntoViewIfNeeded

This commit is contained in:
coderaiser 2014-09-09 04:51:58 -04:00
parent 5198cb5f6e
commit b30c039397

View file

@ -110,7 +110,7 @@ var Util, DOM, jQuery;
/* function polyfill webkit standart function
* https://gist.github.com/2581101
*/
DOM.scrollIntoViewIfNeeded = function(pElement, centerIfNeeded) {
DOM.scrollIntoViewIfNeeded = function(element, centerIfNeeded) {
var parent,
topWidth,
leftWidth,
@ -127,7 +127,7 @@ var Util, DOM, jQuery;
if (arguments.length === 1)
centerIfNeeded = false;
parent = pElement.parentNode;
parent = element.parentNode;
parentComputedStyle = window.getComputedStyle(parent, null);
topWidth = parentComputedStyle.getPropertyValue('border-top-width');
@ -136,21 +136,21 @@ var Util, DOM, jQuery;
parentBorderTopWidth = parseInt(topWidth, 10);
parentBorderLeftWidth = parseInt(leftWidth, 10);
overTop = pElement.offsetTop - parent.offsetTop < parent.scrollTop,
overTop = element.offsetTop - parent.offsetTop < parent.scrollTop,
overBottom =
(pElement.offsetTop -
(element.offsetTop -
parent.offsetTop +
pElement.clientHeight -
element.clientHeight -
parentBorderTopWidth) >
(parent.scrollTop + parent.clientHeight),
overLeft = pElement.offsetLeft -
overLeft = element.offsetLeft -
parent.offsetLeft < parent.scrollLeft,
overRight =
(pElement.offsetLeft -
(element.offsetLeft -
parent.offsetLeft +
pElement.clientWidth -
element.clientWidth -
parentBorderLeftWidth) >
(parent.scrollLeft + parent.clientWidth),
@ -158,22 +158,22 @@ var Util, DOM, jQuery;
if ((overTop || overBottom) && centerIfNeeded)
parent.scrollTop =
pElement.offsetTop -
element.offsetTop -
parent.offsetTop -
parent.clientHeight / 2 -
parentBorderTopWidth +
pElement.clientHeight / 2;
element.clientHeight / 2;
if ((overLeft || overRight) && centerIfNeeded)
parent.scrollLeft =
pElement.offsetLeft -
element.offsetLeft -
parent.offsetLeft -
parent.clientWidth / 2 -
parentBorderLeftWidth +
pElement.clientWidth / 2;
element.clientWidth / 2;
if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded)
pElement.scrollIntoView(alignWithTop);
element.scrollIntoView(alignWithTop);
}
};