Giter Club home page Giter Club logo

smart-home's Introduction

Task-2

Верстка сайта.

Для запуска можно просто открыть файл index.html в папке public

Адаптивность выполнена следующим образом:

  • При ширине меньше 600px - мобильная версия сайта;
  • При ширине меньше 900px в режиме landscape - мобильная повернутая версия сайта;
  • При ширине 600px < ширина < 900px в режиме portrait - версия для планшетов;
  • При ширине больше 900px - версия для десктопа;
  • При ширине больше 1400px - небольшие изменения больших дисплеев;

Использованные технологии

  1. Для сборки использовал gulp. Собирал только css с автопрефиксером и минификатором в единый бандл. Минификатор картинок не использовал, так как они в основном svg и в gulp минификаторах много уязвимостей. Для js тоже не использовал, т.к. старался не делать его слишком много.

  2. JS библиотеки

    • Perfect Scrollbar. Так как сайт предназначен преимущественно для тач девайсов, я решил использовать нативные технологии скролла. Для их кросс-браузерной кастомизации и выбрал данную библиотеку. *Я её использую для дисплеев >900px, т.к. в мобильных браузерах нативный скролл выглядит нормально.
    • Screenfull.js Эта библиотека частично решает проблему на мобильных браузерах. В макете для телефонов используется вертикальный слайдер, но из-за особенностей работы мобильных браузеров при его движении может автоматически включаться полноэкранный режим. Я при открытии модалки этой библиотекой включаю сразу fullscreen. *Но есть проблема плохо в сафари, по крайней мере у меня нет возможности проверить в каких версиях и как он работает.

План для нереализованных фич:

  1. Блок с сценариями.

Блоки заполняются сверху вниз построчно и перетекания из одного в другой блок в нативном css нет. При загрузке сайта определять размеры дисплея, возможно мы будем грузить карточки по ajax и сетка будет построенна заранее. Определив размеры и зная что блок минимум 200px, считаем в js сколько их влазит и если они переполняют этот блок создаем еще один заполняем его оставшимися блоками и вешаем обработчики на кнопки позволяя листать эти самые блоки с избранными сценариями.

  1. Крутилка температуры (копать в сторону SVG). Тут понадобится немного аналитической геометрии.

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

x = R * cos(fi) => cos(fi) = x/R => fi = arccos(x/R)

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

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

smart-home's People

Contributors

artemloiko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.