【问题标题】:Bootstrap 4 - Show one div and hide another one with single button actionBootstrap 4 - 显示一个 div 并通过单个按钮操作隐藏另一个
【发布时间】:2020-03-29 11:28:47
【问题描述】:

我的目的是 display:none "DIV1" 和 show "display:flex;" “DIV2”按钮上的单个操作。 我认为最好的方法是使用这个:https://getbootstrap.com/docs/4.0/components/collapse/#multiple-targets 但我不知道该怎么做。

目前,我编写了这段代码,但我认为当我们使用 Bootstrap 时这不是最佳实践:

CSS

@media (max-width: 576px)
DIV1.openFrame {
  display:flex;
}
@media (max-width: 576px)
DIV1.closeFrame {
  display:none;
}
@media (max-width: 576px)
DIV2.openFrame {
  display:flex;
}
@media (max-width: 576px)
DIV2.closeFrame {
  display:none;
}

JAVASCRIPT(类似这样的东西)

function toggleMenu() {
  // Something in JQuery
  $(".DIV1").toggleClass("openFrame")
  $(".DIV2").toggleClass("closeFrame")

  // OR

  $(".DIV1").toggleClass("closeFrame")
  $(".DIV2").toggleClass("openFrame")
}

HTML

<div class="container">
  <div class="row">
    <div class="col d-flex DIV1">
      1 of 2
    </div>
    <div class="col d-flex DIV2">
      2 of 2
    </div>
  </div> 
</div>
<button class="btn" type="button" onClick="toggleMenu()">
>
</button>

JsFiddle

编辑:

我尝试了多目标解决方案:

<p>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
  <div class="col">
    <div class="collapse multi-collapse show" id="multiCollapseExample1">
      <div class="card card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
      </div>
    </div>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample2">
      <div class="card card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
      </div>
    </div>
  </div>
</div>

问题是第一个块即使使用 display:none 也不会消失(我不希望左侧有可用空间)。 非常重要的是,当达到“md”断点时,我希望所有块都可见。这就是为什么我在 CSS @media (max-width: 576px) 中对 DIV1 和 DIV2 使用媒体查询。

【问题讨论】:

  • 看看我的回答,您提供的代码中有几个问题。如果您在使用引导程序内置 data-toggle 函数时遇到问题,您应该使用此函数提供代码,而不是其他尝试。否则我们无法弄清楚它出了什么问题。
  • 我终于找到了编辑的解决方案。所有的问题都解决了。感谢您的宝贵时间!

标签: jquery html css twitter-bootstrap collapse


【解决方案1】:

一开始你的CSS 类有问题。应该是这样的:

.DIV1.openFrame {
  display:flex;
}
...

如果DIV1,请注意前面的点。这是必需的,因为DIV1 是一个类,而不是 HTML 标记(例如:&lt;DIV1&gt;&lt;/DIV1&gt;)。

下一个问题是,您在函数的每一行都缺少;

function toggleMenu() {
  $(".DIV1").toggleClass("openFrame");
  ...

最后但并非最不重要的是,不需要创建新类,因为你可以使用 d-flex,也可以使用 bootstrap4 使用 d-none

您将d-flex 分配给最初要显示的div,将d-none 分配给您要隐藏的div。之后,您可以在函数内切换这两个类。

这是一个工作示例:

function toggleMenu() {
  $(".DIV1").toggleClass("d-none");
  $(".DIV2").toggleClass("d-flex");
  $(".DIV1").toggleClass("d-flex");
  $(".DIV2").toggleClass("d-none");
}
.row {
  background: #f8f9fa;
  margin-top: 20px;
}

.col {
  border: solid 1px #6c757d;
  padding: 10px;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

<div class="container">
  <div class="row">
    <div class="col d-none DIV1">
      1 of 2
    </div>
    <div class="col d-flex DIV2">
      2 of 2
    </div>
  </div> 
</div>
<button class="btn" type="button" onClick="toggleMenu()">
>
</button>

【讨论】:

  • 完美适用于非多目标解决方案 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2019-01-18
  • 1970-01-01
  • 2015-09-07
  • 2015-10-15
  • 2016-11-27
相关资源
最近更新 更多