响应式布局与可折叠组件

3
我正在使用Laravel框架和Bootstrap开发网站,需要实现可折叠组件的响应式布局!我需要一些帮助 :)

大屏幕尺寸:

点击第一张图片:

enter image description here 点击第二张图片:

enter image description here

小屏幕尺寸:

点击第一张图片:

enter image description here

点击第二张图片:

enter image description here

目前我在处理大屏幕尺寸时遇到了问题:

enter image description here

代码:bootply

<section class="container full-width">
    <div class="row" id="accordion">
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                  <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive"/>
            </a>
            <div id="collapseOne" class="panel-collapse collapse in">
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding cyan">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
            </div>
        </div>
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
                  <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive"/>
            </a>
            <div id="collapseTwo" class="panel-collapse collapse">
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding cyan">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
            </div>
        </div>
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
                  <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive"/>
            </a>
            <div id="collapseThree" class="panel-collapse collapse">
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding cyan">
                ...
                </div>
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
            </div>
        </div>
    </div>
</section>

好的!我该如何拉伸可折叠组件?当我点击其他组件时,Bootstrap折叠组件是如何关闭其他组件的?

希望我已经能够解释清楚我的问题了 :)

感谢您的关注!

编辑:

enter image description here

已解决:

bootply

这个布局是针对 foreach 的(每行 3 个项目)

<section class="container-fluid no-padding">
     <div class="row no-padding">
          <div id="accordion-lg">
               <div class="hidden-xs panel">
                    @foreach (array_chunk($collection, 3) as $row)
                         @foreach ($row as $item)
                         <a class="col-lg-4 no-padding" data-toggle="collapse" href="{{ '#collapse-lg'.$item->id }}" data-parent="#accordion-lg">
                              Collapse Toogle
                         </a>
                         @endforeach
                         @foreach ($row as $item)
                         <div id="{{ 'collapse-lg'.$item->id }}" class="collapse">
                              Collapse
                         </div>
                         @endforeach
                    @endforeach
               </div>
          </div>
          <div id="accordion-xs">
               <div class="hidden-lg panel">
               @foreach ($category->trips as $item)
                    <a class="col-xs-12 no-padding" data-toggle="collapse" href="{{ '#collapse-xs'.$item->id }}" data-parent="#accordion-xs">
                        Collapse Toogle
                    </a>
                    <div id="{{ 'collapse-xs'.$item->id }}" class="collapse">
                        Collapse
                    </div>
               @endforeach
               </div>
          </div>  
     </div>
</section>

感谢帮助解决这个问题!


当您单击每个元素时,您想要实现的行为是什么?我有一个半工作的bootply,但我不确定您希望每个元素做什么。您是否希望每张图片仅切换其下方的文本,还是也隐藏所有其他显示的文本? - Marcelo
我在你的回复中留下了已准备好的布局,只是在可折叠组件中出现了一个问题,我已在评论中指出。 - Marco Andrade
3个回答

2
很抱歉,如果不复制内容,则无法在这些断点处实现您想要的行为。本质上,您将拥有两个手风琴,一个在lg上显示,另一个在xs上显示。
复制内容有一些缺点(例如增加加载时间,增加维护成本,增加更改时间等),但如果您认为这些问题可以接受,我提供以下解决方案。
我重构了您的代码(同时尽可能保持您所做的大部分事情-例如没有填充),并删除了许多不必要的bootstrap类。两个手风琴现在完全分开; lg先出现,然后是xs。
代码在此处可用:http://www.bootply.com/8sga1R1l0F 我还注意到原始代码中存在另一个问题。当您单击手风琴中的元素时,它不会隐藏任何其他正在显示的元素。这是由于此处讨论的“错误”: Bootstrap 3手风琴按钮切换“data-parent”不起作用 如果您有任何问题,请告诉我。
完整代码如下:
HTML
<section class="container-fluid no-padding">
    <div class="row no-padding">
        <div class="hidden-xs">
            <a class="col-lg-4 no-padding" data-toggle="collapse" href="#collapseBottom">
                <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
            </a>
            <a class="col-lg-4 no-padding" data-toggle="collapse" href="#collapseBottom">
                <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
            </a>
            <a class="col-lg-4 no-padding" data-toggle="collapse" href="#collapseBottom">
                <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
            </a>
            </div>
            <div id="collapseBottom" class="hidden-xs collapse in">
                <div class="col-lg-4 no-padding">
                    Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                </div>
                <div class="col-lg-4 no-padding cyan">
                    Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                </div>
                <div class="col-lg-4 no-padding">
                    Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                </div>
            </div>
        </div>
        <div id="xsAccordion">
            <div class="hidden-lg panel">
                <a class="col-xs-12 no-padding" data-toggle="collapse" href="#collapseOne" data-parent="#xsAccordion">
                    <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
                </a>
                <div id="collapseOne" class="collapse in">
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div class="cyan">
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                </div>
            </div>
            <div class="hidden-lg panel">
                <a class="col-xs-12 no-padding" data-toggle="collapse" href="#collapseTwo" data-parent="#xsAccordion">
                    <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
                </a>
                <div id="collapseTwo" class="collapse">
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div class="cyan">
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                </div>
            </div>
            <div class="hidden-lg panel">
                <a class="col-xs-12 no-padding" data-toggle="collapse" href="#collapseThree" data-parent="#xsAccordion">
                    <img src="http://static.tumblr.com/fjmz0wv/axlmf39xl/tumblr_m6o0emjayw1ru64rao1_1280.jpg" alt="" class="img-responsive">
                </a>
                <div id="collapseThree" class="collapse">
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div class="cyan">
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                    <div>
                        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.
                    </div>
                </div>
            </div>
       </div>
   </div>
