【问题标题】:bootstrap 2.3 multiple images / items in carouselbootstrap 2.3 轮播中的多个图像/项目
【发布时间】:2014-07-11 08:16:58
【问题描述】:

我正在开发一个使用 Twitter Bootstrap 2 的基于 PHP 的网站。我正在从 MySQL 数据库中提取用户并尝试在屏幕上的多个帧/轮播项目中显示它们,而不是使用 while 的单个项目循环。

这是我的轮播目前的样子,你会注意到 用户 5 不应该像现在这样出现,只有当我点击右侧的箭头时才会出现旋转木马的一侧。

这就是我的 php 代码的样子

<div class="carousel slide" id="myCarousel">
            <h4 class="carousel-title">Text title</h4>
            <div class="carousel-inner">
        <?php
                while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
                    ?>
                    <div class="item active">
                        <div class="span3 mef-3">
                            <div class="about portrait">
                                <div class="tooltip-demo">
                                    <a href="#" rel="tooltip" data-placement="top" data-toggle="tooltip"
                                       data-title="">
                                        <img class="img-circle" width="180" height="200" data-src="holder.js/360x270"
                                             alt="270x280"
                                             style="" src="assets/img/adviser.png"></a>
                                </div>
                                <div class="caption">
                                    <h3 class="name" style="text-align: center"><?php echo $row['fname']." ".$row['lname'] ?></h3>

                                    <p style="text-align: center">
                                        Specialities</p>
                                </div>
                                <div class="mefradio">
                                    <input type="radio" name="adviser" id="adviser" value='<?php echo $row['user_id']."|".$row['fname']." ".$row['lname'] ?>'><br>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php
                }
                ?>
            </div>
            <a data-slide="prev" href="#textCarousel" class="left carousel-control">‹</a>
            <a data-slide="next" href="#textCarousel" class="right carousel-control">›</a>
        </div>

我将非常感谢有关如何使其工作的任何指导

更新

感谢@I can Has Kittenz

,这是正在运行的更新代码
<div class="carousel slide" id="myCarousel">
            <h4 class="carousel-title">Text title</h4>

            <div class="carousel-inner">
                <?php
                $i = 1;
                $next_item = true;
                while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
                if ($i == 1) {
                    echo '<div class="item active">';
                } elseif ($next_item == true) {
                    echo '<div class="item">';
                }

                ?>

                <div class="span3 mef-3">
                    <div class="about portrait">
                        <div class="tooltip-demo">
                            <a href="#" rel="tooltip" data-placement="top" data-toggle="tooltip"
                               data-title="">
                                <img class="img-circle" width="180" height="200" data-src="holder.js/360x270"
                                     alt="270x280"
                                     style="" src="assets/img/adviser.png"></a>
                        </div>
                        <div class="caption">
                            <h3 class="name"
                                style="text-align: center"><?php echo $row['fname'] . " " . $row['lname'] ?></h3>

                            <p style="text-align: center">
                                Specialities</p>
                        </div>
                        <div class="mefradio">
                            <input type="radio" name="adviser" id="adviser"
                                   value='<?php echo $row['user_id'] . "|" . $row['fname'] . " " . $row['lname'] ?>'><br>
                        </div>
                    </div>
                </div>


            <?php
            $next_item = false;

            if ($i % 4 == 0) {
                echo '</div>';
                $next_item = true;
            }

            $i++;
            }
            ?>
        </div>

        <a data-slide="prev" href="#myCarousel" class="left carousel-control">‹</a>
        <a data-slide="next" href="#myCarousel" class="right carousel-control">›</a>
        </div>

需要配合的JS如下

<script>

    $(document).ready(function(){
        $('#myCarousel').carousel({
            pause: true,
            interval: false
        });

    });
    $('#myCarousel').on('slid', '', function() {
        var $this = $(this);

        $this.find('.carousel-control').show();

        if($('.carousel-inner .item:first').hasClass('active')) {
            $this.find('.left.carousel-control').hide();
        } else if($('.carousel-inner .item:last').hasClass('active')) {
            $this.find('.right.carousel-control').hide();
        }

    });
</script>

【问题讨论】:

  • 检查 'class="item active"' 。对于第五项“活动”类不应该存在
  • @user3472089 谢谢,是的,我也是这么想的,但是因为我正在使用 while 看看如何从第五项中删除它?
  • 请参考这个。我,恐​​怕这种方法是不可能的。 stackoverflow.com/questions/20007610/…
  • 是的,我已经调查过了,他们使用的是 bootstrap 3,每个项目在计划 html 中添加了 4 个产品,没有使用任何 while 循环

标签: php html css twitter-bootstrap carousel


【解决方案1】:

更新:

根据 Bootstrap 2.3 轮播的工作方式,像您所做的那样的多个项目不会连续显示 4 个项目,只有一个 .item 类可以有一个 .active 类,所以这就是我们的会做:

<div class="item active">
  <div class="span3"><img></div>
  <div class="span3"><img></div>
  <div class="span3"><img></div>
  <div class="span3"><img></div>
</div>

<div class="item">
  <div class="span3"><img></div>
  <div class="span3"><img></div>
  <div class="span3"><img></div>
  <div class="span3"><img></div>
</div>

这就是我们将如何构建您的元素的外观。所以代码在:

<!-- code follows -->
<div class="carousel-inner">
<?php
$i = 1;
$next_item = true;

while ($i < 10)
    {
    if ($i == 1)
        {
        echo '<div class="item active">';
        }
    elseif ($next_item == true)
        {
        echo '<div class="item">';
        }

?>
                    <div class="span3 mef-3">
                    <!-- code follows -->
                    </div>
<?php
$next_item = false;

if ($i % 4 == 0)
    {
    echo '</div>';
    $next_item = true;
    }

$i++;
}
?>

另外,由于您将轮播命名为id=myCarousel,因此您的上一个和下一个按钮的href 应该是href="#myCarousel" 而不是href="#textCarousel"

这是 demo 的外观。

【讨论】:

  • 谢谢,我也尝试过这种方法,但没有奏效。
  • @Baig 是否还在轮播中显示第 5 项?
  • 不,它不显示第五个项目,但它不滚动
  • 谢谢,我正在检查并会回复
  • 它似乎工作正常,非常感谢,但是当我到达最后一项并单击下一个滑块消失时,我已经更新了我的问题中的代码,它正在工作
猜你喜欢
  • 2014-09-15
  • 2022-01-08
  • 2017-03-16
  • 2014-10-10
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
相关资源
最近更新 更多