css - 为什么显示:flex taking precedence over display:none in Chrome?

标签 css google-chrome media-queries flexbox

我有一个像这样的 flex 盒样式:

.myclass {
    display:flex;
}

和这样的媒体查询:

@media (orientation:portrait) {
    .myclass {
        display:none;
    }
}

我希望该元素在纵向模式下不可见,但事实并非如此。在 Chrome 中,尽管媒体查询更加具体,但 display:flex 优先。

为什么会这样?

编辑:只有当媒体查询在 CSS 中排在第一位时才会发生这种情况。在我的应用程序中,这是不可避免的,因为它是一个相当复杂的 MeteorJS 应用程序,由多个 SCSS 文件组成。如果我在 display:flex 之后重复相同的媒体查询,一切都会按预期工作。

最佳答案

根据您的编辑,您的 CSS 实际上看起来像这样

@media (orientation:portrait) {
    .myclass {
        display:none;
    }
}
.myclass {
    display:flex;
}

这会导致媒体查询的显示属性被覆盖。

一种方法是使用!important

@media (orientation:portrait) {
    .myclass {
        display:none !important;
    }
}

但这可能会在其他地方导致不良行为。 另一种方法是为您的 Flex 定义提供一个相反的媒体查询,如下所示:

.myclass {
    display:none;
}

@media (orientation:landscape) {
    .myclass {
        display:flex;
    }
}

这样,元素将始终隐藏,并且仅在媒体查询匹配时才可见。

关于css - 为什么显示:flex taking precedence over display:none in Chrome?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38723980/

相关文章:

javascript - facebook react 按钮/javascript 在 PHP 循环中只被调用一次

javascript - 伪类悬停在 JavaScript ImageSwap 中不起作用

google-chrome - 如何告诉 Chrome 翻译器忽略某些元素?

javascript - Chrome存储同步以持久顺序获取项目

css - 媒体查询未按预期工作(隐藏类 Bootstrap)

php - 为不同的浏览器创建不同的网页文件

javascript - 为什么我的代码不只生成 2 个类型

html - Chrome 打印错误 - 在页面顶部错误地打印表格标题

html - iPad 2 不遵守电子邮件的媒体查询

css - Bootstrap 和 body padding 左右