gpt4 book ai didi

css - Edge 浏览器忽略 CSS 变量

转载 作者:行者123 更新时间:2023-11-28 14:46:20 25 4
gpt4 key购买 nike

如您在本例中所见:https://jsfiddle.net/50mqy8p1/1/Microsoft Edge 在 display: none; 之后忽略 display: var(--display-var, block),因此 div 不可见。其他浏览器显示这是正确的(IE11 基于 var-usage 之上的回退工作)。

我的代码有什么错误吗?或者你知道解决方法吗? Google 在这里没有帮助我。

<!DOCTYPE html>
<html>
<head>
<title>Edge Demo</title>
<style>
html, body {
height: 100%;
}
.foo {
--display-var: flex;
background: #369;
height: 100%;
align-items: center;
justify-content: center;
}
.make-invisible { display: none; }
.make-visible {
display: block;
display: var(--display-var, block);
}
</style>
</head>
<body>
<div class="foo make-invisible make-visible">I am here!</div>
</body>
</html>

正如您在下面看到的,如果您只使用一个类和一个媒体查询,也会发生这种情况

<!DOCTYPE html>
<html>
<head>
<title>Edge Demo</title>
<style>
.foo {
--display-var: flex;
display: none;
}

@media (min-width: 320px) {
.foo {
display: block;
display: var(--display-var, block);
}
}
</style>
</head>
<body>
<div class="foo">I am here!</div>
</body>
</html>

我们的用例是什么,让我们运行这个问题:我们有一个 CMS,内容编辑器可以在其中选择某些内容何时可见或不可见。然后我们生成通用可见性/不可见性类和处理可见性的通用对应小 CSS 片段。但有时您不希望元素是“ block 状”的,例如“flex ”。借助这个 CSS-Vars 技巧,设计可以在元素可见时立即决定它想要的元素,而无需执行任何其他操作。

最佳答案

似乎 .make-invisible 类的 display: none; 属性混淆了 Edge。

我想更新 specificity.make-visible 类更改为类似 .foo.make-visible 的类会使问题消失,但即便如此,Edge 上的问题仍然存在。

IMO 最简单的解决方案是从 div 元素中删除 .make-invisible 类,因为我看不出为什么你需要同时拥有 .make- invisible.make-visible 同时在单个元素上的类。

更新

在考虑了您的更新后,我想出了一个不太难看的 hack。这不仅解决了 Edge 上的问题,而且不会影响 Chrome 或 FF 上的行为。

您需要做的是用单个类中的每个属性定义类两次,例如:

    .foo {
display: block;
}
.foo {
display: var(--display-var, block);
}

这是您的演示的工作版本:https://jsfiddle.net/sbr29yo6/

关于css - Edge 浏览器忽略 CSS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com