如何创建重叠的图像,以便在滚动时显示出来
How can I create overlapping images that reveal themselves as you scroll
我希望创建一个类似于此处所示的滚动效果:http://www.seaham-hall.co.uk/
但是我无法达到预期的效果,检查站点代码也没有给我任何提示。很难谷歌搜索,因为它也很难描述。我能找到解决方案的最接近的是这个JSFiddle:
http://jsfiddle.net/xtyus/1/
(function($){
/* Store the original positions */
var d1 = $('.one');
var d1orgtop = d1.position().top;
var d2 = $('.two');
var d2orgtop = d2.position().top;
var d3 = $('.three');
var d3orgtop = d3.position().top;
var d4 = $('.four');
var d4orgtop = d4.position().top;
/* respond to the scroll event */
$(window).scroll(function(){
/* get the current scroll position */
var st = $(window).scrollTop();
/* change classes based on section positions */
if (st >= d1orgtop) {
d1.addClass('latched');
} else {
d1.removeClass('latched');
}
if (st >= d2orgtop) {
d2.addClass('latched');
} else {
d2.removeClass('latched');
}
if (st >= d3orgtop) {
d3.addClass('latched');
} else {
d3.removeClass('latched');
}
if (st >= d4orgtop) {
d4.addClass('latched');
} else {
d4.removeClass('latched');
}
});
})(window.jQuery);
但是,我不确定这是否朝着正确的方向发展,这会拉出图像并覆盖以前的图像,但请注意,在Seaham Hall网站上,图像似乎根本没有向上移动,它们是静止的,并且在滚动时会显示出来。
如何重现此效果?我最初的想法是,当你从 1000px 向下滚动到 0px 时,第一个图像会缩小,第二个图像会增长到 1000px,当你继续滚动时,这个图像会缩小,第三个图像会变大,依此类推。但是,这意味着在第一张图像之后,所有其他图像的起始大小均为0px,并且从技术上讲,页面上不会滚动,因此这是一个问题。
我的第二个想法是,也许第二个图像固定在页面上,第一个图像在滚动时向上滑动,显示第二个图像,第二个图像似乎不会移动。一旦第一张图像离开页面顶部,第二张图像就会从页面上分离并允许滚动向上移动,而第三张图像则随着第二张图像向上移动而附加并显示,这将产生在 Seaham 网站上看到的确切效果,但我不知道这是正确答案。
如果有人可以指出我的教程或具有基本概念的 JSFiddle,我可能会从那里弄清楚。只是难倒了从哪个方向接近这个。
这是一个很好的效果。 这里有一种方法可以做到这一点。
将每个图像放在固定位置div
,它占据了整个视口(最初(并具有overflow:hidden
。
将每个div
的 z 指数设置为高于下一个div
。
当窗口滚动时,调整div
的高度作为窗口高度乘以div 在 DOM 中的位置(索引(减去窗口的 scrollTop 的函数:
$(window).scroll(function() {
$('.D').each(function(index) {
$(this).css({
height: $(window).height()*(index+1) - $(window).scrollTop()
});
});
});
其他内容需要比图像div
s 更高的 z 指数。 请注意,z 索引仅适用于定位元素。
小提琴
从技术上讲,你想要的效果不是视差背景,但它足够接近视差jQuery框架应该适合你。
我建议你研究jQuery Parallax插件,因为它们可能会提供你想要的功能,而无需太多的自定义工作。 当然,由于您正在处理大图像,因此最好密切关注资源管理;一个好的插件应该相当高效,但其他插件可能很慢或资源密集。
检查这个jquery插件:ScrollMagic
用法:取自GitHub
基本的ScrollMagic设计模式是一个控制器,它附加了几个场景。每个场景都有一个明确的开始和结束位置,并定义当容器滚动到特定偏移量时会发生什么。
/*
Basic workflow example
*/
// init controller
var controller = new ScrollMagic();
// assign handler "scene" and add it to controller
var scene = new ScrollScene({duration: 100})
.setPin("#my-sticky-element") // pins the element for a scroll distance of 100px
.addTo(controller); // add scene to controller
// adding multiple scenes at once
var scene2 = new ScrollScene();
var scene3;
controller.addScene([
scene2,
scene3 = new ScrollScene({duration: 200}), // add scene and assign handler "scene2"
new ScrollScene({offset: 20}) // add anonymous scene
]);
- 如何在Angular JS中滚动显示元素
- 如何使文本在html中滚动显示
- 粘性滚动显示两张图像
- 更改滚动显示.js视口
- 通过页面滚动显示动画
- jQuery滚动显示隐藏的内容
- 在Foundation6中创建滚动显示当前位置的导航
- 使用jquery滚动显示页面侧面的元素
- 向幻灯片放映添加滚动显示样式
- 滚动显示svg动画
- 将淡入淡出添加到此jQuery滚动显示
- 动画滚动/显示隐藏元素使用jQuery
- Angularjs无限滚动显示数据
- Ionic无限滚动显示更多的项目已经加载(不是通过httprequest)
- 有没有“电影演职员表”滚动显示?样式插件的单词列表
- 使用knockout js滚动显示分页
- 从上到下滚动显示
- 滚动显示页脚
- HI滚动显示页眉
- 依次显示滚动显示动画