[参考サイト:というかここの内容です](https://web-loid.net/web/scroll-effect-js/)
<div class="scroll-fade">
この要素がフェードします。
</div>
jQuery
$(function(){
var effect_pos = 300; // 画面下からどの位置でフェードさせるか(px)
var effect_move = 50; // どのぐらい要素を動かすか(px)
var effect_time = 700; // エフェクトの時間(ms) 1秒なら1000
// フェードする前のcssを定義
$('.scroll-fade').css({
opacity: 0,
transform: 'translateY('+ effect_move +'px)',
transition: effect_time + 'ms'
});
// スクロールまたはロードするたびに実行
$(window).on('scroll load', function(){
$('.scroll-fade').each(function(){
var targetElement = $(this).offset().top;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
if (scroll > targetElement - windowHeight + effect_pos){
$(this).css('opacity','1');
$(this).css('transform','translateY(0)');
}
});
});
});
連続でフェードイン
<div class="ex1 scroll-fade-row">
<div><span>1</span></div>
<div><span>2</span></div>
<div><span>3</span></div>
<div><span>4</span></div>
<div><span>5</span></div>
</div>
css
.ex1 {
display: flex;
justify-content: space-between;
}
.ex1 div {
display: flex;
justify-content: center;
align-items: center;
width: 100px;
height: 100px;
background-color: #e45151;
}
jQuery$(function(){
var effect_btm = 300; // 画面下からどの位置でフェードさせるか(px)
var effect_move = 50; // どのぐらい要素を動かすか(px)
var effect_time = 800; // エフェクトの時間(ms) 1秒なら1000
//親要素と子要素のcssを定義
$('.scroll-fade-row').css({
opacity: 0
});
$('.scroll-fade-row').children().each(function(){
$(this).css({
opacity: 0,
transform: 'translateY('+ effect_move +'px)',
transition: effect_time + 'ms'
});
});
// スクロールまたはロードするたびに実行
$(window).on('scroll load', function(){
var scroll_top = $(this).scrollTop();
var scroll_btm = scroll_top + $(this).height();
var effect_pos = scroll_btm - effect_btm;
//エフェクトが発動したとき、子要素をずらしてフェードさせる
$('.scroll-fade-row').each( function() {
var this_pos = $(this).offset().top;
if ( effect_pos > this_pos ) {
$(this).css({
opacity: 1,
transform: 'translateY(0)'
});
$(this).children().each(function(i){
$(this).delay(100 + i*200).queue(function(){
$(this).css({
opacity: 1,
transform: 'translateY(0)'
}).dequeue();
});
});
}
});
});
});