Skip to content

This website replaces traditional up-and-down scrolling with depth-based navigation, creating a unique and engaging user experience.

Notifications You must be signed in to change notification settings

NotACat1/Create-3D-scroll-site

Repository files navigation

3D Scroll

main

О проекте

3D Scroll - Этот веб-сайт предлагает необычное решение для навигации, заменяя стандартный скролл вверх-вниз на движение вглубь страницы. Этот инновационный подход создает уникальный и интересный опыт взаимодействия с веб-сайтом, позволяя пользователям исследовать контент, двигаясь вглубь страницы, вместо традиционного вертикального скролла.

Идея взята с видеоурока: https://youtu.be/zKjYfxei5vc.

Реализованный функционал

1. Скролл в глубину

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

arrFrames.forEach((frame, index) => {
  zVals.push(index * spaceZ);
  frame.setAttribute('style', `transform: translateZ(${zVals[index]}px)`);
});

body.setAttribute('style', `height: ${Math.abs(spaceZ) * (arrFrames.length)}px`);

window.onscroll = function () {
  const top = document.documentElement.scrollTop;
	const delta = lastPos - top;
	lastPos = top;
  arrFrames.forEach((frame, index) => {
    zVals[index] -= delta;
    frame.setAttribute('style', `transform: translateZ(${zVals[index]}px); opacity: ${zVals[index] < Math.abs(spaceZ) / 2? 1: 0}`);
  });
};

2. Аудиосопровождение

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

btnAudio.addEventListener('click', (evt) => {
  btnAudio.classList.toggle(selectors.soundbutton.paused);
	audioFrame.paused? audioFrame.play(): audioFrame.pause();
});

3. Автоматическое включение и выключение аудио

Если пользователь покинет сайт, не закрывая вкладку, то аудио автоматически остановится, и оно будет включаться лишь по возвращению пользователя. Это обеспечивает более комфортное взаимодействие, позволяя пользователям контролировать аудио и предотвращая его проигрывание, когда они временно покидают сайт.

window.onfocus = function () {
	btnAudio.classList.contains(selectors.soundbutton.paused)? audioFrame.pause(): audioFrame.play();
};

window.onblur = function () {
	audioFrame.pause();
};

Используемые технологии

1. Normalize.css

Normalize.css предоставляет браузерам возможность более последовательного отображения всех элементов согласно современным стандартам. Он акцентируется на нормализации только тех стилей, которые действительно требуют коррекции.

/* index.css */
@import url(../vendor/normalize.css);

2. Webpack

Webpack - это инструмент с открытым исходным кодом для сборки веб-приложений. Он позволяет объединять различные файлы, такие как HTML, CSS, JavaScript, изображения, в единый пакет для оптимизированной доставки на веб-сервер. Webpack также поддерживает использование различных загрузчиков и плагинов, что облегчает процесс разработки, минимизации и управления зависимостями.

Настройки Webpack:

// webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  entry: {
    main: './src/pages/index.js'
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js',
    publicPath: '',
  },
  mode: 'development',
  devServer: {
    static: path.resolve(__dirname, './dist'),
    open: true,
    compress: true,
    port: 8080
  },
  module: {
    rules: [{
        test: /\.js$/,
        use: 'babel-loader',
        exclude: '/node_modules/'
      },
      {
        test: /\.(png|svg|jpg|jpeg|gif)$/,
        type: 'asset/resource',
        generator: {
            filename: 'images/[name].[hash][ext]',
          }
      },
    {
      test: /\.(woff|woff2|eot|ttf|otf)$/i,
      type: 'asset/resource',
      generator: {
            filename: 'fonts/[name].[hash][ext]',
        }
      },
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, {
            loader: 'css-loader',
            options: {
              importLoaders: 1
            }
          },
          'postcss-loader'
        ]
      },
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html'
    }),
    new CleanWebpackPlugin(),
    new MiniCssExtractPlugin(),

  ]
}

2.1 Babel

Babel - это инструмент для транспиляции кода на JavaScript. Он позволяет разработчикам писать код, используя современные функции языка, которые могут быть не поддержаны всеми браузерами. Babel преобразует этот код в совместимый с более старыми версиями браузеров, обеспечивая кросс-браузерную поддержку и совместимость.

Настройки Babel:

// babel.config.js
const presets = [
  ['@babel/preset-env', {
    targets: {
      edge: '17',
      ie: '11',
      firefox: '50',
      chrome: '64',
      safari: '11.1'
    },
    useBuiltIns: "entry"
  }]
];
module.exports = { presets };

2.2 PostCSS

PostCSS - это инструмент для обработки и трансформации кода CSS. Он позволяет разработчикам применять различные плагины к CSS коду, автоматизируя задачи, такие как автопрефиксинг, оптимизация, генерация переменных и многое другое. PostCSS гибкий и настраиваемый, что позволяет адаптировать его под конкретные потребности проекта.

Настройки PostCSS:

// postcss.config.js
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
module.exports = {
  plugins: [
    autoprefixer,
    cssnano({ preset: 'default' })
  ]
};

About

This website replaces traditional up-and-down scrolling with depth-based navigation, creating a unique and engaging user experience.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published