以下ページを参考に、奥にスクロールするページを作りました。
http://noze.space/archives/226
各要素はテキストと画像で、以下図のように配置され、スクロールすると要素が奥から手前に通り過ぎていきます。
2004、その間の画像、2005まではdivで囲まれていて.scalerのスタイルをつけている
HTMLを正面から見ると、奥にある要素は見えたままになっています。
そこで、z方向の2px以上(奥方向)の要素は正面から見えないようにし、2px以下(手前方向)からは要素がふんわり表示されるようにしたいのですが構文がわかりません、、
scriptは今のところ以下で動いています。
var scrollElm = (function() { if('scrollingElement' in document) { return document.scrollingElement; } if(navigator.userAgent.indexOf('WebKit') != -1) { return document.body; } return document.documentElement; })(); // 全てのセクション要素を取得 var sections = document.querySelectorAll('.section'); // 全体をz方向に動かす#scaler要素を取得 var scaler = document.getElementById('scaler'); // 画面の高さを設定する#scroll要素を取得 var scrollDiv = document.getElementById('scroll'); // セクション要素のdata-z属性を取得し、transformを設定 // 最後のセクション要素のdata-zを元に、画面の高さを計算して設定 for(var i = 0; sections.length > i; i++) { var itemZ = sections[i].getAttribute('data-z'); sections[i].style.transform = 'translateZ(' + - itemZ + 'px)'; if(i === sections.length -1) { scrollDiv.style.height = itemZ * 100 + window.innerHeight + 'px'; } } // スクロールイベントで、#scaler要素のtransformでz軸を動かす window.addEventListener('scroll', function() { var scrollNum = Math.round(scrollElm.scrollTop / 100); if(scrollNum % 1 === 0) { scaler.style.transform = 'translateZ(' + scrollNum + 'px)'; } });
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 08:31
2021/07/13 14:37