Bootstrap 可见性 类 有效但内容未从标记中删除
Bootstrap visibility classes working but content not removed from markup
我在我的网页上使用 bootstrap 可见性 类,如下所示:
<div class="hidden-sm">
<div id="lrg-div-A"></div>
</div>
<div class="hidden-lrg">
<div id="lrg-div-B"></div>
</div>
<div class="hidden-md">
<div id="lrg-div-C"></div>
</div>
可见性 类 起作用并在需要时隐藏在视口中。但是,当我在浏览器的开发人员工具中查看标记时,我仍然看到隐藏的 divs 的标记。例如,在大屏幕上,“lrg-div-B”不会出现在视口中,但标记仍会出现在 HTML 选项卡中。无论如何也可以从标记中删除它,类似于 'dispaly: none' 所做的?
display: none
不会将其从标记中删除,但会从文档流中将其删除,因此它不会占用 space。您可以使用 remove()
或 removeChild()
删除带有 javascript 的节点,但请注意您无法再次取回它(除非您存储它并稍后 re-append 它)。
console.log('Hidden node: ', document.querySelector('.hidden-sm'));
//Hidden node: <div class="hidden-sm">…</div>
console.log('Before remove(): ', document.getElementById('lrg-div-B'));
// Before remove(): <div id="lrg-div-B">large B</div>
document.getElementById('lrg-div-B').remove();
console.log('Removed node: ', document.getElementById('lrg-div-B'));
// Removed node: null
.hidden-sm {
display: none;
}
<div class="hidden-sm"> <!-- hidden but still in markup -->
<div id="lrg-div-A">large A</div>
</div>
<div class="hidden-lrg">
<div id="lrg-div-B">large B</div> <!-- removed from markup -->
</div>
<div class="hidden-md">
<div id="lrg-div-C">large C</div>
</div>
不应该从标记中删除元素。 CSS 处理 DOM 的外观而不是其结构。如果你真的想删除 DOM 元素,你需要使用一点 Javascript。
我在我的网页上使用 bootstrap 可见性 类,如下所示:
<div class="hidden-sm">
<div id="lrg-div-A"></div>
</div>
<div class="hidden-lrg">
<div id="lrg-div-B"></div>
</div>
<div class="hidden-md">
<div id="lrg-div-C"></div>
</div>
可见性 类 起作用并在需要时隐藏在视口中。但是,当我在浏览器的开发人员工具中查看标记时,我仍然看到隐藏的 divs 的标记。例如,在大屏幕上,“lrg-div-B”不会出现在视口中,但标记仍会出现在 HTML 选项卡中。无论如何也可以从标记中删除它,类似于 'dispaly: none' 所做的?
display: none
不会将其从标记中删除,但会从文档流中将其删除,因此它不会占用 space。您可以使用 remove()
或 removeChild()
删除带有 javascript 的节点,但请注意您无法再次取回它(除非您存储它并稍后 re-append 它)。
console.log('Hidden node: ', document.querySelector('.hidden-sm'));
//Hidden node: <div class="hidden-sm">…</div>
console.log('Before remove(): ', document.getElementById('lrg-div-B'));
// Before remove(): <div id="lrg-div-B">large B</div>
document.getElementById('lrg-div-B').remove();
console.log('Removed node: ', document.getElementById('lrg-div-B'));
// Removed node: null
.hidden-sm {
display: none;
}
<div class="hidden-sm"> <!-- hidden but still in markup -->
<div id="lrg-div-A">large A</div>
</div>
<div class="hidden-lrg">
<div id="lrg-div-B">large B</div> <!-- removed from markup -->
</div>
<div class="hidden-md">
<div id="lrg-div-C">large C</div>
</div>
不应该从标记中删除元素。 CSS 处理 DOM 的外观而不是其结构。如果你真的想删除 DOM 元素,你需要使用一点 Javascript。