Создание небольшой страницы с изображением с 3-мя кнопками

Я хочу создать небольшую веб-страницу с 3 кнопками, например, с фоновым изображением: Создание небольшой страницы с изображением с 3-мя кнопками

При наведении курсора на одну из кнопок изображение должно измениться с помощью js.

Как лучше всего добиться этого эффекта? Я пробовал с background-image, но когда изображение меняется, оно не меняется мгновенно. Сначала страница становится белой, я не знаю почему.

Спасибо.

///редактировать:

   document.addEventListener("DOMContentLoaded", function()
   {
    document.querySelector(".gaming").addEventListener("mouseover", function()
    {
        document.querySelector(".container").style.backgroundImage = 'url(1.png)';
    });
    document.querySelector(".media").addEventListener("mouseover", function()
    {
        document.querySelector(".container").style.backgroundImage = 'url(2.png)';
    });
    document.querySelector(".forum").addEventListener("mouseover", function()
    {
        document.querySelector(".container").style.backgroundImage = 'url(3.png)';
    });  
   });
   
.container {
    position: relative;
    height: 1080px;
}

.gaming 
{
position: absolute;
height:100%;
}

.media
{

}

.forum {
    position: absolute;

}
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "UTF-8">
    <title>Portal</title>
    <script src = "js.js"></script>
    <link rel = "stylesheet" type = "text/css" href = "css.css">
    <link rel = "stylesheet" type = "text/css" href = "reset.css">
  </head>
  <body>
<div class = "container">
  <image class = "image-portal"></image>
  <a class = "gaming">1</a>
  <a class = "media">2</a>
  <a class = "forum">3</a>
</div>
  </body>
</html>

Вот как я пытался это сделать. Сейчас пытаюсь расположить кнопки. Должен ли я изменить src изображения вместо добавления backgroundImage? (также я думаю, что мне тоже нужен обработчик для mouseleave).

Я не думаю, что это лучшее место, чтобы побудить людей написать ваш код за вас. Вы пробовали что-нибудь, что могли бы нам показать?

Adam 29.11.2018 19:03

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

Andrei Daniel 29.11.2018 19:07

Это просто переключение между одним изображением и другим или вы собираетесь переключаться на несколько изображений при наведении курсора?

Ryan Wilson 29.11.2018 19:13

Пожалуйста, поймите, что много людей приходят сюда и пишут вопросы, подобные этому, ожидая, что люди напишут это за них. В вашем вопросе нет того, что вы пробовали. Трудно помочь вам, когда мы не видим ваш код.

user47589 29.11.2018 19:13

Я добавил код. Мне просто нужны были идеи, как это сделать лучше всего, а не код. Спасибо хоть.

Andrei Daniel 29.11.2018 19:18

Для эффекта наведения при отображении изображений я бы рекомендовал даже не использовать JS так, как вы показываете выше. Просто используйте селектор CSS :hover вместо того, чтобы каждый раз запрашивать DOM для класса.

brianespinosa 29.11.2018 19:35

Это было бы лучше. Я не знал, почему не подумал об этом. Большое спасибо!

Andrei Daniel 29.11.2018 19:38
Поведение ключевого слова "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) для оценки ваших знаний,...
1
7
84
2

Ответы 2

Я думаю, вы должны загружать изображения при запуске страницы. Вы можете создать массив, а затем загрузить изображения из этого массива.

Вы можете скачать изображения заранее без кода, просто поместите несколько тегов <link rel = "preload"> в заголовок, например:

<head>
    <link rel = "preload" href = "1.png" as = "image" type = "image/png" />
    <link rel = "preload" href = "2.png" as = "image" type = "image/png" />
    <link rel = "preload" href = "3.png" as = "image" type = "image/png" />
</head>

Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content

Это помогло. Спасибо!

Andrei Daniel 29.11.2018 20:07

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