所以我试图在页面加载时让特定元素在屏幕上居中。该元件的两侧两侧是一个窗口宽度为100%的元件。
最终,会有更多的部分,我希望用户能够在所有部分之间自由滚动,但为了我正在做的网络应用程序的目的,我需要能够控制滚动还有javascript。
Here's a Fiddle to try it out.正如你所看到的,它适用于小提琴。 现在,当我将它加载到我的页面上时,它会在正确的位置闪烁,然后转到浏览器认为它最后滚动的位置。如果您将页面加载为新的,那么它将为0.如果您向右滚动一点,那么无论该变量是什么,它都将接管并将元素滚动到该点而不是指定的点。有时您可以看到元素应该在哪里,然后它会回到浏览器认为你最后的位置。
您可以在此处查看其实例:http://www.playafterdj.com/index2.php
简单的HTML:
<div class="wrapper">
<section class="fill"></section>
<section class="init"></section>
<section class="fill"></section>
</div>
CSS:
* {
margin:0;
padding:0;
box-sizing:border-box;
}
html, body {
width:100%;
height:100%;
position:relative;
}
.wrapper {
width:100%;
height:100%;
position:relative;
white-space: nowrap;
}
section {
width: 100%;
max-width: 640px;
height: 100%;
background-color: #313138;
padding: 10px;
margin-right: 20px;
display: inline-block;
vertical-align: top;
}
section.fill {
width: 100%;
max-width:100%;
margin-right: 0;
background-color: transparent;
padding:0;
}
最后是JS:
$(window).load(function(){
var winW = $(window).width();
var sectionW = $('.init').width();
var startPos = (winW/2)+(sectionW/2)+15;
$('body').scrollLeft(startPos);
});
所以,我使用startPos
得到正确的号码。在小提琴中,您可以通过滚动并看到startPos
与身体的scrollLeft()
匹配来测试它。不幸的是浏览器会覆盖它。我试过使用这几个答案但没有用:
Prevent automatic browser scroll on refresh
Disable brower's auto scroll after a page refresh?
有什么建议吗?
答案 0 :(得分:1)
您似乎正在尝试滚动.wrapper
div,但它未设置为可滚动。
在overflow-x:scroll;
上设置.wrapper
即可。
.wrapper {
overflow-x:scroll;
}
或者,如果要滚动的内容是body
,而不是
$('.wrapper').scrollLeft(startPos);
DO
$(document.body).scrollLeft(startPos);
这两种方法都有效。