興味深い! plain inconsistency between browsersのようだが、これには単純な解決策はないと思う。とにかく、ここでハック解決策/回避策です:クローム& Firefoxで動作確認済み
var th = document.getElementById('th');
var table = document.getElementById('table');
var style = window.getComputedStyle(th);
table.style.borderCollapse = 'separate';
var borderHeight = style.getPropertyValue('border-bottom-width');
table.style.borderCollapse = 'collapse';
console.log(borderHeight);
table {
border-collapse: collapse;
}
th {
border-bottom: 11px solid red;
}
<table id="table">
<tr>
<th id="th">TH</th>
</tr>
</table>
は、両方とも
11px
を返しました。
EDIT:@Eric Nの答えに基づいて、あなたはth
秒にdisplay: block
を追加する幸運を得るかもしれません。そうすればテーブルのレイアウトが壊れ、そのことを回避する必要があります。そのための例:
var th = document.getElementById('th');
var style = window.getComputedStyle(th);
var borderHeight = style.getPropertyValue('border-bottom-width');
console.log(borderHeight);
table {
border-collapse: collapse;
}
th {
display: block;
float: left;
border-bottom: 11px solid red;
}
<table id="table">
<tr>
<th id="th">TH</th>
<th>TH</th>
<th>TH</th>
</tr>
</table>
[無地JavaScriptでdiv要素から取得する境界線の幅](の可能性のある重複http://stackoverflow.com/questions/14681002/get-border-width-from -a-div-with-plain-javascript) –
@FabianSchultzこれらの答えは、私がここでやっていることとまったく同じです。私の質問は、特に 'border-collapse'があるときにこれを行うことです。 –