如何修改手机和标签的bootstrap轮播 [英] How to modify bootstrap carousel for mobile and tabs

查看:89
本文介绍了如何修改手机和标签的bootstrap轮播的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用自举滑块。

I am using a bootstrap slider.


  • 在桌面上,它有三张幻灯片,每张4个图块


  • 在选项卡上,它们必须为4每张3个瓷砖的幻灯片

  • On Tabs, they have to be 4 slides with 3 tiles each

在手机上,需要有12个不同的幻灯片

On Mobile, there needs to be 12 different slides

我正在考虑实施这一目标的最有效和最优化的方式。

I am thinking of the most effective and optimized way of implementing this.

选项1 - 创建3套不同的滑块。一次只显示一个

Option 1 - Create 3 different set of sliders. Make only one visible at a time

选项2 - 使用jquery检测屏幕宽度并以编程方式添加额外的图块作为幻灯片,隐藏额外的图块。我想这会非常复杂。

Option 2 - Detect the screen width with jquery and programmatically add extra tiles as slides, hide the extra ones. I guess this will be very complicated.

如果有更好的方法可以实现,请提供帮助。

Please help if there is a better way to implement this.

推荐答案

这是:

.carousel-inner .item.active {
  display: flex; 
}

.carousel-inner .item {
  background-color: #212121;
  color: white;
  padding: 0 15px; 
}
#desktopCarousel .carousel-inner .item > .row {
  min-height: 480px;
}
#tabletCarousel .carousel-inner .item > .row {
  min-height: 360px;
}
.carousel-inner .item > .row {
  flex-grow: 1;
  min-height: 320px;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch; 
}
.carousel-inner .item > .row [class^="col-"] {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  text-align: center; 
}
.carousel-inner .item > .row .row {
  flex-grow: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch; 
}
.carousel-inner .item > .row .row [class^="col-"] {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center; 
}

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div id="desktopCarousel" class="carousel slide hidden-xs hidden-sm" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#desktopCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#desktopCarousel" data-slide-to="1"></li>
    <li data-target="#desktopCarousel" data-slide-to="2"></li>
  </ol>

  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <div class="row">
        <div class="col-sm-6">
          First item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-6">
              Second item
            </div>
            <div class="col-sm-6">
              Third item
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              Fourth item
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-6">
          Fifth item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-6">
              Sixth item
            </div>
            <div class="col-sm-6">
              Seventh item
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              Eighth item
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-6">
          Nineth item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-6">
              Tenth item
            </div>
            <div class="col-sm-6">
              Eleventh item
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              Twelfth item
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  <a class="left carousel-control" href="#desktopCarousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#desktopCarousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

<div id="tabletCarousel" class="carousel slide hidden-xs hidden-md hidden-lg" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#tabletCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#tabletCarousel" data-slide-to="1"></li>
    <li data-target="#tabletCarousel" data-slide-to="2"></li>
    <li data-target="#tabletCarousel" data-slide-to="3"></li>
  </ol>

  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <div class="row">
        <div class="col-sm-6">
          First item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-12">
              Second item
            </div>
            <div class="col-sm-12">
              Third item
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-6">
          Fourth item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-12">
              Fifth item
            </div>
            <div class="col-sm-12">
              Sixth item
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="item">
     <div class="row">
        <div class="col-sm-6">
          Seventh item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-12">
              Eighth item
            </div>
            <div class="col-sm-21">
              Nineth item
            </div>
          </div>
        </div>
      </div>     
    </div>
    <div class="item">
     <div class="row">
        <div class="col-sm-6">
          Tenth item
        </div>
        <div class="col-sm-6">
          <div class="row">
            <div class="col-sm-12">
              Eleventh item
            </div>
            <div class="col-sm-12">
              Twelvth item
            </div>
          </div>
        </div>
      </div>     
    </div>
  </div>

  <a class="left carousel-control" href="#tabletCarousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#tabletCarousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

