Bootstrap 3.0 中带有缩略图的轮播

Posted

技术标签:

【中文标题】Bootstrap 3.0 中带有缩略图的轮播【英文标题】:Carousel with Thumbnails in Bootstrap 3.0 【发布时间】:2013-09-21 21:45:13 【问题描述】:

我需要制作 Bootstrap 3.0 Carousel 来显示缩略图幻灯片。我怎样才能做到这一点? 这是我正在寻找的图像:

这是 Bootstrap 2 的一个工作示例,但我需要它用于 Bootstrap 3.0。:Bootstrap Thumbnail Slider

【问题讨论】:

我可以在 html 中获得一个工作示例吗?所有链接都已损坏。提前致谢。 【参考方案1】:

引导程序 4(2019 年更新)

可以通过多种方式完成多项目轮播as explained here。另一种选择是使用separate thumbnails to navigate the carousel slides。

Bootstrap 3(原始答案)

这可以使用每个轮播项目内的网格来完成。

       <div id="myCarousel" class="carousel slide">
                <div class="carousel-inner">
                    <div class="item active">
                        <div class="row">
                            <div class="col-sm-3">..
                            </div>
                            <div class="col-sm-3">..
                            </div>
                            <div class="col-sm-3">..
                            </div>
                            <div class="col-sm-3">..
                            </div>
                        </div>
                        <!--/row-->
                    </div>
                    ...add more item(s)
                 </div>
        </div>

使用轮播的示例缩略图滑块:http://www.bootply.com/81478

另一个使用轮播指示器作为缩略图的示例: http://www.bootply.com/79859

【讨论】:

很好的例子,但是......我怎样才能让它响应? 它是响应式的.. 你想要它是全宽的吗?还是根据不同的显示器/设备改变布局? 如果您将窗口最小化,下面列出的元素就是问题所在。 @ZimSystem 当 prev 和 next 是单击时,我希望滑动一次只能移动一个缩略图(不是全部 4 个),我该怎么做?【参考方案2】:

@Skelly 的回答是正确的。它不会让我添加评论(

col-xs-3 

对每个缩略图进行分类,如下所示:

class="col-md-3 col-xs-3"

那么当它缩小到手机宽度时,它应该保持你想要的样子。

【讨论】:

【参考方案3】:

刚刚发现了一个很棒的插件:

http://flexslider.woothemes.com/

问候

【讨论】:

虽然我喜欢 flexslider,但问题是专门针对 Bootstrap 3 的。 不幸的是它是根据 GPL 授权的【参考方案4】:
    使用轮播的指示器显示缩略图。 使用 CSS 将缩略图定位在主轮播之外。 将指示器的最大高度设置为不大于缩略图。 每当轮播滑动时,更新指示器的位置,将活动指示器定位在指示器的中间。

我在我的网站上使用它(例如 here),但我使用了一些额外的东西来进行延迟加载,这意味着提取代码并不像我希望的那样简单它在小提琴中。

另外,我的模板引擎是 smarty,但我相信你明白了。

肉……

更新指标:

<ol class="carousel-indicators">
    assign var='walker' value=0
    foreach from=$item["imagearray"] key="key" item="value"
        <li data-target="#myCarousel" data-slide-to="$walker"if $walker == 0 class="active"/if>
            <img src='http://farm$value["farm"].static.flickr.com/$value["server"]/$value["id"]_$value["secret"]_s.jpg'>
        </li>

        assign var='walker' value=1 + $walker
    /foreach
</ol>

更改指标相关的CSS:

.carousel-indicators 
    bottom:-50px;
    height: 36px;
    overflow-x: hidden;
    white-space: nowrap;


.carousel-indicators li 
    text-indent: 0;
    width: 34px !important;
    height: 34px !important;
    border-radius: 0;


.carousel-indicators li img 
    width: 32px;
    height: 32px;
    opacity: 0.5;


.carousel-indicators li:hover img, .carousel-indicators li.active img 
    opacity: 1;


.carousel-indicators .active 
    border-color: #337ab7;

当轮播滑动后,更新缩略图列表:

$('#myCarousel').on('slid.bs.carousel', function() 
    var widthEstimate = -1 * $(".carousel-indicators li:first").position().left + $(".carousel-indicators li:last").position().left + $(".carousel-indicators li:last").width(); 
    var newIndicatorPosition = $(".carousel-indicators li.active").position().left + $(".carousel-indicators li.active").width() / 2;
    var toScroll = newIndicatorPosition + indicatorPosition;
    var adjustedScroll = toScroll - ($(".carousel-indicators").width() / 2);
    if (adjustedScroll < 0)
        adjustedScroll = 0;

    if (adjustedScroll > widthEstimate - $(".carousel-indicators").width())
        adjustedScroll = widthEstimate - $(".carousel-indicators").width();

    $('.carousel-indicators').animate( scrollLeft: adjustedScroll , 800);

    indicatorPosition = adjustedScroll;
);

并且,当您的页面加载时,设置缩略图的初始滚动位置:

var indicatorPosition = 0;

【讨论】:

看我做了非常相似的事情。但是我有一个问题,即使滑块中的图像根本不显示。轮播中的主图像出现并在列表中不断循环,没有问题,但缩略图永远不会出现。需要注意的是,我尝试显示超过 100 张图片,所以我不确定这是否会导致任何问题。

以上是关于Bootstrap 3.0 中带有缩略图的轮播的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Wordpress 的 Bootstrap 轮播缩略图中的项目活动和数据源部分?

bootstrap轮播 为啥我的轮播没有用

bootstrap之carousel轮播图自定义分页器

带有缩略图和文字提示的轮播图

快速创建网页缩略图

在swift中创建网页缩略图