Рубрики
Без рубрики

Как создать Lightbox, используя HTML, CSS и JavaScript

Введение LightBox – это комбинация двух компонентов, модального и слайд-шоу. Здесь вы построим простой лайтбокс, используя HTML, CSS и JavaScript. Лайтбокс будет содержаться в модальном модальном, который будет запущен некоторыми JavaScript, из обработчиков событий в HTML Markup. Ты буду

Вступление

Lightbox – это сочетание двух компонентов, а модал и слайд-шоу. Здесь вы построим простой лайтбокс, используя HTML , CSS и JavaScript Отказ

LightBox будет содержаться в модальном, который будет запущен некоторыми JavaScript , от Обработчики событий в HTML разметки. Вы будете строить стили, которые обеспечит государство с CSS и поведение с JavaScript Отказ Вы также найдете ссылочный список методов, которые вы используете, и другие полезные биты TID, которые связаны с этим руководством, внизу.

Наши изображения

Изображения, которые мы будем использовать, поставляются Pexels , бесплатную фотодохранительную галерею, которая позволяет вам предоставлять высококачественные изображения к своим проектам быстро, бесплатно и обычно без необходимых атрибутов.

Просто покажи мне код!

Живой пример можно найти Здесь – Кодепен/Lightbox И полный проект кода находится у дна.

Шаг 1. Разметка

Разметки или HTML обеспечивает структуру для лайтбокса.



Toy car on the road.
Toy car exploring offroad.
Toy car in the city.

Шаг 2. Стиль с CSS.

CSS предоставляет вам разные состояния для вашего Lightbox. Такие вещи, как видимость, позиционирование и эффекты наводнения.

Ваш стиль должен выглядеть так:

/* Here you provide a best practice's "reset", read more about it at the bottom! :) */

html {
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  margin: 0;
}

/* You define the style of our previews here, you are using flex to display the images 
   "responsively". */

.preview {
  width: 100%;
}

.row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.row > .col {
  padding: 0 8px;
}

.col {
  float: left;
  width: 25%;
}

/* Now you want to define what the lightbox will look like. Note that you have the display
   as none. You don't want it to show until the user clicks on one of the previews. 
   You will change this display property with JavaScript below. */
   
.modal {
  display: none;
  position: fixed;
  z-index: 1;
  padding: 10px 62px 0px 62px;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: black;
}

.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: auto;
  padding: 0 0 0 0;
  width: 80%;
  max-width: 1200px;
}

/* Same with your slides, you set the display to none, because you want to choose which 
   one is shown at a time. */

.slide {
  display: none;
}

.image-slide {
  width: 100%;
}

.modal-preview {
  width: 100%;
}

.dots {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

/* You want the previews a little transparent to show that they are "inactive". 
   You then add an .active or :hover class to animate the selections for your user when
   they interact with your controls and clickable content.
 */

img.preview, img.modal-preview {
  opacity: 0.6;
}

img.active,
.preview:hover,
.modal-preview:hover {
  opacity: 1;
}

img.hover-shadow {
  transition: 0.3s;
}

.hover-shadow:hover {
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
} 

.close {
  color: white;
  position: absolute;
  top: 10px;
  right: 25px;
  font-size: 35px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #999;
  text-decoration: none;
  cursor: pointer;
}

.previous,
.next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  padding: 16px;
  margin-top: -50px;
  color: white;
  font-weight: bold;
  font-size: 20px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
  user-select: none;
  -webkit-user-select: none;
}

.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

.previous:hover,
.next:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

Шаг 3. JavaScript

Сейчас к бизнесу! Ваш JavaScript должен выглядеть так:

// Initialize here and run showSlide() to give your lightbox a default state.

let slideIndex = 1;
showSlide(slideIndex);

// You are providing the functionality for your clickable content, which is 
// your previews, dots, controls and the close button.

function openLightbox() {
  document.getElementById('Lightbox').style.display = 'block';
}

function closeLightbox() {
  document.getElementById('Lightbox').style.display = 'none';
};

// Note that you are assigning new values here to our slidIndex.

function changeSlide(n) {
  showSlide(slideIndex += n);
};

function toSlide(n) {
  showSlide(slideIndex = n);
};

// This is your logic for the light box. It will decide which slide to show 
// and which dot is active.

function showSlide(n) {
  const slides = document.getElementsByClassName('slide');
  let modalPreviews = document.getElementsByClassName('modal-preview');

  if (n > slides.length) {
    slideIndex = 1;	
  };
  
  if (n < 1) {
    slideIndex = slides.length;
  };

  for (let i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
  };
  
  for (let i = 0; i < modalPreviews.length; i++) {
    modalPreviews[i].className = modalPreviews[i].className.replace(' active', '');
  };
  
  slides[slideIndex - 1].style.display = 'block';
  modalPreviews[slideIndex - 1].className += ' active';
};

Вот и все! Теперь поставьте весь код вместе. Теперь у вас должен быть функциональный лайтбокс.

Все код


  
  
Toy car on the road.
Toy car exploring offroad.
Toy car in the city

Больше информации:

HTML

Модал - всплывающее окно

Обработчики событий - HTML-свойства, которые прослушают пользовательские события.

Сущность - строка, представляющая зарезервированный чарильник в HTML.

CSS.

Размеры коробки: - Свойство CSS3, которое контролирует способ браузера оказывает контент на основе высоты и ширины.

Flex-Box - Новая технология, которая помогает с позиционированием содержимого HTML в отзывчивом Mannor.

: hover - псевдоселектор, который запускается, когда пользователь охватывает элемент, когда этот класс назначен ему.

JavaScript

Пусть Переменная блока-охвата.

const Постоянная сфера блока.

getelementbyId () - метод документа, который возвращает ссылку на HTML-элемент.

getelementsbyclassname () - метод документа, который возвращает массив ссылок на HTML, имеющие соответствующие классы.

+ = - оператор назначения, который добавит цифры или объединенные строки.

Ресурсы:

Живой пример - кодепен, который демонстрирует вышеуказанный код.

Интерактивная Flex-Box - Интерактивный кодепен, который показывает поведение Flex-Box.

Pexels - Бесплатный фото фотография.

MDN - Отличное место для информации о веб-сайте.

W3School - Lightbox - Этот код был вдохновлен отсюда. Спасибо w3schools!

Оригинал: "https://www.freecodecamp.org/news/how-to-create-a-lightbox-using-html-css-and-javascript/"