मैं "अतिप्रवाह: छिपी" विधि से चिपकना पसंद करता हूं और सिर्फ पैडिंग-राइट जोड़ता हूं जो स्क्रॉलबार की चौड़ाई के बराबर है।
खोए हुए स्रोत से स्क्रॉलबार चौड़ाई फ़ंक्शन प्राप्त करें ।
function getScrollbarWidth() {
var outer = document.createElement("div");
outer.style.visibility = "hidden";
outer.style.width = "100px";
outer.style.msOverflowStyle = "scrollbar"; // needed for WinJS apps
document.body.appendChild(outer);
var widthNoScroll = outer.offsetWidth;
// force scrollbars
outer.style.overflow = "scroll";
// add innerdiv
var inner = document.createElement("div");
inner.style.width = "100%";
outer.appendChild(inner);
var widthWithScroll = inner.offsetWidth;
// remove divs
outer.parentNode.removeChild(outer);
return widthNoScroll - widthWithScroll;
}
ओवरले दिखाते समय, html में "noscroll" क्लास जोड़ें और बॉडी में पैडिंग-राइट जोड़ें:
$(html).addClass("noscroll");
$(body).css("paddingRight", getScrollbarWidth() + "px");
छुपाते समय, क्लास को हटाकर पैडिंग करें:
$(html).removeClass("noscroll");
$(body).css("paddingRight", 0);
Noscroll शैली सिर्फ यह है:
.noscroll { overflow: hidden; }
ध्यान दें कि यदि आपके पास कोई भी तत्व है: तो आपको उन तत्वों में भी पैडिंग जोड़ने की जरूरत है।