getBoundingClientRect() で可視性を確認する
HTML
<div class="visible">
<span></span>
<div></div>
</div>
<div class="hidden">
<div style="margin-left: -9999px">margin-left: <span>-9999px</span></div>
<div style="margin-top: -9999px">margin-top: <span>-9999px</span></div>
<div style="margin-bottom: -9999px">margin-bottom: <span>-9999px</span></div>
<div style="position: absolute; left: -9999px">div<span>span</span></div>
<div style="position: absolute; right: -9999px">div<span>span</span></div>
<div style="position: absolute; top: -9999px">div<span>span</span></div>
<span style="display: none">span<span>span</span></span>
<div style="width: 0;">div<span>span</span></div>
<div style="height: 0;">div<span>span</span></div>
<div style="visibility: hidden">div<span>span</span></div>
<div style="opacity: 0;">div<input type="text"></div>
</div>
<ul>
<li><a href="https://teratail.com/questions/325107">JavaScript - Js特定の要素にフォーカス移動する|teratail</a></li>
</ul>
JavaScript
console.info('visible');
for (let element of document.querySelectorAll('.visible *')) {
console.log(element, element.getBoundingClientRect())
}
console.info('hidden');
for (let element of document.querySelectorAll('.hidden *')) {
console.log(element, element.getBoundingClientRect())
}