gpt4 book ai didi

javascript - 绝对定位的视差元素导致页面高度过大

转载 作者:行者123 更新时间:2023-11-28 03:23:56 26 4
gpt4 key购买 nike

编辑:这是另一个 fiddle ,这个 fiddle 准确地显示了问题的发生。在我眼里,自科bgcontainer 的内部,溢出隐藏应该隐藏它:http://jsfiddle.net/9SPDq/2/

我已经为客户的网站实现了自定义视差滚动解决方案。我在问题的底部包含了相关的片段。由于该站点是一个完整的 Ajax 片段,因此背景必须与最高页面一样高,在本例中为主页。查看主页时,一切都按预期工作,因为所有部分都按照该高度排列。但是当用户导航到另一个明显更短的页面时,问题就出现了:用户可以滚动页面高度的 10 倍,因为 <html>认为它必须滚动到视差 block ,而实际上我只希望它滚动到 <body_container> 的内容.我尝试了 overflow:scroll 的各种组合和 :hidden , 无济于事。

这是我认为应该发生的事情的 js fiddle ,但似乎是因为在那个例子中什么是 #parent<html>在生产现场和#container<body> ,有东西坏了。也就是说,因为我这样做的方式 #parent需要 overflow:hidden , 它删除了生产站点中的所有滚动条,因为我正在制作 <html>overflow:hidden .

http://jsfiddle.net/vb5cp/

蓝色<section> ,在我眼里,很高兴地绝对定位在滚动区域之外,因此不应该影响 #container 的高度。 .

由于生产站点的测试版已经启动,我也会提供一个指向出现问题的页面之一的链接,以防我的描述不清楚:http://beta.firedogcreative.com/#motion_design

问题是:我如何保留视差背景片,但控制我的页面的高度,以便它们只滚动到页面内容的高度?

总结实现:

<body>
//here are the parallax pieces, with various hooks for the js that control them
<section id="bckgrnd1"></section>
<section id="bckgrnd2" data-type="background" data-speed="6"></section>
<section id="bckgrnd3" data-type="background" data-speed="5"></section>

<div id="body_container">
//actual page content
</div
</body>

每一 block 都有一些简单的css,关键是绝对定位:

#bckgrnd2 {
background: url(/media/images/parallax_pieces/smalltopFlame.png);
background-repeat: no-repeat;
background-size: auto;
height: 410px;
width: 661px;
margin-left: 215px;
position: absolute;
}

最后是完成所有工作的 js:

$(document).ready(function(){
$("html").css("background-image","none");
$("section").show();
$('section[data-type="background"]').each(function(){
var $bgobj = $(this); // assigning the object

$(window).scroll(function() {
var yPos = -($(window).scrollTop() / $bgobj.data('speed'));

// Put together our final background position
var coords = yPos + 'px';

// Move the background
$bgobj.css({ top: coords });
});
});
});

// Create HTML5 elements for IE

document.createElement("article");
document.createElement("section");

最佳答案

对于那些可以理解我的曲折和令人费解的问题并且遇到类似问题的人,这是发生了什么。

<sections> ,因为它们被用作视差滚动的背景图像容器,所以被绝对定位,因此在流之外。因为他们的容器是 <body> ,它们被视为页面的一部分,因此即使 overflow:hidden设置在 <body> ,它们不会被视为溢出,因此用户可能会向下滚动页面太远。解决方案是包含所有 <section>在单个 div 中,然后将 ADDITION 的那个 div 的高度设置为 <body> .结果正是您所期望的:用户只能向下滚动到设置的高度,正如您所希望的那样。

关于javascript - 绝对定位的视差元素导致页面高度过大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com