Клавиши со стрелками слайдера javascript и исчезновение изображения

Мне удалось получить простой слайдер изображений именно так, как я хотел, стилизовав его с помощью CSS-сеток, которые я тоже изучаю.

Мне не удалось сделать 2 вещи, которых я хотел бы достичь:

  1. Используйте клавиши со стрелками на клавиатуре, чтобы изменить «большое изображение», как это уже можно сделать, щелкнув по миниатюрам.
  2. сделать так, чтобы основное изображение отображалось с эффектом постепенного перехода.

Вот код и javacript, которые у меня уже есть, css находится в другом файле:

var lastImg = 1; //Set initial thumbnail and preview
document.getElementById(0).src = document.getElementById(lastImg).src;
document.getElementById(lastImg).className = "thumb selected";

function preview(img) {
  document.getElementById(lastImg).className = "thumb normal";
  img.className = "thumb selected";
  document.getElementById(0).src = img.src;
  lastImg = img.id
}
html,
body {
  height: 100vh;
}

body {
  padding: 0;
  margin: 0;
}

.container {
  height: 100vh;
  display: grid;
  grid-gap: 6px;
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: repeat(12, 1fr);
}

.nom {
  display: grid;
  grid-column: 3/8;
  grid-row: 1;
  color: #f9423ab5;
  font-family: 'Montserrat';
  font-size: 3.2vw;
  align-self: center;
  animation: couleur 8s;
}

a {
  display: grid;
  align-items: center;
  color: black;
  text-decoration: none;
  font-family: helvetica;
  font-size: 1.4vw;
  transform: rotate(-40deg);
  letter-spacing: 0.1rem;
}

.accueil {
  display: grid;
  grid-column: 10;
  grid-row: 1;
}

.contact {
  display: grid;
  grid-column: 11;
  grid-row: 1;
}

a:hover {
  text-decoration: none;
  color: coral;
}

.bigimage {
  width: 61vw;
  grid-column: 3/11;
  grid-row: 2/5;
  margin-top: 16px;
}

.thumb {
  width: 3vw;
  height: 2vw;
  margin-left: 18px;
  margin-bottom: 15px;
  align-self: center;
}

.thumb:hover {
  cursor: pointer;
  opacity: 0.1;
}

.thumbnails {
  grid-column: 1/3;
  grid-row: 2/5;
  margin-top: 16px;
}
<img id = "0" class = "preview normal bigimage" />

<div class = "thumbnails">
  <img id = "1" class = "thumb normal" src = "https://via.placeholder.com/140x100?text=image1" alt = "image1" onclick = "preview(this)" />
  <img id = "2" class = "thumb normal" src = "https://via.placeholder.com/140x100?text=image2" alt = "image2" onclick = "preview(this)" />
  <img id = "3" class = "thumb normal" src = "https://via.placeholder.com/140x100?text=image3" alt = "image3" onclick = "preview(this)" />


</div>

Я сделал вам отрывок. Вы можете добавлять изображения с lorempixel или placeholder.com - вы используете слово «эффект затухания перехода», почему бы не погуглить?

mplungjan 16.12.2018 17:35

Также не рекомендую использовать числовые идентификаторы. Вместо этого используйте, например, от "image0" до "image15".

mplungjan 16.12.2018 17:37

Спасибо mplungjan за помощь в размещении моего вопроса здесь, ;-)!

Guillaume13 16.12.2018 18:04

Пожалуйста, добавьте изображения из сети (заполнитель) и обновите фрагмент с помощью CSS

mplungjan 16.12.2018 18:10

Простите, но какой смысл добавлять изображения сюда с placeholder.com?

Guillaume13 16.12.2018 18:21

Чтобы создать минимальный воспроизводимый пример - чтобы нам не приходилось гадать, работает ваш слайдер или нет

mplungjan 16.12.2018 18:22

Я здесь новичок, и я даже не могу найти, как изменить свой фрагмент, чтобы добавить мой CSS, и я не знаю, как использовать placeholder.com. Я не профессиональный разработчик или компьютерщик, мне просто интересно создавать что-то в Интернете так, как я хочу. Мне просто нужна была помощь с подробностями о функциях javascript. В любом случае, спасибо за вашу помощь.

Guillaume13 16.12.2018 18:30

Нажмите редактировать - прокрутите вниз, нажмите отредактируйте приведенный выше фрагмент, откройте другую вкладку, перейдите на placeholder.com, используйте измеритель для создания изображений подходящего размера. Вернитесь и измените URL-адреса в src https://via.placeholder.com/140x100?text=image1, например, и добавьте недостающий CSS во фрейм CSS.

mplungjan 16.12.2018 18:32

Спасибо за вашу помощь, "mplungjan", я сделал это и стер некоторые изображения для большей ясности.

Guillaume13 16.12.2018 18:56

Но вы не обновили правильный фрагмент

mplungjan 16.12.2018 19:15

В любом случае у тебя есть ответ

mplungjan 16.12.2018 19:17

Сейчас обновил вашу исправленную версию, ;-). У меня есть большая часть ответа, и это круто! Я до сих пор не знаю, как заставить изображения немного блекнуть, когда основное изображение изменяется при нажатии на миниатюру или нажатии клавиш со стрелками.

Guillaume13 16.12.2018 19:25

Это может быть новый вопрос. Искать переход по первому щелчку

mplungjan 16.12.2018 19:26

Спасибо, я проверю с этими словами.

Guillaume13 16.12.2018 19:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
14
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

var lastImg = 'image1'; //Set initial thumbnail and preview
document.getElementById('image0').src = document.getElementById(lastImg).src;
document.getElementById(lastImg).className = "thumb selected";

function preview(img) {
  document.getElementById(lastImg).className = "thumb normal";
  img.className = "thumb selected";
  document.getElementById('image0').src = img.src;
  lastImg = img.id;
}

function previewOnKey(e) {
    /* left key */
    if (e.keyCode == 37) {
        var previousImg = document.getElementById(lastImg).previousElementSibling;
        if (previousImg) {
            preview(previousImg);
        }
    }

    /* right key */
    if (e.keyCode == 39) {
        var nextImg = document.getElementById(lastImg).nextElementSibling;
        if (nextImg) {
            preview(nextImg);
        }
    }
}

document.onkeydown = previewOnKey;
<img id = "image0" class = "preview normal bigimage" />

<div class = "thumbnails">
  <img id = "image1" class = "thumb normal" src = "https://placekitten.com/g/150/80" alt = "image1" onclick = "preview(this)"/>
  <img id = "image2" class = "thumb normal" src = "https://placekitten.com/g/151/80" alt = "image2" onclick = "preview(this)" />
  <img id = "image3" class = "thumb normal" src = "https://placekitten.com/g/152/80" alt = "image3" onclick = "preview(this)" />
 
</div>

Большое спасибо "IIona K" за время, потраченное на написание и отправку этого кода, он работает нормально, и теперь я также могу перемещаться между изображениями с помощью клавиш со стрелками. :-))

Guillaume13 16.12.2018 19:05

Другие вопросы по теме