所以我一直在努力研究一些隐藏和显示元素的类。当一个元素应该显示时,它应该从display:none;
到display: whatever-it-was-before;
。在研究实现这一点的方法时,我偶然发现了看起来完美的解决方案:CSS 的revert
. 不幸的是,Cascading and Inheritance Level 4 距离得到支持还有很长的路要走,而且这个功能似乎没有在 Windows 上的任何主要浏览器中实现。
为了说明我想要做什么,这里有一些 CSS:
.article-card {
display: flex;
}
._showdesktop {
display: none !important;
}
@media screen and (min-width: 1024px) {
._showdesktop {
display: revert !important;
}
}
以及一些随附的 HTML:
<div class="article-card _showdesktop">
...
</div>
这个想法是拥有可以在任何元素上使用的通用类,而不会覆盖元素的预期 CSS。display:flex;
这将允许我显示和隐藏、display:block;
、display:inline-block;
或display:inline;
所有具有相同类集的元素。
所以,我有两个问题:
- 有没有为此提供任何polyfill?我尝试四处搜索,但不幸的是,由于版本控制系统,“revert”和“polyfill”这两个术语一起出现了很多。
- 有没有其他方法可以用 CSS 做到这一点?我正在考虑使用
visibility:hidden;
,因为我几乎从不visibility
在我的项目中使用该属性,但这不会从流程中删除元素,而且我想不出任何不会与其他代码冲突的方法来删除它.
https://drafts.csswg.org/css-cascade/#default
更新:下面标记的答案和我现在得到的一样好,但我想用我最终使用的代码来更新这个问题。考虑到我确实经常使用最大高度,我不确定这将如何运作,但希望它不会经常发生冲突:
._hidemobile,
._showtablet,
._showdesktop {
max-height: 0 !important;
visibility: hidden !important;
}
._showmobile {
max-height: none !important;
visibility: visible !important;
}
@media screen and (min-width: 768px) {
._showmobile,
._hidetablet {
max-height: 0 !important;
visibility: hidden !important;
}
._showtablet {
max-height: none !important;
visibility: visible !important;
}
}
@media screen and (min-width: 1024px) {
._showtablet,
._hidedesktop {
max-height: 0 !important;
visibility: hidden !important;
}
._showdesktop {
max-height: none !important;
visibility: visible !important;
}
}