※miyabi_takatsuk様ご指摘ありがとうございます。
ご覧いただきありがとうございます。現在奥行きのあるウェブサイトの制作に挑戦しております。
CSSにあるtransform:translateZ**( n px)**
のnの値をjavascriptから取得する方法を教えてください。
問題となっているコード部分は、コメントアウトで☆★を打っている部分の直下です。あの記述でconsoleを確認すると、cssstyledeclationが表示され、下に遡ると
transform:"matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 3.88, 1)"
という部分があります。ここの太字の値値を取得したいと考えております。理由としては、この後ろから二番目の値が、translateZの現在値と一致しているので、ここを取得する必要があるのではないかと考えているためです。
ですが初心者のため、私の推測は的を外しているものかもしれませんので、matrix3dからとらずにできる方法でも大丈夫です。アドバイスいただけると幸いです。よろしくお願いいたします。
javascript
1 2 3var scrollElm = (function() { 4 if('scrollingElement' in document) { 5 return document.scrollingElement; 6 } 7 if(navigator.userAgent.indexOf('WebKit') != -1) { 8 return document.body; 9 } 10 return document.documentElement; 11})(); 12 13// 全てのセクション要素を取得 14var sections = document.querySelectorAll('.section'); 15 16// 全体をz方向に動かす#scaler要素を取得 17var scaler = document.getElementById('scaler'); 18 19// 画面の高さを設定する#scroll要素を取得 20var scrollDiv = document.getElementById('scroll'); 21 22//☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ 23var getZ = window.getComputedStyle(scaler, null); 24console.log(getZ); 25//☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ 26 27 28// セクション要素のdata-z属性を取得し、transformを設定 29// 最後のセクション要素のdata-zを元に、画面の高さを計算して設定 30for(var i = 0; sections.length > i; i++) { 31 var itemZ = sections[i].getAttribute('data-z'); 32 var itemX = sections[i].getAttribute('data-x'); 33 var itemY = sections[i].getAttribute('data-y'); 34 sections[i].style.transform = 'translateZ(' + - itemZ + 'px)'; 35 if(i === sections.length -1) { 36 scrollDiv.style.height = itemZ + window.innerHeight + 'px'; 37 38 } 39} 40 41 42// スクロールイベントで、#scaler要素のtransformでz軸を動かす 43window.addEventListener('scroll', function() { 44 scaler.style.transform = 'translateZ(' + scrollElm.scrollTop / 100 + 'px)'; 45});
html
1 <div class="wrapper"> 2 <div id="base"> 3 <div id="scaler" class="scaler"> 4 <img class="section section-1" data-z="6" data-x="20" data-y="80" src="img/06.jpg" alt=""> 5 <img class="section section-1" data-z="5" data-x="70" data-y="30" src="img/05.jpg" alt=""> 6 </div> 7 </div> 8 9 <div id="scroll" class="scroll"></div> 10 </div>