Javascript 网站显示效果中的视差滚动(初始风格)

Javascript 网站显示效果中的视差滚动(初始风格),javascript,jquery,html,css,parallax,Javascript,Jquery,Html,Css,Parallax,我想创建一个网页网站,使用像这样的视差效果:。我做了所有的研究,但我没有找到任何例子来解释如何做,或者这个视差效应的名字是什么。我真的需要帮助 这种效果会在滚动时放大页面,如下面的GIF所示 以下是我目前掌握的情况: html{ 高度:600vh; 溢出:-moz滚动条垂直; 溢出y:滚动; } 身体{ 填充:0; 保证金:0; 宽度:100vw; 高度:100vh; 显示器:flex; 弯曲方向:立柱; 位置:固定; 对齐项目:居中; 论证内容:结束; } #母公司{ 填充:0; 保证金:

我想创建一个网页网站,使用像这样的视差效果:。我做了所有的研究,但我没有找到任何例子来解释如何做,或者这个视差效应的名字是什么。我真的需要帮助

这种效果会在滚动时放大页面,如下面的GIF所示

以下是我目前掌握的情况:

html{
高度:600vh;
溢出:-moz滚动条垂直;
溢出y:滚动;
}
身体{
填充:0;
保证金:0;
宽度:100vw;
高度:100vh;
显示器:flex;
弯曲方向:立柱;
位置:固定;
对齐项目:居中;
论证内容:结束;
}
#母公司{
填充:0;
保证金:0;
高度:600vh;
宽度:100vw;
显示器:flex;
弯曲方向:立柱;
变换样式:保留-3d;
透视图:250px;
}
.第页{
填充:0;
保证金:0;
高度:100vh;
宽度:100vw;
位置:绝对位置;
背景:rgba(0,0,0,0.1);
文本对齐:居中;
盒影:镶嵌5px 5px红色,镶嵌-5px-5px红色;
}
.第页:第n个子项(1){
变换:比例(1);
}
.页码:第n个孩子(2){
底部-98%;
变换:translate3d(0,0,-500px);
}
.页码:第n个孩子(3){
底部:-196%;
转换:translate3d(0,0,-1000px);
}
.页码:第n个孩子(4){
底部:-294%;
变换:translate3d(0,0,-1500px);
}
.页码:第n个孩子(5){
底部:-392%;
转换:translate3d(0,0,-2000px);
}
.页码:第n个孩子(6){
底部:-490%;
转换:translate3d(0,0,-2500px);
}

第1页
第2页
第3页
第4页
第5页
第6页

我不太确定这种滚动效果叫什么-缩放页面滚动?-但它可以在现代浏览器中通过CSS比例转换和少量JavaScript实现

设置页面部分的样式 我通过给它们一个位置
absolute
并固定它们的CSS坐标,将我的部分堆叠在彼此的顶部

HTML:

设置每个部分的初始比例。 我希望每个部分的大小是前一部分的三分之一。这意味着第一部分的比例为1;第二个比例为1/3;第三个是1/9,第四个是1/27,依此类推。因此,如果n是每个截面的索引编号,则截面应按(1/3)^n进行缩放。使用该工具可以很容易地缩放各个部分

JavaScript:

document.addEventListener( 'DOMContentLoaded', function() {
    var sections = document.getElementsByTagName( 'section' ),
        i = 0;
    for ( i; i < sections.length; i++ ) {
        sections[i].style.transform = 'scale(' + Math.pow( 1/3, i ) + ')';
    }
} );
var counter = 0,
    counter_max = 1000,
    total = document.getElementsByTagName( 'section' ).length;

window.addEventListener( 'wheel', function( e ) {
    counter += e.deltaY;
    if ( counter > counter_max ) counter = counter_max;
    if ( counter < 0 ) counter = 0;
    requestAnimationFrame( applyScale );
} );

