Jquery 中心视差图像

Jquery 中心视差图像,jquery,scroll,parallax,Jquery,Scroll,Parallax,我有这个简化的代码来为我的图像添加视差 当我开始滚动时,顶部值不正确。距离太远了,当我回到网站顶部时,图片没有像开头那样居中 如何计算正确的顶部值 $(文档).ready(函数(){ var scrolledDefault=$(window.height()/2-($('.img_umoi').height()/2)+25; $('.img__moi').css('top',scrolled默认值); $(窗口)。滚动(功能(e){ 视差('.img___moi','0.2'); }); 功能

我有这个简化的代码来为我的图像添加视差

当我开始滚动时,顶部值不正确。距离太远了,当我回到网站顶部时,图片没有像开头那样居中

如何计算正确的顶部值

$(文档).ready(函数(){
var scrolledDefault=$(window.height()/2-($('.img_umoi').height()/2)+25;
$('.img__moi').css('top',scrolled默认值);
$(窗口)。滚动(功能(e){
视差('.img___moi','0.2');
});
功能视差(元素,维特斯){
var scrolled=$(window.scrollTop()+($(window.height()/2)-($(element.height()/2)+25;
控制台信息(滚动显示*vitesse);
$(element.css('top',-(滚动的*vitesse)+'px');
}
});
正文{
背景色:#中交;
高度:3000px;
}
.对齐文本{
位置:绝对位置;
顶部:计算(50%+30px);
左:计算(25%+20px);
宽度:70%;
-webkit转换:translateY(-50%);
转化:translateY(-50%);
z指数:2;
}
.页眉顶部{
背景色:$blanc;
填充:5px0px;
高度:50px;
位置:固定;
排名:0;
左:0;
右:0;
z指数:999999;
}
.img__moi{
浮动:左;
宽度:25%;
位置:绝对位置;
左边距:50像素;
z指数:2;
过渡:所有300毫秒缓解;
}

此处的标题为两行
我找到了解决方案

只需添加一个div,即可将标题和图像垂直和水平中心以高度环绕

$(文档).ready(函数(){
var scrolledDefault=$(window.height()/2-($('.img_umoi').height()/2)+25;
$('.img__moi').css('top',scrolled默认值);
$(窗口)。滚动(功能(e){
视差('.img___moi','0.2');
});
功能视差(元素,维特斯){
var scrolled=$(window.scrollTop()+($(window.height()/2)-($(element.height()/2)+25;
控制台信息(滚动显示*vitesse);
$(element.css('top',-(滚动的*vitesse)+'px');
}
});
正文{
背景色:#中交;
高度:3000px;
}
.对齐文本{
位置:绝对位置;
最高:50%;
左:计算(25%+20px);
宽度:70%;
-webkit转换:translateY(-50%);
转化:translateY(-50%);
z指数:2;
}
.页眉顶部{
背景色:$blanc;
填充:5px0px;
高度:50px;
位置:固定;
排名:0;
左:0;
右:0;
z指数:999999;
}
.img__moi{
浮动:左;
宽度:25%;
位置:绝对位置;
排名:0;
左边距:50像素;
z指数:2;
过渡:所有300毫秒缓解;
}
.对准中心{
位置:绝对位置;
最高:50%;
左:50%;
-webkit转换:翻译(-50%,-50%);
-ms转换:翻译(-50%,-50%);
转换:翻译(-50%,-50%);
宽度:100%;
高度:61vh;
}

此处的标题为两行

或者,如果你稍微重新安排一下你的数学,你就有了一个可能更容易应用于其他div的设置,而不必包装它们:

var-moi='.img__-moi';//在这里定义关键图像类名
函数定义(el){
var scrolleDefault=$(window.height()-$(el.height();//或使用$('body.height())使div相对于滚动区域居中
scrolledDefault=scrolledDefault/2;
滚动默认值+=25;
返回滚动默认值;
}//DRY:通过以这种方式计算scroll top,我们确保以一种方式定义它,以实现更大的奇偶校验
功能视差(元素,维特斯){
var scrolled=scrollDef(element)-($(window.scrollTop()*vitesse);//我们稍微重新安排了数学运算,使之能够工作
$(元素).css('top',滚动);
}
$('.img_uumoi').css('top',scrollDef(moi));
//你可以用视差('.img____moi',0.2)替换上面的线;设置相同的启动条件
$(窗口)。滚动(函数(){
视差('.img___moi',0.2);
});
body,
html{
背景色:#中交;
高度:3000px;
}
.对齐文本{
位置:绝对位置;
顶部:计算(50%+30px);
左:计算(25%+20px);
宽度:70%;
-webkit转换:translateY(-50%);
转化:translateY(-50%);
z指数:2;
}
.页眉顶部{
背景色:$blanc;
填充:5px0px;
高度:50px;
位置:固定;
排名:0;
左:0;
右:0;
z指数:999999;
}
.img__moi{
浮动:左;
宽度:25%;
位置:绝对位置;
左边距:50像素;
z指数:2;
}

此处的标题为两行

谢谢。这比我找到的解决方案要好!感谢您允许我的代表通过1k成绩!:)