# Описание проекта и его структура Данный проект представляет собой веб-страницу, демонстрирующую возможности продукта BlackBox и его сравнение с другими продуктами. ## Структура проекта ``` /Workspace ├── .htaccess ├── docker-compose.yml ├── index.html ├── nginx.conf ├── project_description.md ├── css/ │ ├── all.min.css │ ├── style.css │ └── tailwind.min.css ├── images/ │ ├── banner-image.webp │ ├── bb_on_white-square.webp │ ├── logo.webp │ └── scales.webp ├── js/ │ ├── all.min.js │ ├── echarts.min.js │ ├── fade-up.js │ ├── features.js │ ├── flipbook.js │ ├── lang-detect-redirect.js │ └── language-switcher.js ├── lang/ │ ├── en/ │ │ ├── index.html │ │ ├── json/ │ │ │ └── en.json │ │ └── pages/ │ │ └── faq.html │ ├── es/ │ │ ├── index.html │ │ ├── json/ │ │ │ └── es.json │ │ └── pages/ │ │ └── faq.html │ └── ru/ │ ├── index.html │ ├── json/ │ │ └── ru.json │ └── pages/ │ └── faq.html └── pages/ └── faq.html ``` - `/Workspace`: Корневая директория проекта. - `docker-compose.yml`: Файл конфигурации для Docker Compose, используемый для определения и запуска многоконтейнерных Docker-приложений. - `index.html`: Главный HTML-file, содержащий структуру веб-страницы. - `.htaccess`: Файл конфигурации веб-сервера Apache для управления перенаправлениями URL для мультиязычности. - `.htaccess`: Файл конфигурации веб-сервера Apache для управления перенаправлениями URL для мультиязычности. - `docker-compose.yml`: Файл конфигурации для Docker Compose, используемый для определения и запуска многоконтейнерных Docker-приложений. - `index.html`: Главный HTML-файл, содержащий структуру веб-страницы. - `nginx.conf`: Файл конфигурации веб-сервера Nginx. - `project_description.md`: Этот файл, содержащий описание проекта и его структуры. - `css/`: Директория для файлов стилей. - `css/all.min.css`: Минимизированный файл CSS, возможно, содержащий объединенные стили. - `css/style.css`: Основной файл CSS, содержащий стили для оформления веб-страницы. - `css/tailwind.min.css`: Минимизированный файл CSS, возможно, содержащий стили Tailwind CSS. - `images/`: Директория для изображений. - `images/banner-image.webp`: Изображение баннера в формате WebP. - `images/bb_on_white-square.webp`: Изображение продукта "BlackBox" на белом фоне. - `images/logo.webp`: Файл логотипа в формате WebP. - `images/scales.webp`: Изображение весов или сравнения. - `js/`: Директория для файлов JavaScript. - `js/all.min.js`: Минимизированный файл JavaScript, возможно, содержащий объединенные скрипты. - `js/echarts.min.js`: Минимизированный файл JavaScript, возможно, содержащий библиотеку ECharts для построения графиков. - `js/fade-up.js`: Скрипт для анимации появления элементов при прокрутке. - `js/features.js`: Скрипт для отображения таблицы сравнения функций продуктов. Загружает переводы из соответствующего JSON файла. - `js/flipbook.js`: Скрипт для реализации функционала "флипбука" и модального окна с деталями продукта. Загружает переводы для деталей продукта и текста кнопок из соответствующего JSON файла. - `js/lang-detect-redirect.js`: Определяет язык браузера пользователя и перенаправляет на соответствующую языковую версию страницы при первом посещении. - `js/language-switcher.js`: Добавляет на страницу плавающую кнопку-переключатель языка с выпадающим списком. - `lang/`: Директория, содержащая поддиректории для каждого поддерживаемого языка. - `lang/en/`: Директория для английской версии сайта. - `lang/en/index.html`: HTML-файл с контентом на английском языке. - `lang/en/json/`: Директория, содержащая JSON файл с английскими переводами. - `lang/en/json/en.json`: JSON файл с английскими переводами. - `lang/en/pages/`: Директория, содержащая страницы для английской версии сайта. - `lang/en/pages/faq.html`: HTML-файл с контентом FAQ на английском языке. - `lang/es/`: Директория для испанской версии сайта. - `lang/es/index.html`: HTML-файл с контентом на испанском языке. - `lang/es/json/`: Директория, содержащая JSON файл с испанскими переводами. - `lang/es/json/es.json`: JSON файл с испанскими переводами. - `lang/es/pages/`: Директория, содержащая страницы для испанской версии сайта. - `lang/es/pages/faq.html`: HTML-файл с контентом FAQ на испанском языке. - `lang/ru/`: Директория для русской версии сайта. - `lang/ru/index.html`: HTML-файл с контентом на русском языке. - `lang/ru/json/`: Директория, содержащая JSON файл с русскими переводами. - `lang/ru/json/ru.json`: JSON файл с русскими переводами. - `lang/ru/pages/`: Директория, содержащая страницы для русской версии сайта. - `lang/ru/pages/faq.html`: HTML-файл с контентом FAQ на русском языке. - `pages/`: Директория, содержащая общие страницы. - `pages/faq.html`: HTML-файл с общим контентом FAQ. ## Взаимодействие файлов - `index.html` является центральным файлом, который связывает все остальные ресурсы. - В HTML файлах подключены файлы стилей из директории `css/` (`style.css`, `all.min.css`, `tailwind.min.css`) для визуального оформления элементов страницы. - В HTML файлах подключены скрипты из директории `js/` (`fade-up.js`, `features.js`, `flipbook.js`, `lang-detect-redirect.js`, `language-switcher.js`, `all.min.js`, `echarts.min.js`) для добавления интерактивности и динамического контента, а также для мультиязычности. - Скрипты взаимодействуют с элементами в HTML через их ID или классы для изменения их поведения или внешнего вида. - Изображения из директории `images/` (`banner-image.webp`, `bb_on_white-square.webp`, `logo.webp`, `scales.webp`) используются в HTML (например, в теге `` или как фон в CSS). - JavaScript файлы `features.js` и `flipbook.js` загружают переводимый контент из JSON файлов, расположенных в директориях `lang//json/`, в зависимости от текущего языка страницы. ## Стили (css/) Директория `css/` содержит файлы стилей, определяющие внешний вид веб-страницы. - **style.css**: Основной файл CSS, содержащий стили для: - Общих элементов страницы (тело, заголовки, параграфы). - Макетных элементов (использование Flexbox или Grid для расположения элементов). - Оформления текста, цветов, фонов. - Стилизации интерактивных элементов (кнопки, ссылки). - Адаптивного дизайна (медиазапросы для различных размеров экрана). - Стили, связанные с анимацией появления (`.fade-up`, `.animate-fadeUp`). - Стили для флипбука и модального окна. - Стили для переключателя языка. - **all.min.css**: Минимизированный файл CSS, возможно, содержащий объединенные стили из различных источников. - **tailwind.min.css**: Минимизированный файл CSS, возможно, содержащий стили из фреймворка Tailwind CSS. ## Скрипты (js/) Директория `js/` содержит файлы скриптов: - **all.min.js**: Минимизированный файл JavaScript, возможно, содержащий объединенные скрипты. - **echarts.min.js**: Минимизированный файл JavaScript, содержащий библиотеку ECharts для построения графиков. - **fade-up.js**: Реализует анимацию постепенного появления элементов с классом `.fade-up` при загрузке страницы. Использует `setTimeout` для задержки анимации каждого элемента. - **features.js**: Управляет отображением таблицы сравнения функций продуктов. Загружает переводы названий функций и подсказок из соответствующего JSON файла. Динамически создает строки таблицы и добавляет эффекты при наведении для отображения подсказок. - **flipbook.js**: Реализует интерактивный компонент "флипбук" и функционал модального окна с деталями продукта. Загружает переводы для деталей продукта и текста кнопок из соответствующего JSON файла. - **lang-detect-redirect.js**: Определяет язык браузера пользователя и перенаправляет на соответствующую языковую версию страницы при первом посещении. - **language-switcher.js**: Добавляет на страницу плавающую кнопку-переключатель языка с выпадающим списком. ## Список используемых функций Ниже приведен список функций и важных переменных, обнаруженных в неминифицированных JavaScript файлах: - **js/fade-up.js**: - Анонимная функция в `document.querySelectorAll('.fade-up').forEach` - Анонимная функция в `setTimeout` - **js/features.js**: - `originalFeaturesData`: Массив объектов с исходными данными функций. - `originalProductsData`: Массив объектов с исходными данными продуктов. - `fetchLanguageData(lang)`: Асинхронная функция для загрузки JSON файла с переводами. - `renderFeatures(data)`: Функция для динамического создания и отображения списка функций с использованием переведенных данных. - `setupHoverEffects(data)`: Функция для настройки эффектов при наведении на строки функций с использованием переведенных подсказок. - Анонимная асинхронная функция в `document.addEventListener('DOMContentLoaded', ...)` - **js/flipbook.js**: - `updatePages()`: Функция для обновления отображения страниц флипбука. - `initProductDetails()`: Функция для инициализации функционала модального окна деталей продукта. - `showProductDetails(pageNum)`: Функция для отображения модального окна с деталями продукта, используя переведенные данные из JSON. - `hideProductDetails()`: Функция для скрытия модального окна с деталями продукта. - `updateButtonTexts(data)`: Функция для обновления текста кнопок "Купить" и "Подробнее" с использованием переведенных данных из JSON. - Анонимная функция в `pages.forEach(...).addEventListener('click', ...)` - Анонимная функция в `pages.forEach(...).addEventListener('mouseenter', ...)` - Анонимная функция в `setTimeout` внутри `mouseenter` обработчика - Анонимная функция в `pages.forEach(...).addEventListener('mouseleave', ...)` - Анонимная функция в `window.addEventListener('resize', ...)` - Анонимная функция в `document.getElementById('productModal').addEventListener('click', ...)` - Анонимная асинхронная функция в `document.addEventListener('DOMContentLoaded', ...)` - **js/lang-detect-redirect.js**: - Анонимная функция в `document.addEventListener('DOMContentLoaded', ...)` - **js/language-switcher.js**: - `supportedLanguages`: Объект, содержащий поддерживаемые языки и их коды. - Анонимная функция в `document.addEventListener('DOMContentLoaded', ...)` - Анонимная функция в `languageIcon.addEventListener('click', ...)` - Анонимная функция в `document.addEventListener('click', ...)` - Анонимная функция в `languageDropdown.querySelectorAll('li').forEach(...).addEventListener('click', ...)` *Примечание: Минифицированные файлы `all.min.js` и `echarts.min.js` также присутствуют в директории `js/`, но их содержимое не анализировалось для составления списка функций.*