前提・実現したいこと
ここに質問の内容を詳しく書いてください。
簡単なJavaScriptの高さの取得、及びCSSへの反映を行っています。
■概要
・グレーの要素のHeightはpadding-topで調整しています
・display:flexでグレーの要素に各要素をいれてます
・一番下にある緑色の要素にあわせてグレーの要素がぴったりくるようにしたい
・それぞれの色の位置は%で位置をずらしています
発生している問題
JavaScriptで高さ取得するため、
①clientHeight
②offsetHeight
の2つを使用しましたが、現状うまくいっていません。
※このままだと困るのは
色の要素が追加された場合に、いちいち高さを変えないといけません。
こちらを子要素の全体の高さによって可変できるようにしたいです。
該当のソースコード
HTML + JavaScript
html
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <title></title> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <link href="flexposition.css" rel="stylesheet"> 8 </head> 9 <body> 10 <div class="main_content" id="main_content_h"> 11 <div class="bgc1" id="bgc1_h"></div> 12 <div class="bgc2"></div> 13 <div class="bgc3"></div> 14 <div class="bgc4" id="bgc4_h"></div> 15 </div> 16 <script> 17 function height() { 18 const bgc4_h = document.getElementById('bgc4_h').offsetHeight; 19 const main_content_offset = bgc4_h; /* ←現状ここに数字をかけないと合わない*/ 20 document.getElementById('main_content_h').style.paddingTop = main_content_offset + "px"; 21 } 22 height(); 23 </script> 24 </body> 25</html> 26
css
1*{ 2 margin: 0; 3 padding: 0; 4 box-sizing: border-box; 5} 6 7 8.main_content{ 9 width: 100%; 10 background-color:grey; 11 display: flex; 12 box-sizing: border-box; 13} 14.bgc1{ 15 width: 300px; 16 height: 220px; 17 background-color:pink; 18 position: absolute; 19 top:0%; 20} 21.bgc2{ 22 width: 300px; 23 height: 220px; 24 background-color:blue; 25 position: absolute; 26 top: 10%; 27} 28.bgc3{ 29 width: 300px; 30 height: 220px; 31 background-color:rgb(56, 56, 75); 32 position: absolute; 33 top: 20%; 34} 35.bgc4{ 36 width: 300px; 37 height: 220px; 38 background-color:rgb(157, 255, 0); 39 position: absolute; 40 top: 30%; 41} 42
試したこと
①clientHeightを使用↓
・clientHeightで単純に高さが取得できるのでは?
ダメ☓→要素の高さを求めているので緑の縦の長さ(220px)になってしまう。
・単純にTop×30%してるから30%かけたらいいのでは?
ダメ☓ →結論うまくいかない。30%かけて縦が286pxになるが、緑の位置までグレー色がきていない。これはそもそも数学的センスの問題か・・・・?w
②offsetHeightを使用↓
・offsetHeightで高さを取得+要素の高さ220pxを足せばいけるのでは?
☓ →ん〜なぜかもともとの高さ220px分しか高さを出せていない。offsetHeightの値がきちんと取れていない可能性があるかもしれない・・・
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
■参考にしたWEBサイト様
JavaScriptで特定の要素の幅と高さを取得する方法(clientWidth,clientHeight)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 12:13
2020/07/16 06:31