<div id="mobileCarousel" class="carousel slide hidden-sm hidden-md hidden-lg" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#mobileCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#mobileCarousel" data-slide-to="1"></li>
    <li data-target="#mobileCarousel" data-slide-to="2"></li>
    <li data-target="#mobileCarousel" data-slide-to="3"></li>
    <li data-target="#mobileCarousel" data-slide-to="4"></li>
    <li data-target="#mobileCarousel" data-slide-to="5"></li>
    <li data-target="#mobileCarousel" data-slide-to="6"></li>
    <li data-target="#mobileCarousel" data-slide-to="7"></li>
    <li data-target="#mobileCarousel" data-slide-to="8"></li>
    <li data-target="#mobileCarousel" data-slide-to="9"></li>
    <li data-target="#mobileCarousel" data-slide-to="10"></li>
    <li data-target="#mobileCarousel" data-slide-to="11"></li>
  </ol>

  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <div class="row">
        <div class="col-sm-12">
          First item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Second item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Third item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Fourth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Fifth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Sixth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Seventh item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Eighth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Nineth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Tenth item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Eleventh item
        </div>
      </div>
    </div>
    <div class="item">
      <div class="row">
        <div class="col-sm-12">
          Twelveth item
        </div>
      </div>
    </div>
  </div>

  <a class="left carousel-control" href="#mobileCarousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#mobileCarousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

注意你不要实际上需要CSS(它只是创建桌面滑块的布局,将每个项目中的内容(使用flexbox)+颜色居中,但我认为你已经覆盖了那些)。 CSS没有前缀,如果有帮助,你可以在小提琴中找到SCSS。 。

Note you don't actually need the CSS (it just creates the layout for desktop sliders, centers the contents in each item (with flexbox) + colors, but I assume you already got those covered). CSS is un-prefixed and, in case it helps, you'll find the SCSS in the fiddle.

此外,您可能希望为移动设备/平板电脑/台式机上的项目设置不同的 min-height

Also, you might want to set different min-heights for items on mobile/tablet/desktop.

除此之外,它非常干净......引导程序。没有自定义 JS ,没有自定义 CSS 。只需加价。

Other than that, it's pretty clean... bootstrap. No custom JS, no custom CSS. Just markup.

编辑:(根据评论)如果您不想要所有当更改 @media 间隔时,滑块始终在运行并且更喜欢基于调整大小监听器初始化每个滑块(我推荐 enquire.js 为此 - 缩小0.8k,在任何浏览器/设备上运行),将每个轮播的标记放在脚本中,具有不同的ID:

(as per comment) If you don't want all sliders running at all times and prefer to initialize each based on a resize listener, when changing the @media interval (I recommend enquire.js for this - 0.8k minified, runs on any browser/device), place each carousel's markup in a script, with different id's:

<script id="desktop-markup" type="text/template">
  <div id="desktopCarousel" class="carousel slide" data-ride="carousel">
    <!-- carousel markup here -->
  </div>
</script>
<script id="tablet-markup" type="text/template">
  <div id="tabletCarousel" class="carousel slide" data-ride="carousel">
    <!-- carousel markup here -->
  </div>
</script>
<script id="mobile-markup" type="text/template">
  <div id="mobileCarousel" class="carousel slide" data-ride="carousel">
    <!-- carousel markup here -->
  </div>
</script>

页面加载以及更改媒体interval,根据当前 @media 间隔获取模板的内容(即 $('#mobile-markup')。html()),将其放在指定的DOM容器中并在其上运行 .carousel()

On page load and on changing the media interval, get the contents of the template according to current @media interval (i.e. $('#mobile-markup').html()), place it inside the designated DOM container and run .carousel() on it:

$('.carousel-container').html(
  $('#mobile-markup').html()
).find('.carousel').carousel(options); 
// where options is optional. :) 
// see http://getbootstrap.com/javascript/#carousel-options

这篇关于如何修改手机和标签的bootstrap轮播的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