Добавьте коллапсирующий нижний колонтитул в карточку (Bootstrap) - PullRequest
2 голосов
/ 19 апреля 2020

Я сделал три блока - используя класс CARD в bootstrap. Это сработало хорошо. Теперь я хотел бы добавить нижний колонтитул (или просто div) на карту, которая позволяет «Показать / Скрыть детали».

Я пробовал 10 разных способов, и карты почему-то всегда «ломаются». У меня есть код, который работает для карт, но без свертывания

Цель состоит в том, чтобы свернуть последние 3 строки, а «Показать график платежей» изменится на «Скрыть график платежей».

Кто знает, как туда добраться? Где поместить класс div для разрушения, не разбивая карту?

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/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/4.1.0/js/bootstrap.min.js"></script>

<!-- Wrapper for Cards -->
<div class="row mx-n2">
  <div class="col-sm-6 col-md-4 px-2 mb-3 mb-md-0">

    <!-- Card 1 -->
    <a class="card h-100 transition-3d-hover" href="#">
      <img class="card-img-top" src="../../assets/img/480x220/monthly.gif" alt="Monthly Animation">
      <div class="card-body">
        <h4>Monthly</h4>
        <p class="font-size-1 text-body mb-0">You will be charged every month the amount of</p>
        <h3 class="text-center font-weight-bold text-black-50 mb-0 mt-4">USD 43</h3>
      </div>
      <hr/>
      <!-- Collapsing Footer -->
      <div class="card-footer border-0 pt-0">
        <span class="font-size-1 text-black-50">Show payment schedule</span>
        <div class="row pt-2">
          <div class="col">
            <span class="today font-size-1 text-black-50" data-toggle="tooltip" data-html="true" id="today">Today</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 43</span>
          </div>
        </div>
        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">June 2020</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 43</span>
          </div>
        </div>
        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">July 2020</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 43</span>
          </div>
        </div>
      </div>
      <!-- End Collapsing Footer -->
    </a>
    <!-- End Card 1 -->

  </div>
  <div class="col-sm-6 col-md-4 px-2 mb-3 mb-md-0">

    <!-- Card 2 -->
    <a class="card h-100 transition-3d-hover" href="#">
      <img class="card-img-top" src="../../assets/img/480x220/quarterly.gif" alt="Quarterly Animation">
      <div class="card-body">
        <h4>Quarterly</h4>
        <p class="font-size-1 text-body mb-0">You will be charged every third month the amount of</p>
        <h3 class="text-center font-weight-bold text-black-50 mb-0 mt-4">USD 102</h3>
      </div>
      <hr/>
      <!-- Collapsing Footer -->
      <div class="card-footer border-0 pt-0">
        <span class="font-size-1 text-black-50 ">Show payment schedule</span>
        <div class="row pt-2">
          <div class="col">
            <span class="today font-size-1 text-black-50" data-toggle="tooltip" data-html="true" id="today">Today</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 102</span>
          </div>
        </div>

        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">July 2020</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">July 2020</span>
          </div>
        </div>
        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">July 2020</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 43</span>
          </div>
        </div>
      </div>
      <!-- End Collapsing Footer -->
    </a>
    <!-- End Card 2 -->
  </div>
  <div class="col-sm-6 col-md-4 px-2 mb-3 mb-md-0">
    <!-- End Card 3 -->
    <a class="card h-100 transition-3d-hover" href="#">
      <img class="card-img-top" src="../../assets/img/480x220/yearly.gif" alt="Yearly Animation">
      <div class="card-body">
        <h4>Annually</h4>
        <p class="font-size-1 text-body mb-0">You will be charged once every year the amount of</p>
        <h3 class="text-center font-weight-bold text-black-50 mb-0 mt-4">USD 408</h3>
      </div>
      <hr/>
      <!-- Collapsing Footer -->
      <div class="card-footer border-0 pt-0">
        <span class="font-size-1 text-black-50">Show payment schedule</span>
        <div class="row pt-2">
          <div class="col">
            <span class="today font-size-1 text-black-50" data-toggle="tooltip" data-html="true" id="today">Today</span> </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 408</span>
          </div>
        </div>
        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">April 2021</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 408</span>
          </div>
        </div>
        <div class="row">
          <div class="col">
            <span class="font-size-1 text-black-50" data-toggle="tooltip" data-html="true" title="placeholder">April 2022</span>
          </div>
          <div class="col">
            <span class="font-size-1 text-black-50">USD 408</span>
          </div>
        </div>
      </div>
      <!-- End Collapsing Footer -->
    </a>
    <!-- End Card 3 -->
  </div>
</div>
<!-- End Wrapper for Cards -->

Visual reference

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Как это? для получения дополнительной информации посетите https://getbootstrap.com/docs/4.4/components/collapse/

Объяснение

Я добавил

data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample"

к вашему span так , он работает как collapsable toggler и добавляет root div с

class="collapse show" id="collapseExample"

к вашим трем предметам, так что может разрушиться только один div.

document.querySelectorAll('.change_text').forEach(cur => {
  cur.addEventListener('click', e => {
    const target = e.target;
    if (target.textContent === 'Show payment schedule') {
      target.textContent = 'Hide payment schedule';
    } else {
      target.textContent = 'Show payment schedule';
    }
  })
});
image
0 голосов
/ 19 апреля 2020

Похоже, ваш свертывающийся раздел - это просто еще один элемент card, вложенный в родительский элемент card. Согласно документам, Bootstrap имеет элемент Collapse и используется вместе с data-toggle="collapse", когда элемент, запускающий анимацию, имеет значение link. Когда элементом, запускающим анимацию, является div, как в вашем случае, вы должны присвоить ему класс collapse.

В документах приведены примеры для обоих. Пробуем что-то вроде второй части:

<p>
  <a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
    Button with data-target
  </button>
</p>
<div class="collapse" id="collapseExample">
  <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>
...