Карусель JavaScript без JQuery внутри кнопки - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь использовать только JavaScript (без jQuery и Bootstrap) внутри кнопки.

Как создать карусельный эффект, нажимая прямоугольные кнопки с чистым JS и CSS?

Я использую следующий код карусели:

.carousel-inner {
  height: 200px;
  background: black;
  color: #fff;
}
<link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/css/bootstrap.css">
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
  </ol>

  <div class="carousel-inner" role="listbox">
    <div class="carousel-item active">
      First
    </div>

    <div class="carousel-item">
      Second
    </div>

    <div class="carousel-item">
      Third
    </div>
  </div>

  <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
    <span class="icon-prev" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>

  <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
    <span class="icon-next" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/js/bootstrap.js"></script>

Это скриншот того, что я хочу:
enter image description here

1 Ответ

0 голосов
/ 14 апреля 2019

Вы должны знать о HTMLElements. Вы можете изучить их в консоли веб-инспектора, набрав document.body, а затем углубившись в объект. У них много функциональных возможностей, вам не нужно знать все это, но если вы собираетесь использовать vanilla js , хорошо для вас!

Важные вещи, которые вам нужно знать, это childNodes, eventListeners и offsetLeft.

Что-то в этом духе (непроверенное) должно помочь вам в этом.

const byId = (id) => document.getElementById(id);
const buttonContainer = byId("ButtonContainer");
const imageContainer = byId("ImageContainer");

let lastSelectedButton;

Array.from(buttonContainer.childNodes).forEach((child, childIndex) => {
  child.addEventListener("click", () => {
    if (lastSelectedButton) {
       lastSelectedButton.classList.remove("selected");
    }

    const scrollToMe = imageContainer.childNodes[childIndex];
    imageContainer.scrollX = scrollToMe.offsetLeft;

    child.classList.add("selected");
    lastSelectedButton = child;
  });
});

И если вы действительно хотите оживить его, добавьте Scroll Snapping .

А если вы вообще не пытаетесь сделать версию с прокруткой и просто отключитесь, используйте child.remove() и element.appendChild(child).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...