我有一个脚本,其 div 的宽度大于其父级,父级设置为overflow: hidden;
. 我有 javascript 设置left
大 div 的位置以创建“页面”。您可以单击链接在页面之间移动。
所有这些都很好,但问题是如果您从一个“页面”元素切换到另一个,它会完全打乱所有左侧定位以在页面之间移动。
您可以在我设置的小提琴中重新创建此错误,方法是将您的焦点设置为第一页上的输入框之一,然后使用制表符直到它带您进入第二页。
我在这里设置了一个演示。
重要的代码如下:
HTML:
<div class="form">
<div class="pagesContainer">
<div class="page" class="active">
<h2>Page One</h2>
[... Page 1 Content here...]
</div>
<div class="page">
<h2>Page Two</h2>
[... Page Content here...]
</div>
</div>
CSS:
.form {
width: 400px;
position: relative;
overflow: hidden;
border: 1px solid #000;
float: left;
}
.pagesContainer {
position: relative; /*Width set to 10,000 px in js
}
.form .page {
width: 400px;
float: left;
}
JS:
slidePage: function(page, direction, currentPage) {
if (direction == 'next') {
var animationDirection = '-=';
if (page.index() >= this.numPages) {
return false;
}
}
else if (direction == 'previous') {
var animationDirection = '+=';
if (page.index() < 0) {
return false;
}
}
//Get page height
var height = page.height();
this.heightElement.animate({
height: height
}, 600);
//Clear active page
this.page.removeClass('active');
this.page.eq(page.index()).addClass('active');
//Locate the exact page to skip to
var slideWidth = page.outerWidth(true) * this.difference(this.currentPage.index(), page.index());
this.container.animate({
left: animationDirection + slideWidth
}, 600);
this.currentPage = page;
}
主要问题是,当您从第一页上的输入框到第二页上的某个内容时,无论发生什么,它都会带您到那里,但 css 仍然认为您在left: 0px;
. 我一直在寻找解决方案,但到目前为止,谷歌向我透露的所有内容都是如何停止滚动条滚动。
任何帮助或建议将不胜感激,谢谢!
PS html 是这样设置的,因此如果禁用了 javascript,它仍然会全部显示在一个页面上并且仍然可以正常运行。