gpt4 book ai didi

javascript - 如何滚动到仍未呈现的页脚处的图像?

转载 作者:行者123 更新时间:2023-11-29 10:26:13 25 4
gpt4 key购买 nike

上下文

我在页面的页脚处有一张图片,例如

|header|
\\\\\\\\
\\\\\\\\
\\\\\\\\
|image|
\\\\\\\\
\\\\\\\\
|footer|

为了滚动到所述图像,我使用了:

image.scrollIntoView()

问题

但它只有在图像被浏览器完全加载时才有效。但是,如果页面未加载,页面不会滚动到它,因为图像尚未呈现并且没有正确的偏移

但是,当我将它绑定(bind)到 onload 时,它确实有效

window.onload = function(){
image.scrollIntoView()
}

不幸的是,这会导致糟糕的用户体验,因为:

  • 除了图像(仍在下载)之外,整个页面都已加载。
  • 所以用户已经在检查网站
  • 当图像完全加载时,就会发生滚动。
  • 这对用户/我来说非常刺耳而且很烦人,因为我希望页面在加载时自动滚动到它,然后检查网站(并且不检查网站一点,只是为了它突然将我滚动回图像)

最佳答案

解决方案——父容器

因此,在加载图像的情况下,您可以构建一个已知尺寸的查看器父元素,您可以在其中加载图像。此图像可以是:

  • 舒展
  • 按高度/宽度最大化(并 chop )
  • 按高度/宽度最大化(并填充)

类似于:

document.addEventListener("DOMContentLoaded", _ => {
// Handler when the DOM is fully loaded
const img = document.querySelector('#MainImage5')
setTimeout(_ => {
img.scrollIntoView()
}, 50)
});
figure {
display: block;
height: 500px;
overflow: hidden;
position: relative;
}

figure>img {
position: absolute;
left: 50%;
top: 0;
bottom: 0;
transform: translateX(-50%);
height: 100%;
display: block;
}

header,
footer {
padding: 1em;
background: #ff9800;
color: white
}

footer {
background: #4caf50
}
<body>
<header>
<h1>This is the header</h1>
</header>
<section class='Main-Content'>
<ul>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
</ul>
<figure id='MainImage'>
<img src='https://miro.medium.com/max/1200/0*UEtwA2ask7vQYW06.png'>
</figure>
<figure id='MainImage2'>
<img src='https://wallpaperplay.com/walls/full/d/c/0/20618.jpg'>
</figure>
<figure id='MainImage3'>
<img src='https://wallpaperplay.com/walls/full/d/c/0/20618.jpg'>
</figure>
<figure id='MainImage4'>
<img src='https://wallpaperplay.com/walls/full/d/c/0/20618.jpg'>
</figure>
<figure id='MainImage5'>
<img src='https://wallpaperplay.com/walls/full/d/c/0/20618.jpg'>
</figure>
<ul>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
<li>Other Point</li>
</ul>
</section>
<footer>I am the footer</footer>
</body>

注意:您可以点击运行代码段查看演示

附录

为了演示它确实是滚动到图像,我还抛光了图像上方和下方的内容,同时保留页眉和页脚。

解释

这实际上是通过允许浏览器花时间加载图像来实现的,但我们限制它的宽度以匹配容器宽度(高度自动缩放)。

编辑: 容器还需要一个最小高度才能正常滚动,我们使用 20px

关于javascript - 如何滚动到仍未呈现的页脚处的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635467/

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