16 KiB
16 KiB
Описание проекта и его структура
Данный проект представляет собой веб-страницу, демонстрирующую возможности продукта 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 (например, в теге<img>
или как фон в CSS). - JavaScript файлы
features.js
иflipbook.js
загружают переводимый контент из JSON файлов, расположенных в директорияхlang/<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/
, но их содержимое не анализировалось для составления списка функций.