質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

3002閲覧

javascriptでtransleteZの現在値を取得したい

kumo

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/10/27 09:08

編集2019/10/27 12:50

※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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2019/10/27 09:57 編集

間のJavaScriptもコードブロックで記載しましょう。 質問は編集できます。 また、matrix3dにて指定している数値の、最後から二番目を取得したい、ということでよろしいですか? (具体的に取りたい値の基準を知りたい)
guest

回答1

0

jQuery などの DOMエンジンもスタイルの値は文字列を取得して、数値化する内部処理だったと思います。
なので、matrix3d を取得して文字列文字列処理で対応するのが手っ取り早そうですね。

正規表現で行列部分を抽出して配列化する

javascript

1let re_mat3d = /^matrix3d((.*))$/ 2, m = matrix3d.match(re_mat3d) 3; 4if( m ) { 5 // m を行列(Array)に矯正 6 m = m[1].split(/,\s*/).map( n => Number(n) ) 7 console.log( m ) // 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 3.88, 1 8} 9

思いつきで、検証まではしてませんm(_ _)m

うまくいけば、配列から取得できます

投稿2019/10/27 14:38

AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問