Генератор случайных изображений с использованием JavaScript

Опубликовано: 13 Августа, 2022

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

Подход: Изображения, которые будут генерироваться случайным образом на веб-сайте, должны храниться в виде массива, затем эти изображения отображаются пользователю через регулярные промежутки времени. Мы используем функцию setInterval(), которая является встроенной функцией JavaScript, для установки таймера между отображаемыми изображениями, и мы будем использовать метод floor( Math.random() *pics.length) для генерации случайного числа между 0 и длина массива, который назначается изображениям для случайного отображения.

Ниже приведена пошаговая реализация описанного выше подхода.

Шаг 1: На своей HTML-странице создайте пустой раздел, который будет содержать случайно сгенерированные изображения.

index.html




<!DOCTYPE html>
<html>
  
<head>
    <style>
        * {
            margin: 0%;
            padding: 0%;
            box-sizing: border-box;
            font-family: Arial, Helvetica, sans-serif;
        }
  
        body {
            background: rgba(120, 16, 180, 0.767);
            height: 100%;
            background-position: center;
            background-repeat: no-repeat;
            background-size: cover;
        }
  
        .container {
            margin: 1.5vh 20vw;
            margin-top: 10vh;
            text-align: center;
            background: rgb(39, 188, 209);
            background: linear-gradient(118deg,
                rgba(39, 188, 209, 0.9783263647255778) 0%,
                rgba(6, 14, 101, 1) 100%);
            opacity: 0.9;
            color: white;
            padding: 10px 10vw;
            border-radius: 20px;
            min-height: 15vh;
        }
  
        h1 {
            text-transform: uppercase;
        }
  
        section {
            height: 50vh;
            width: 100%;
            margin-top: -50px;
            background-position: center;
            background-repeat: no-repeat;
        }
    </style>
  
</head>
  
<body>
    <div class="container">
        <br>
        <h1>Geeks For Geeks Courses</h1><br>
        <p>
            With the idea of imparting programming 
            knowledge, Mr. Sandeep Jain, an IIT 
            Roorkee alumnus started a dream,
            GeeksforGeeks. Whether programming 
            excites you or you feel stifled, 
            wondering how to prepare for interview
            questions or how to ace data structures 
            and algorithms, GeeksforGeeks is a 
            one-stop solution.
        </p>
        <br><br><br>
        <section></section>
        <br>
    </div>
</body>
  
</html>

Выход:

Шаг 2: В JavaScript создайте массив ссылок на изображения. Изображения внутри массива должны генерироваться случайным образом на веб-странице. Мы будем вызывать индексы этого массива случайным образом, используя функцию Math.random для отображения.

Создайте переменную JavaScript для хранения случайного значения, рассчитанного с помощью библиотеки Math, т.е. Math.floor(Math.random()*pics.length) . Он собирается сгенерировать случайное число между 0 и длиной массива pics, это будет присвоено изображениям внутри массива pics для их случайного отображения.

setInterval() — это встроенная функция JavaScript, которая используется для установки таймера между отображаемыми изображениями. У него есть 2 параметра: функция, которую необходимо выполнить, и временной интервал между каждым поколением.

Теперь объедините все коды JS в свой HTML-код.

index.html




<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> Image Generator</title>
    <style>
        * {
            margin: 0%;
            padding: 0%;
            box-sizing: border-box;
  
            font-family: Arial, Helvetica, sans-serif;
        }
  
        body {
            background: rgba(120, 16, 180, 0.767);
            height: 100%;
            background-position: center;
            background-repeat: no-repeat;
            background-size: cover;
        }
  
        .container {
            margin: 1.5vh 20vw;
            margin-top: 10vh;
            text-align: center;
            background: rgb(39, 188, 209);
            background: linear-gradient(118deg,
                    rgba(39, 188, 209, 0.9783263647255778) 0%,
                    rgba(6, 14, 101, 1) 100%);
            opacity: 0.9;
            color: white;
            padding: 10px 10vw;
            border-radius: 20px;
            min-height: 15vh;
        }
  
        h1 {
            text-transform: uppercase;
        }
  
        section {
            height: 50vh;
            width: 100%;
            margin-top: -50px;
            background-position: center;
            background-repeat: no-repeat;
        }
    </style>
</head>
  
<body>
    <div>
        <br>
        <h1>Geeks For Geeks Courses</h1><br>
        <p>
           With the idea of imparting programming knowledge, 
           Mr. Sandeep Jain, an IIT Roorkee alumnus started a dream,
           GeeksforGeeks. Whether programming excites you or you 
           feel stifled, wondering how to prepare for interview
           questions or how to ace data structures and algorithms, 
           GeeksforGeeks is a one-stop solution.
        </p>
  
        <br><br><br>
        <section></section>
        <br>
    </div>
    <script>
        const pics = [
            "url(
            "url(
            "url(
            "url(
            "url(
            "url(
            "url(
        ];
        const pic = document.querySelector("section");
  
        function showImage() {
            var a = Math.floor(Math.random() * pics.length);
            var img = pics[a];
            pic.style.backgroundImage = img;
        }
  
        setInterval(showImage, 1000);
    </script>
</body>
  
</html>

Выход: