【问题标题】:Can I combine CSS media queries with CSS selectors?我可以将 CSS 媒体查询与 CSS 选择器结合起来吗?
【发布时间】:2016-02-08 00:38:09
【问题描述】:

我正在设计一个用于显示文章的网页。主要内容是文章正文,但也有相关文章的链接列表。我希望列表通常显示在文章的一侧,但在以下任一情况下显示在文章下方:

  • 视口
  • 文章内容广泛,例如一张大桌子

我通过以下 CSS 实现了这一点...

.article-sidebar {
    text-align: left;
}
@media (min-width: 992px) {
    .article-sidebar {
        float: right;
        max-width: 28%;
    }
}
@media (max-width: 991px) { 
    .article-sidebar {
        padding-top: 46px;
        border-top: 1px solid #eeeeee;
        padding-left: 5%;
        padding-right: 5%;
    }
}

.article-sidebar-bottom {
    text-align: left;
    padding-top: 46px;
    border-top: 1px solid #eeeeee;
    padding-left: 5%;
    padding-right: 5%;
}

...加上一些 JavaScript 可以判断文章是否有任何“宽子”,如果有,则删除“article-sidebar”类并添加“article-sidebar-bottom”类。

但是,我不喜欢 >= 991px .article-sidebar.article-sidebar-bottom 之间的所有样式重复。我知道,如果同一类的不同媒体查询之间存在重复,我可以按照here 的解释将它们组合起来,如果不涉及媒体查询,我可以用逗号分隔 CSS 选择器,但有什么方法可以避免重复在这种情况下我自己?

【问题讨论】:

  • 您必须重新构建您的标记,以增加您可以在不同屏幕尺寸之间共享的数量。在.article-sidebar.article-sidebar-bottom 类之间重复样式有点奇怪。如果您想在侧边栏上使用该样式,则应仅将其应用于一个类。
  • @DerekPeterson - 谢谢,我认为重组确实是要走的路。我已经这样做并发布了我自己的答案。
  • 没问题!很高兴你能解决这个问题。

标签: css media-queries


【解决方案1】:

我现在已经对此进行了更多尝试,并提出了一个不会以相同方式复制代码的解决方案:

.article-sidebar, .article-sidebar-bottom {
    text-align: left;
    padding-top: 46px;
    border-top: 1px solid #eeeeee;
    padding-left: 5%;
    padding-right: 5%;
}

@media (min-width: 992px) {
    .article-sidebar {
        float: right;
        max-width: 28%;
        border-top: initial;
        padding-left: initial;
        padding-right: initial;
    }
}

我认为我的问题是我在考虑“自上而下”,即从大屏幕开始,然后在媒体查询中添加对较小设备的支持。如果是由媒体查询处理的更大屏幕,那么我认为它会变得更加整洁。

感谢迄今为止发表评论的所有人。虽然我找到了更好的解决方案来解决我自己的问题,但我仍然对问题的原始措辞感兴趣......即是否有人可以提供语法以对不同的类和媒体组合使用相同的样式查询(如果存在这种语法...)

【讨论】:

  • 相同。因为如果我找不到解决方案,那么我将不得不重复我的代码块五次。
猜你喜欢
  • 2020-10-11
  • 2012-11-30
  • 2022-11-28
  • 2012-02-18
  • 2014-07-05
  • 2013-12-22
  • 1970-01-01
  • 2022-01-25
  • 2023-03-21
相关资源
最近更新 更多