function applyScale() {
    var sections = document.getElementsByTagName( 'section' ),
        i = 0;
    for ( i; i < sections.length; i++ ) {
        var scale = Math.pow( 1/3, i - counter * total / counter_max );
        sections[i].style.transform = 'scale(' + scale + ')';
    }
}
结果 可在以下网址找到实现上述功能的笔:


这应该是一个有用的框架,让你开始。在页面顶部添加锚定将涉及一个
单击
监听器,该监听器将计数器变量设置为适当的值,在每个动画帧上调用
applyScale
函数。

我不太确定您会将这种滚动效果称为什么-缩放页面滚动?-但它可以在现代浏览器中通过CSS比例转换和少量JavaScript实现

设置页面部分的样式 我通过给它们一个位置
absolute
并固定它们的CSS坐标,将我的部分堆叠在彼此的顶部

HTML:

设置每个部分的初始比例。 我希望每个部分的大小是前一部分的三分之一。这意味着第一部分的比例为1;第二个比例为1/3;第三个是1/9,第四个是1/27,依此类推。因此,如果n是每个截面的索引编号,则截面应按(1/3)^n进行缩放。使用该工具可以很容易地缩放各个部分

JavaScript:

document.addEventListener( 'DOMContentLoaded', function() {
    var sections = document.getElementsByTagName( 'section' ),
        i = 0;
    for ( i; i < sections.length; i++ ) {
        sections[i].style.transform = 'scale(' + Math.pow( 1/3, i ) + ')';
    }
} );
var counter = 0,
    counter_max = 1000,
    total = document.getElementsByTagName( 'section' ).length;

window.addEventListener( 'wheel', function( e ) {
    counter += e.deltaY;
    if ( counter > counter_max ) counter = counter_max;
    if ( counter < 0 ) counter = 0;
    requestAnimationFrame( applyScale );
} );

function applyScale() {
    var sections = document.getElementsByTagName( 'section' ),
        i = 0;
    for ( i; i < sections.length; i++ ) {
        var scale = Math.pow( 1/3, i - counter * total / counter_max );
        sections[i].style.transform = 'scale(' + scale + ')';
    }
}
结果 可在以下网址找到实现上述功能的笔:


这应该是一个有用的框架,让你开始。在页面顶部添加锚点需要一个
单击
侦听器,该侦听器将计数器变量设置为适当的值,在每个动画帧上调用
applyScale
函数。

@YourPalNurav感谢您的编辑和宝贵时间,这是我真正的问题,如何使用缩放效果在另一个分区后面显示分区,并在滚动时显示每个分区我也喜欢这种效果,搜索了一些,但在其他地方没有找到任何库或jQuery脚本来实现这种效果,我正在尝试重新制作这种效果,但我认为我自己无法做到这一点,因为我仍然在学习JavaScript。让我们继续努力。@YourPalNurav好的,我也会继续努力。我希望我们能找到一些有用的东西,请查看我对这个问题的编辑。在你接受编辑后,我将对这个问题给予奖励。这是我到目前为止的代码…@YourPalNurav谢谢你的编辑和时间,这是我真正的问题,如何在另一个分区后面显示分区,并使用缩放效果在滚动时显示每个分区我也喜欢这种效果,搜索了一些,但在其他地方没有找到任何库或jQuery脚本来实现这种效果,我正在尝试重新制作这个效果,但我认为我自己无法做到,因为我仍然在学习JavaScript。让我们继续努力。@YourPalNurav好的,我也会继续努力。我希望我们能找到一些有用的东西,请查看我对这个问题的编辑。在你接受编辑后,我将对这个问题给予奖励。这是我到目前为止的代码…它是有效的!!它工作!!!谢谢你的详细解释,帮助很大。尽管@jla非常感谢您,但您的演示中的Monty Python图片是best@jla如果你想给我你的网站或者我可以问你一些问题的东西,我可以私下和你谈谈吗?这很有效!!它工作!!!谢谢你的详细解释,帮助很大。尽管@jla非常感谢您,但您的演示中的Monty Python图片是best@jla如果你想给我你的网站或者我可以问你一些问题的东西,我可以私下和你谈谈吗?