【问题标题】:Bootstrap 3.1 visible-xs and visible-sm not working togetherBootstrap 3.1 visible-xs 和 visible-sm 不能一起工作
【发布时间】:2014-03-07 04:30:18
【问题描述】:

我有一个要在 sm 和 xs 设备上显示的 div,它看起来像这样:

<div class="col-xs-4 col-sm-4 visible-xs visible-sm">
   <a href="#">Item 1</a>
   <a href="#">Item 2</a>
   <a href="#">Item 3</a>
</div>

我的引导程序是从 cdn 加载的,没有进行任何自定义。

这应该在 xs 和 sm 上显示此 div,如类中所述,但结果是当您在浏览器上转到 xs 大小时,sm 类 display:none !important 会覆盖 xs display:block !important

我试图在 bootstrap 文档中找到答案,但他们只有一个表格,没有解释如何在同一个 div 上使用多个可见性参数。

【问题讨论】:

  • 你用hidden-md hidden-lg尝试过其他方式吗?
  • 我现在会尝试,因为我没有。这对我来说似乎是某种错误,至少这种行为背后是有原因的。
  • 这不是错误,是预期的行为。 Bootstrap Responsive utilities
  • 那行得通@JuriRobl。如果您将其作为答案,我会很高兴,这样我就可以将其标记为已选。谢谢!
  • @azeós 我在哪里可以读到这是一种预期的行为?我在那里读到的只是使用单个或组合可用的类来跨视口断点切换内容。

标签: twitter-bootstrap


【解决方案1】:

Bootstraps 适用于从指定宽度类及以上的类。例如,如果您输入col-sm-4,这只会强制它为 4 列宽(对于 sm 宽度和更宽)。

在您的情况下,一个简单的class="col-xs-4 hidden-md hidden-lg" 应该足以获得您想要的解决方案。

您的第一个解决方案不起作用的原因是您在visible-sm 之前指定了visible-xs。这将 sm 类强制到它上面,使其在 xs 宽度上不可见。因为这是在 stock bootstrap css 中指定的。

编辑:对于那些使用 Bootstrap 4 的人来说,这可以通过 class="col-4 d-md-none" 来实现

【讨论】:

    【解决方案2】:

    您必须从以下位置添加一个值:

    `.visible-*-block` for `display: block;`
    `.visible-*-inline` for `display: inline;`
    `.visible-*-inline-block` for `display: inline-block;`
    

    在这种情况下,你会得到这样的东西:

    &lt;div class="col-xs-4 col-sm-4 visible-xs-block visible-sm-block"&gt;

    继续努力:)

    【讨论】:

      【解决方案3】:

      如果您想以多种尺寸显示它,请不要使用visible-*,而是使用hidden-* 隐藏您不想要的其他尺寸。 在这种情况下:hidden-md hidden-lg

      【讨论】:

      • 澄清一下,发生的事情是其中一个可见 * 类正在强制“显示:无!重要”覆盖另一个。只要媒体查询匹配,它就会应用一种样式。当你使用隐藏时,它只适用于没有副作用的情况。
      • 如果在 bootstrap 中添加另一个区间怎么办?然后每个站点都有错误的css。
      • 查看官方响应式实用程序类 here,希望对某人有所帮助。
      【解决方案4】:

      当我遇到这样的问题时,我更愿意使用我自己的自定义媒体查询来操纵元素的可见性。

      .someclass{
          display: none;
      }
      
      @media (max-width: 992px) {
         .someclass{
            display: normal!important;
         }
      }
      

      或者如果你想重复使用它,那么定义一个自定义类,例如:

      .visible-tablet-mobile{
          display: none;
      }
      
      @media (max-width: 992px) {
         .visible-tablet-mobile{
              display: normal!important;
         }
      }
      

      并重复使用它,而不是一次为您的 div 提供两个可见性类。

      【讨论】:

      • 是的,没关系,但我试图坚持使用引导网格。
      • 查看@Juri Robl 评论,这可能就是您要找的。​​span>
      • 是的@azeós 我现在正在检查。谢谢。
      • 你还在使用网格。您只需为自己的方便覆盖现有的生存能力类。
      • display: normal 不存在,您只是给出了一个无效的规则,浏览器将回退到默认值
      猜你喜欢
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多