【问题标题】:Use `.navbar-fixed-top` for large screens, and `.navbar-static-top` for smaller screens [duplicate]大屏幕使用 .navbar-fixed-top ,小屏幕使用 .navbar-static-top [重复]
【发布时间】:2015-06-14 01:34:21
【问题描述】:

我在我的网站上使用 Bootstrap,我选择使用固定在屏幕顶部的导航栏在桌面浏览器上进行导航,那里有大量可用的屏幕空间。这是通过在我的导航栏上使用 .navbar-fixed-top 类在引导程序中完成的。

虽然我更喜欢在较小的屏幕上使用静态导航栏,但它会随着页面内容的其余部分滚动,因为这样可以在此类空间非常宝贵的较小设备上节省垂直屏幕空间。

当然,我转向了使用 css 媒体查询的明显方式:

#site-header
{
  @extend .navbar, .navbar-default;

  @media (max-width: $screen-xs-max) {
    @extend .navbar-static-top;
  }

  @media (min-width: $screen-sm-min) {
    @extend .navbar-fixed-top;
  }
}

不幸的是,这给了我错误消息:

You may not @extend an outer selector from within @media.
You may only @extend selectors within the same directive.

根据错误消息,这似乎是 SASS 中一个非常刻意的限制。除了使用 JavaScript 动态应用类之外,还有其他方法吗?

基本上我的问题类似于Extending selectors from within media queries with Sass,除了我希望扩展在库(引导程序)中定义的类,所以我没有转换.navbar-static-top 的定义的选项和.navbar-fixed-top 进入 mixins 或以任何方式更改它们的定义,正如目前对该问题的所有现有答案所建议的那样。

【问题讨论】:

  • @cimmanon 我的问题确实与此类似,但由于我正在寻找扩展库(Bootstrap)提供的类,因此该答案中提出的解决方案建议“改用 mixin”或“在媒体查询中定义类而不是尝试在那里扩展它”对我来说不是很有帮助。所以我想也许这是一个不同的问题?
  • 这些选项都不适合您的情况这一事实无关紧要:这些是唯一存在的选项。如果你不喜欢它们,我建议你向 Sass(或 Bootstrap)的维护者投诉。
  • @cimmanon 我不知道,我的直觉告诉我,如果一个问题的有效答案不能回答另一个问题,那么两个问题就不能真正重复。这违背了将问题标记为重复 IMO 的全部意义,这是为了帮助未来的访问者找到他们问题的答案。
  • 您认为我们需要多少问题来解决You may not @extend an outer selector from within @media 错误?你想扩展的选择器来自哪里并不重要(你写的,别人写的,等等):答案总是一样的:你不能这样做(直到 Sass 本身更改为允许这种行为)。
  • @cimmanon Meta 在这里发帖:meta.stackoverflow.com/q/289907/1157054我欢迎您就我提出问题的方式提供反馈(希望我没有遗漏任何重要的内容)。哦,如果你想在那里发布答案,请随意。 Meta 似乎是一个进行此讨论的好地方。

标签: twitter-bootstrap twitter-bootstrap-3 sass bootstrap-sass


【解决方案1】:

您可以在媒体查询中编写类并扩展它们。像这样的

#site-header {
  @extend .navbar, .navbar-default;
}

@media (max-width: 767px) {
  .navbar-static-top {
    position: static;
  }

  #site-header {
    @extend .navbar-static-top;
  }
}

@media (min-width: 768px) {
  .navbar-fixed-to-top {
    position: fixed;
    top: 0;
    right: 0;
  }

  #site-header {
    @extend .navbar-fixed-to-top;
  }
}

【讨论】:

  • 我不确定这在这种情况下是否有效,因为 .navbar-fixed-top 和 .navbar-static-top 的属性是由 Bootstrap 定义的,而不是由我定义的。我想我可以将属性从库中复制出来并将它们粘贴到我自己的代码文件中,但这不会破坏拥有像@extend 这样的构造的目的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 2023-03-27
相关资源
最近更新 更多