javascript htmlタグの要素の高さと幅を枠線の幅を含んで取得する
- 作成日 2022.04.02
- 更新日 2022.11.03
- javascript
- javascript

javascriptで、htmlタグの要素の高さと幅を枠線の幅を含んで取得するサンプルコードを記述してます。「offsetHeight」と「offsetWidth」を使用して取得します。枠線の他には「padding」も指定されていれば含まれて取得されます。
環境
- OS windows11 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 107.0.5304.88
枠線を含んで高さと幅取得
「offsetHeight」と「offsetWidth」を使用すると、枠線を含んで高さと幅を取得することができます。
要素.offsetHeight // 高さ
要素.offsetWidth // 幅
実際に取得してみます。
<div id="sample"
style="
height: 200px;
width: 150px;
border: 4px solid;
border-color: green;
">mebee</div>
<button id="btn" onclick="hoge()">button</button>
<script>
function hoge(){
//高さと幅をborderを含んで取得
var elm = document.getElementById('sample');
console.log(elm.offsetHeight);
console.log(elm.offsetWidth);
}
</script>
実行結果

また「offsetHeight」と「offsetWidth」は「padding」も含んで取得します。
<div id="sample"
style="
height: 200px;
width: 150px;
border: 4px solid;
border-color: green;
padding: 10px 10px 10px 10px;">mebee</div>
<button id="btn" onclick="hoge()">button</button>
<script>
function hoge(){
//高さと幅をborderを含んで取得
var elm = document.getElementById('sample');
console.log(elm.offsetHeight);
console.log(elm.offsetWidth);
}
</script>
実行結果

「border」を含まないで、取得する場合は「clientHeight」や「clientWidth」を使用します。
<div id="sample"
style="
height: 200px;
width: 150px;
border: 4px solid;
border-color: green;
padding: 10px 10px 10px 10px;">mebee</div>
<button id="btn" onclick="hoge()">button</button>
<script>
function hoge(){
//高さと幅を取得
var elm = document.getElementById('sample');
console.log(elm.clientHeight);
console.log(elm.clientWidth);
}
</script>
実行結果

サンプルコード
以下は、「offsetHeight」と「offsetWidth」を使って、要素の高さと幅を取得するサンプルコードとなります。
※cssには「uikit」を使用してます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>mebeeサンプル</title>
<!-- UIkit CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.5.5/dist/css/uikit.min.css" />
<!-- UIkit JS -->
<script src="https://cdn.jsdelivr.net/npm/uikit@3.5.5/dist/js/uikit.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/uikit@3.5.5/dist/js/uikit-icons.min.js"></script>
</head>
<style>
.main {
margin: 0 auto;
margin-top: 200px;
display: flex;
flex-direction: column;
align-items: center;
font-size: 20px;
}
</style>
<script>
window.onload = function(){
//高さと幅を取得
let card = document.getElementById('card');
let height = card.offsetHeight;
let width = card.offsetWidth;
let txt1 = document.getElementById("txt1");
let txt2 = document.getElementById("txt2");
txt1.textContent = "要素の高さ" + height; //paddingを含んだ高さ
txt2.textContent = "要素の幅" + width; //paddingを含んだ幅
}
</script>
<body>
<div class="main">
<div class="uk-child-width-1-1@m uk-grid-small uk-grid-match" uk-grid>
<div id="card" style="border: 50px solid;">
<div class="uk-card uk-card-primary uk-card-body">
<h3 class="uk-card-title">mebee</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
</div>
</div>
<div class="uk-alert-primary" uk-alert>
<p id="txt1"></p>
</div>
<div class="uk-alert-success" uk-alert>
<p id="txt2"></p>
</div>
</div>
</div>
</body>
</html>
実行結果を確認すると、取得されていることが確認できます。

また、javascript部はwindowオブジェクトやdocument.getElementByIdを省略して記述することも可能です。関数もアロー関数を使用できます。
onload = () => {
txt1.textContent = "要素の高さ" + card.offsetHeight; //paddingを含んだ高さ
txt2.textContent = "要素の幅" + card.offsetWidth; //paddingを含んだ高さ
}
-
前の記事
VBA ファイルパスからファイル名と拡張子のみを取得する 2022.04.01
-
次の記事
PostgreSQL 指定した時間に実行する 2022.04.02
コメントを書く