视差效果在多个 类 中失效
Parallax effect fails across multiple classes
我正在尝试制作视差效果,为此我正在使用 jQuery。
这是我的代码:
function scrollEffectTop() {
$('[class^=scrollEffect-top-]').each(function() {
if ($('[class^=scrollEffect-top-]').length) {
var scrolled = $(window).scrollTop();
var classID_top = $('[class^=scrollEffect-top-]').attr('class').match(/\d+/)[0];
$('.scrollEffect-top-' + classID_top).css({'transform':'translateY(-' + scrolled * (classID_top / 100) + 'px)'});
}
});
}
$(window).scroll(function(e) {
scrollEffectTop();
});
基本上,我想匹配 class 名称 scrollEffect-top-
然后在后面查找数字。例如:scrollEffect-top-15
,表示transform: translateY(- scrolled * (15 / 100)px)
,或transform: translateY (- scrolled * .15)px
.
该代码适用于 HTML 中的第一个 class 名称,但如果我使用具有相同 class 名称但 不同 [=35= 的多个项目] 号(classID_top
号)不起作用。
注意:如果我使用相同的号码,代码运行良好。
我尝试搜索并找到了 .each()
方法,但它仍然无效。
我正在使用 HAML,这是我的代码:
%section{class:"container-m relative"}
.intro-image{style:"overflow: hidden;"}
.scrollEffect-top-15
.revealedBox.goRight
%div{class:"picture-for-#{controller.action_name} contentBox"}
这是一个实际的 HTML 代码:
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-15">
<div class="revealBox goRight">
<div class="picture-for-#{controller.action_name} contentBox"></div>
</div>
</div>
</div>
</section>
.each()
是一个好的开始。在 each
函数中,this
将引用我们正在查看的特定项目。任何修改都可以通过 that 而不是通过 class 进行(这将影响 all 匹配对象)。
function scrollEffectTop() {
$('[class^=scrollEffect-top-]').each(function() {
var scrolled = $(window).scrollTop();
var classID_top = $(this).attr('class').match(/\d+/)[0];
$(this).css('transform',
'translateY(-' + scrolled * (classID_top / 100) + 'px)');
});
}
$(window).scroll(function(e) {
scrollEffectTop();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-20">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-21">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-22">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-23">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-24">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
我正在尝试制作视差效果,为此我正在使用 jQuery。 这是我的代码:
function scrollEffectTop() {
$('[class^=scrollEffect-top-]').each(function() {
if ($('[class^=scrollEffect-top-]').length) {
var scrolled = $(window).scrollTop();
var classID_top = $('[class^=scrollEffect-top-]').attr('class').match(/\d+/)[0];
$('.scrollEffect-top-' + classID_top).css({'transform':'translateY(-' + scrolled * (classID_top / 100) + 'px)'});
}
});
}
$(window).scroll(function(e) {
scrollEffectTop();
});
基本上,我想匹配 class 名称 scrollEffect-top-
然后在后面查找数字。例如:scrollEffect-top-15
,表示transform: translateY(- scrolled * (15 / 100)px)
,或transform: translateY (- scrolled * .15)px
.
该代码适用于 HTML 中的第一个 class 名称,但如果我使用具有相同 class 名称但 不同 [=35= 的多个项目] 号(classID_top
号)不起作用。
注意:如果我使用相同的号码,代码运行良好。
我尝试搜索并找到了 .each()
方法,但它仍然无效。
我正在使用 HAML,这是我的代码:
%section{class:"container-m relative"}
.intro-image{style:"overflow: hidden;"}
.scrollEffect-top-15
.revealedBox.goRight
%div{class:"picture-for-#{controller.action_name} contentBox"}
这是一个实际的 HTML 代码:
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-15">
<div class="revealBox goRight">
<div class="picture-for-#{controller.action_name} contentBox"></div>
</div>
</div>
</div>
</section>
.each()
是一个好的开始。在 each
函数中,this
将引用我们正在查看的特定项目。任何修改都可以通过 that 而不是通过 class 进行(这将影响 all 匹配对象)。
function scrollEffectTop() {
$('[class^=scrollEffect-top-]').each(function() {
var scrolled = $(window).scrollTop();
var classID_top = $(this).attr('class').match(/\d+/)[0];
$(this).css('transform',
'translateY(-' + scrolled * (classID_top / 100) + 'px)');
});
}
$(window).scroll(function(e) {
scrollEffectTop();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-20">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-21">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-22">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-23">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>
<section class="container-m relative">
<div class="intro-image" style="overflow: hidden;">
<div class="scrollEffect-top-24">
<div class="revealedBox goRight">
<div class="picture-for-foo contentBox">
<img src="http://placehold.it/350x150" />
</div>
</div>
</div>
</div>
</section>