使用Javascript设置样式时,防止’display’的样式继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Javascript设置样式时,防止’display’的样式继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2780字,纯文字阅读大概需要4分钟。
内容图文
我想使用Javascript来切换大部分HTML的可见性,其中还包含display:< value>属性.
问题是使用Javascript设置外部显示属性也设置内部显示属性.
鉴于以下CSS:
.zapfenintermeddivisionrow {
vertical-align:top;
display:none;
}
.divisionColumn[data-division=true][data-boxed=true] {
border: 1px solid black;
display: inline-block;
float: left;
}
HTML:
<tr class='zapfenintermeddivisionrow'>
<td class='zapfendividendintermed'>
<div class="divisionColumn" data-division="true" data-boxed="true">7<br />3<br /><br /><br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">2<br />2<br />0<br /><br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">5<br /><br />5<br />1<br /><br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">7<br /><br /><br />7<br />1<br /><br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">6<br /><br /><br /><br />6<br />0<br /><br /></div>
<div class="divisionColumn" data-division="true" data-boxed="true">0<br /><br /><br /><br /><br />0<br />0<br /></div>
</td><td>:</td><td>4</td><td>=</td><td>181440</td>
</tr>
和Javascript:
function changeIntermediate() {
var items = document.getElementsByClassName('zapfenintermeddivisionrow');
for(i = 0; i < items.length; i++) {
items[i].style.display = (getComputedStyle(items[i]).getPropertyValue('display') == 'none') ? 'inline' : 'none';
}
}
document.getElementById('toggleallintermedsteps').addEventListener('click', changeIntermediate);
Javascript将.divisionColumn(显示:inline-box)的嵌套样式更改为“inline”.似乎值继承到子元素.
为什么设置外部类的显示值传播到内部类,当它被CSS排除时?
我该如何防止这种情况?
解决方法:
Why is setting the value of display of an outer class propagated to the inner class, when it’s ruled out by CSS?
事实并非如此.
This value causes an element to not appear in the formatting structure (i.e., in visual media the element generates no boxes and has no effect on layout). Descendant elements do not generate any boxes either; the element and its content are removed from the formatting structure entirely. This behavior cannot be overridden by setting the ‘display’ property on the descendants.
Please note that a display of ‘none’ does not create an invisible box; it creates no box at all. CSS includes mechanisms that enable an element to generate boxes in the formatting structure that affect formatting but are not visible themselves. Please consult the section on visibility for details.
How do I prevent this?
之一:
>不使用display:none(如规范所述,可见性可能是更好的选择)
>通过移动要显示的元素,使它们不是您要隐藏的元素的后代
>更改隐藏的元素(例如,选择数量的元素,这些元素既是您当前隐藏的元素的后代,也是您要显示的元素的兄弟元素).
内容总结
以上是互联网集市为您收集整理的使用Javascript设置样式时,防止’display’的样式继承全部内容,希望文章能够帮你解决使用Javascript设置样式时,防止’display’的样式继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。