</section>

CSS

.no-padding {
    margin: 0 !important;
    padding: 0 !important;
}

.cyan { 
    color: #00b1ba;
}

我看到您已经编辑了问题并提供了更多细节,不幸的是,我认为在不重复某些内容的情况下无法解决该问题。如果您不介意这样做,那么我有一个演示可以满足您的要求。如果这正是您想要的,请告诉我,我将编辑原始答案。http://www.bootply.com/VSYul2Pk30 - Marcelo
是的,我编辑了!我注意到解释得不太清楚 :) 不过我只是提供了两种使用这个布局的情况 :) 我觉得现在好多了!好的!从你的演示开始,我制作了这个布局,但是我还有一个问题:当我点击一张图片时,其他可折叠组件应该展开 :) 谢谢帮忙!http://www.bootply.com/phc2wZ5mMh 重复代码没有问题吗? - Marco Andrade
然而我添加了一些缺失的东西 :) 它可以工作了!非常感谢你! - Marco Andrade

1
使用 Bootstrap 4,您可以使用 order 类来更改元素的顺序。首先,按照您想要在移动设备上显示的顺序排列元素。然后,在大于移动设备的设备上应用 order-sm-* 类来更改顺序。
<!DOCTYPE html>
<html>

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
        integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
        integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
        crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
        integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
        crossorigin="anonymous"></script>
</head>

<body>
    <div class="container">
        <h2>Simple Collapsible</h2>
        <p>Click on the button to toggle between showing and hiding content.</p>
        <div>
            <div class="row d-flex flex-wrap">
                <button type="button" class="btn btn-info order-md-0 col col-md-4 col-sm-12" data-toggle="collapse"
                    data-target="#demo">Simple collapsible</button>
                <div id="demo" class="collapse order-md-3 col-md-4 col-sm-12">
                    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
                </div>
                <button type="button" class="btn btn-info order-md-1 col-md-4 col-sm-12" data-toggle="collapse"
                    data-target="#demo2">Simple collapsible</button>
                <div id="demo2" class="collapse order-md-4 col-md-4 col-sm-12">
                    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
                </div>
                <button type="button" class="btn btn-info order-md-2 col-md-4 col-sm-12" data-toggle="collapse"
                    data-target="#demo3">Simple collapsible</button>
                <div id="demo3" class="collapse order-md-5 col-md-4 col-sm-12">
                    Lorem ipsum dolor sit amet, consectetur adipisicing elit,
                    sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
                </div>
            </div>
        </div>
    </div>
</body>
</html>

截图

桌面版 enter image description here 移动版 enter image description here


桌面版扩展 这里输入图片描述

移动版扩展 这里输入图片描述


0
如果我正确理解了您的问题,以下演示应该适用于您...请检查一下。

http://www.bootply.com/cbtRf3xqaV

<section class="container full-width">
    <div class="row" id="accordion">
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" class="left">
              <img src="test.jpg" style="height: 150px; width: 150px;">
            </a>
            <div id="collapseOne" class="panel-collapse collapse in left">
                <div class="col-lg-4 col-xs-12 no-padding clearfix">
                ...
                </div>
              <div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding cyan left">
                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.
                </div><div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
            </div>
        </div>
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
               <img src="test.jpg" style="height: 150px; width: 150px;">
            </a>
            <div id="collapseTwo" class="panel-collapse collapse">
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div>
              <div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding cyan">
                ...
                </div><div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding">
                ...
                </div><div class="clearfix"></div>
            </div>
        </div>
        <div class="col-lg-4 col-xs-12 no-padding">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree" class="left">
                <img src="test.jpg" style="height: 150px; width: 150px;">
            </a>
            <div id="collapseThree" class="panel-collapse collapse left">
                <div class="col-lg-4 col-xs-12 no-padding">
                Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, 
                </div><div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding cyan">
                 the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
                </div><div class="clearfix"></div>
                <div class="col-lg-4 col-xs-12 no-padding">
                when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with
                </div><div class="clearfix"></div>
            </div>
        </div>
    </div>
</section>

更新:

更新的演示:http://www.bootply.com/cbtRf3xqaV

你能帮我检查一下吗?


你好irvgk!不,我在第三张图片中想要的引用lorem ipsum在屏幕宽度上足够伸展,就像第一张图片一样!感谢你的帮助! - Marco Andrade
非常感谢您的帮助,但我认为您没有理解我的问题。我编辑了我的主题图片以更好地理解,并附上了使用的代码演示。当我点击第一张图片时,突出显示的是什么!如果您点击第二张图片,它也应该在屏幕宽度上拉伸 :) - Marco Andrade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接