[Common] perfect-scrollbar: set width and position for scrollbarXRail based on margins.
This commit is contained in:
parent
414f914165
commit
d16a11fb13
|
@ -95,6 +95,7 @@
|
||||||
scrollbarXWidth,
|
scrollbarXWidth,
|
||||||
scrollbarXLeft,
|
scrollbarXLeft,
|
||||||
scrollbarXBottom = parseInt($scrollbarXRail.css('bottom'), 10),
|
scrollbarXBottom = parseInt($scrollbarXRail.css('bottom'), 10),
|
||||||
|
scrollbarXRailWidth,
|
||||||
scrollbarYHeight,
|
scrollbarYHeight,
|
||||||
scrollbarYTop,
|
scrollbarYTop,
|
||||||
scrollbarYRight = parseInt($scrollbarYRail.css('right'), 10),
|
scrollbarYRight = parseInt($scrollbarYRail.css('right'), 10),
|
||||||
|
@ -122,7 +123,7 @@
|
||||||
|
|
||||||
var updateContentScrollLeft = function (currentLeft, deltaX) {
|
var updateContentScrollLeft = function (currentLeft, deltaX) {
|
||||||
var newLeft = currentLeft + deltaX,
|
var newLeft = currentLeft + deltaX,
|
||||||
maxLeft = containerWidth - scrollbarXWidth;
|
maxLeft = scrollbarXRailWidth - scrollbarXWidth;
|
||||||
|
|
||||||
if (newLeft < 0) {
|
if (newLeft < 0) {
|
||||||
scrollbarXLeft = 0;
|
scrollbarXLeft = 0;
|
||||||
|
@ -134,7 +135,7 @@
|
||||||
scrollbarXLeft = newLeft;
|
scrollbarXLeft = newLeft;
|
||||||
}
|
}
|
||||||
|
|
||||||
var scrollLeft = parseInt(scrollbarXLeft * (contentWidth - containerWidth) / (containerWidth - scrollbarXWidth), 10);
|
var scrollLeft = parseInt(scrollbarXLeft * (contentWidth - containerWidth) / (scrollbarXRailWidth - scrollbarXWidth), 10);
|
||||||
$this.scrollLeft(scrollLeft);
|
$this.scrollLeft(scrollLeft);
|
||||||
$scrollbarYRail.css({right: scrollbarYRight - scrollLeft});
|
$scrollbarYRail.css({right: scrollbarYRight - scrollLeft});
|
||||||
};
|
};
|
||||||
|
@ -147,7 +148,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
var updateScrollbarCss = function () {
|
var updateScrollbarCss = function () {
|
||||||
$scrollbarXRail.css({left: $this.scrollLeft(), bottom: scrollbarXBottom - $this.scrollTop(), width: containerWidth, display: scrollbarXActive ? "inherit": "none"});
|
$scrollbarXRail.css({left: $this.scrollLeft(), bottom: scrollbarXBottom - $this.scrollTop(), width: scrollbarXRailWidth, display: scrollbarXActive ? "inherit": "none"});
|
||||||
|
|
||||||
if ($scrollbarYRail.hasClass('in-scrolling'))
|
if ($scrollbarYRail.hasClass('in-scrolling'))
|
||||||
$scrollbarYRail.css({/*top: $this.scrollTop(),*/ right: scrollbarYRight - $this.scrollLeft(), height: scrollbarYRailHeight, display: scrollbarYActive ? "inherit": "none"});
|
$scrollbarYRail.css({/*top: $this.scrollTop(),*/ right: scrollbarYRight - $this.scrollLeft(), height: scrollbarYRailHeight, display: scrollbarYActive ? "inherit": "none"});
|
||||||
|
@ -162,13 +163,14 @@
|
||||||
containerWidth = settings.includePadding ? $this.innerWidth() : $this.width();
|
containerWidth = settings.includePadding ? $this.innerWidth() : $this.width();
|
||||||
containerHeight = settings.includePadding ? $this.innerHeight() : $this.height();
|
containerHeight = settings.includePadding ? $this.innerHeight() : $this.height();
|
||||||
scrollbarYRailHeight = containerHeight - (settings.includeMargin ? (parseInt($scrollbarYRail.css('margin-top')) + parseInt($scrollbarYRail.css('margin-bottom'))): 0);
|
scrollbarYRailHeight = containerHeight - (settings.includeMargin ? (parseInt($scrollbarYRail.css('margin-top')) + parseInt($scrollbarYRail.css('margin-bottom'))): 0);
|
||||||
|
scrollbarXRailWidth = containerWidth - (settings.includeMargin ? (parseInt($scrollbarXRail.css('margin-left')) + parseInt($scrollbarXRail.css('margin-right'))): 0);
|
||||||
contentWidth = $this.prop('scrollWidth');
|
contentWidth = $this.prop('scrollWidth');
|
||||||
contentHeight = $this.prop('scrollHeight');
|
contentHeight = $this.prop('scrollHeight');
|
||||||
|
|
||||||
if (!settings.suppressScrollX && containerWidth + settings.scrollXMarginOffset < contentWidth) {
|
if (!settings.suppressScrollX && containerWidth + settings.scrollXMarginOffset < contentWidth) {
|
||||||
scrollbarXActive = true;
|
scrollbarXActive = true;
|
||||||
scrollbarXWidth = getSettingsAdjustedThumbSize(parseInt(containerWidth * containerWidth / contentWidth, 10));
|
scrollbarXWidth = getSettingsAdjustedThumbSize(parseInt(scrollbarXRailWidth * containerWidth / contentWidth, 10));
|
||||||
scrollbarXLeft = parseInt($this.scrollLeft() * (containerWidth - scrollbarXWidth) / (contentWidth - containerWidth), 10);
|
scrollbarXLeft = parseInt($this.scrollLeft() * (scrollbarXRailWidth - scrollbarXWidth) / (contentWidth - containerWidth), 10);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
scrollbarXActive = false;
|
scrollbarXActive = false;
|
||||||
|
@ -192,8 +194,8 @@
|
||||||
if (scrollbarYTop >= scrollbarYRailHeight - scrollbarYHeight) {
|
if (scrollbarYTop >= scrollbarYRailHeight - scrollbarYHeight) {
|
||||||
scrollbarYTop = scrollbarYRailHeight - scrollbarYHeight;
|
scrollbarYTop = scrollbarYRailHeight - scrollbarYHeight;
|
||||||
}
|
}
|
||||||
if (scrollbarXLeft >= containerWidth - scrollbarXWidth) {
|
if (scrollbarXLeft >= scrollbarXRailWidth - scrollbarXWidth) {
|
||||||
scrollbarXLeft = containerWidth - scrollbarXWidth;
|
scrollbarXLeft = scrollbarXRailWidth - scrollbarXWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateScrollbarCss();
|
updateScrollbarCss();
|
||||||
|
@ -461,7 +463,7 @@
|
||||||
$scrollbarXRail.bind('click' + eventClassName, function (e) {
|
$scrollbarXRail.bind('click' + eventClassName, function (e) {
|
||||||
var halfOfScrollbarLength = parseInt(scrollbarXWidth / 2, 10),
|
var halfOfScrollbarLength = parseInt(scrollbarXWidth / 2, 10),
|
||||||
positionLeft = e.pageX - $scrollbarXRail.offset().left - halfOfScrollbarLength,
|
positionLeft = e.pageX - $scrollbarXRail.offset().left - halfOfScrollbarLength,
|
||||||
maxPositionLeft = containerWidth - scrollbarXWidth,
|
maxPositionLeft = scrollbarXRailWidth - scrollbarXWidth,
|
||||||
positionRatio = positionLeft / maxPositionLeft;
|
positionRatio = positionLeft / maxPositionLeft;
|
||||||
|
|
||||||
if (positionRatio < 0) {
|
if (positionRatio < 0) {
|
||||||
|
|
Loading…
Reference in a new issue