ฉันเพียงแค่ให้การปรับแต่งเล็ก ๆ น้อย ๆ เพื่อแก้ปัญหาโดยTFE โดยเฉพาะอย่างยิ่งฉันได้เพิ่มการควบคุมเพิ่มเติมบางอย่างเพื่อให้แน่ใจว่าไม่มีการเปลี่ยนแปลงของเนื้อหาของหน้า (aka การเปลี่ยนหน้า ) เมื่อตั้งค่าแถบเลื่อนเป็นhidden
เมื่อเลื่อนมีการตั้งค่า
สองฟังก์ชั่น Javascript lockScroll()
และunlockScroll()
สามารถกำหนดตามลำดับเพื่อล็อคและปลดล็อคการเลื่อนหน้า
function lockScroll(){
$html = $('html');
$body = $('body');
var initWidth = $body.outerWidth();
var initHeight = $body.outerHeight();
var scrollPosition = [
self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
];
$html.data('scroll-position', scrollPosition);
$html.data('previous-overflow', $html.css('overflow'));
$html.css('overflow', 'hidden');
window.scrollTo(scrollPosition[0], scrollPosition[1]);
var marginR = $body.outerWidth()-initWidth;
var marginB = $body.outerHeight()-initHeight;
$body.css({'margin-right': marginR,'margin-bottom': marginB});
}
function unlockScroll(){
$html = $('html');
$body = $('body');
$html.css('overflow', $html.data('previous-overflow'));
var scrollPosition = $html.data('scroll-position');
window.scrollTo(scrollPosition[0], scrollPosition[1]);
$body.css({'margin-right': 0, 'margin-bottom': 0});
}
ที่ฉันคิดว่า<body>
ไม่มีระยะเริ่มต้น
position:fixed
แจ้งให้ทราบว่าในขณะที่การแก้ปัญหาดังกล่าวข้างต้นการทำงานในส่วนของกรณีการปฏิบัติมันไม่ได้เป็นที่ชัดเจนตั้งแต่มันต้องปรับแต่งเพิ่มเติมบางอย่างสำหรับหน้าเว็บที่มีตัวอย่างเช่นส่วนหัวกับ ลองเป็นกรณีพิเศษพร้อมตัวอย่าง สมมติว่ามี
<body>
<div id="header">My fixedheader</div>
<!--- OTHER CONTENT -->
</body>
กับ
#header{position:fixed; padding:0; margin:0; width:100%}
จากนั้นควรเพิ่มสิ่งต่อไปนี้ในฟังก์ชั่นlockScroll()
และunlockScroll()
:
function lockScroll(){
//Omissis
$('#header').css('margin-right', marginR);
}
function unlockScroll(){
//Omissis
$('#header').css('margin-right', 0);
}
ในที่สุดดูแลค่าเริ่มต้นที่เป็นไปได้สำหรับระยะขอบหรือแผ่นรอง