ЕГЭ
Назад
Библиотека флеш-карточек Создать флеш-карточки
Библиотека тестов Создать тест
Математика Английский язык Тренажёры для мозга ЕГЭ Русский язык Чтение Биология Всеобщая история Окружающий мир
Классы
Темы
Математика Алгебра Геометрия ОГЭ Физика География Биология Химия Всеобщая история История России Обществознание Русский язык Литература ЕГЭ Английский язык
Подобрать занятие
Классы
Темы
НАЗНАЧИТЬ

Как создавать интерактивы

Содержание

На сайте есть интерактивы внутри уроков, например:

Код интерактива хранится в одном файле name.js, где name — произвольное название. При загрузке код должен создать интерактив внутри изначально пустого

<div id="interactive-{name}" class="interact"></div>

Соотвественно, HTML и CSS хранится внутри JS файла с интерактивом.

Код для интерактива с кастрюлей bact-pot.js:

jQuery(document).ready(function ($) { //Подключать jQuery нужно именно так
    id = "#interactive-bact-pot" //id пустого div

    //Добавляем HTML и CSS в наш div
    $(id).append(`
        <style>
            .bacteria_images img {
                display: none;
            }

            #temp_reg {
                position: relative;
            }

            #arm {
                cursor: pointer;
            }

            #circle {
                width: 150px;
                height: 150px;
                background-color: var(--secondary_background);
                border-radius: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                margin: 70px 60px 60px 60px;
            }

            #pointer {
                position: absolute;
                width: 190px;
                height: 30px;
                background-color: var(--lightgray);
                border-radius: 50vh;
                display: flex;
                align-items: center;
                overflow: hidden;
            }

            #pointer div {
                width: 50px;
                height: 10px;
                background-color: var(--secondary);
                border-radius: 0 100vh 100vh 0;
            }

            .pot_label {
                font-family: var(--header_font);
                font-weight: var(--header_weight);
                font-size: 25px;
                position: absolute;
            }

            .pot_label.zero {
                left: 0;
                bottom: 10px;
            }

            .pot_label.one {
                left: 0;
                right: 0;
                margin: auto;
            }

            .pot_label.two {
                top: 35px;
                right: 35px;
            }

            .pot_label.three {
                top: 128px;
                right: 0;
            }
        </style>
        <div class="box">
        <div class="bacteria_images jc">
            <img src="/wp-content/uploads/2023/08/kastryulya0.svg">
            <img src="/wp-content/uploads/2023/06/kastryulya1-01.svg">
            <img src="/wp-content/uploads/2023/06/kastryulya2-01.svg">
            <img src="/wp-content/uploads/2023/06/kastryulya3-01.svg">
            <img src="/wp-content/uploads/2023/06/kastryulya4-01.svg">
            <img src="/wp-content/uploads/2023/06/kastryulya5-01.svg">
        </div>

        <div class="mt text-center" id="pot_desc">
        Сколько времени нужно, чтобы уничтожить все бактерии?
        </div>

        <div class="mt jc text-center">
            <div class="text-center" id="temp_reg">
            <div class="pot_label zero">ВЫКЛ</div>    
            <div class="pot_label one">1</div>
                <div class="pot_label two">2</div>
                <div class="pot_label three">3</div>
                <div id="arm">
                    <div id="circle" class="mt">
                        <div id="pointer">
                            <div></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    `)

    //JS код интерактива

    $("#interactive-bact-pot .bacteria_images img").eq(0).show()

    let state = 0

    $("#arm").css("transform", 'rotate(315deg)')
    $("#arm").click(function () {
        state++;
        if (state == 4) {
            state = 0;
        }
        deg = 0
        celc = 0
        time = 0
        switch (state) {
            case 0:
                deg = 315
                break
            case 1:
                deg = 90
                celc = 70
                time = 30
                break
            case 2:
                deg = 135
                celc = 85
                time = 15
                break
            case 3:
                celc = 100
                time = 5
                deg = 180
                break
        }
        
        if (state == 0) {
            $("#pot_desc").html(`Сколько времени нужно, чтобы уничтожить все бактерии?`)
        } else {
            $("#pot_desc").html(`Температура: ${celc} °C.<br>Времени потребуется: ${time} минут.`)
        }
        $(this).css("transform", `rotate(${deg}deg)`)
        startPot()
    })

    let timer
    function startPot () {
        $("#interactive-bact-pot .bacteria_images img").hide()
        clearInterval(timer)

        if (state == 0) {
            $("#interactive-bact-pot .bacteria_images img").eq(0).show()
            return
        } else {
            $("#interactive-bact-pot .bacteria_images img").eq(1).show()
        }

        seconds = 1
        if (state == 1) {
            seconds = 4
        } else if (state == 2) {
            seconds = 2.5
        }

        imageIndex = 1

        timer = setInterval(function () {
            imageIndex++
            $("#interactive-bact-pot .bacteria_images img").hide()
            $("#interactive-bact-pot .bacteria_images img").eq(imageIndex).show()
            if (imageIndex == 5) {
                clearInterval(timer)
            }
        }, seconds * 1000)

    }

})

Как вы заметили, в HTML используются классы, не прописанные в интерактиве. Это глобальные классы сайта, хранящиеся в style.css. Вам нужно использовать их для стилизации кнопок, шрифтов и других общих элементов.

Ссылка на style.css: https://obrazavr.ru/wp-content/themes/Main/style.css

Попробуйте создать у себя на компьютере песочницу, чтобы этот код работал как на сайте. Перед URL картинок нужно вставить https://obrazavr.ru. Тогда вы сможете удобно тестировать код интерактивов и быть уверенным, что они будут работать при загрузке на сайт.

Идеи интерактивов можно посмотреть в следующем уроке.

5
5
1
Количество опыта, полученного за урок 5

Оценить урок

Отзыв отправлен. Спасибо, что помогаете нам стать лучше!

Комментарии

Получить ещё подсказку

Трудности? Воспользуйтесь подсказкой

Верно! Посмотрите пошаговое решение

НАЗНАЧИТЬ