Мобильная связь
Кэшбек 20 %
Вместе выгодно 2.0
Роуминг
USSD запросы
Перейти на Летай со своим номером
Красивые номера
Приложения Таттелеком
ТВ онлайн
Ребенок рядом
Каталог товаров
Товар
Тарифы мобильной связи
Тариф Мобильный «Много минут»
Тарифы интернета
Тариф Интернета «Летай. Оранжевый Профит»
Инструкции
Бланки и документы
Третьи лица
Служба поддержки
Промо Много интернета
Промо GPON
Промо Домофон
Промо Конверген
Оплата услуг
Поиск по сайту
Технические работы
ЧаВо
Офисы продаж
Страница неудачная оплата
Страница успешная оплата
Страница Новостей
Страница Новостей детальная
Бизнес
Главная стр
Мобильная связь
Тарифы Мобильной связи
Тарифы мобильного интернета
Комплекс услуг связи (Единый бизнес)
Мобильная связь
Мобильная связь
Роуминг
Роуминг по России
Виртуальная АТС
Таттелеком Коннект (ЭДокс)
Телефония
Междугородная и международная связь
IP-телефония
SIP-Телефония
SIP-trunk
Цифровые потоки Е1
Сервисы и услуги телефонной связи
Определитель номера (АОН)
Интернет
Интернет для офиса
Интернет Wi-Fi
Интернет по Радиоканалу
Виртуальные сети IP VPN
LoRaWAN
М2М решения для бизнеса
Colocation
Виртуальный сервер
Web хостинг
Регистрация доменов
Облачное видеонаблюдение
Видеоаналитика
Тариф «М2М Бизнес Контроль 2.0»
DDoS-защита
Видеоконференцсвязь
Услуги Ак Барс Банка
Услуги Call – центра
Виртуальный офис-секретарь
SMART Wi-Fi
Поддержка корпоративных клиентов
Интернет для офиса
Страница тарифа
404 страница
ЧаВо Бизнес
Поиск по сайту
Бизнес новости
Бизнес новости - детальная
Бизнес документы
Бизнес технические работы
Бизнес офисы продаж
О компании / партнёрам / акционерам
Таттелеком главная
Таттелеком инвесторам
Годовые отчеты
Квартальная отчетность
Отчетность по МСФО
Эмиссионные документы
Учредительные и внутренние документы
Список аффилированных лиц
Существенные факты
Рейтинги
Cобрания акционеров
Раскрытие информации
Бухгалтерская отчетность
Партнерам
Закупки
Информация для субьектов МСП
Перечень ТРУ для МСП
Нормативные документы
Операторам связи
Дилерам
О компании
Миссия Таттелеком
Достижения Таттелеком
История Таттелеком
Центральное управление
Структурные подразделения
Структурные подразделения - АЛЬМЕТЬЕВСКИЙ ЗУЭС
Пресс центр
Новость пример
Пресса о компании
Контакты для СМИ
Лицензии
Контактная информация
Офисы продаж
Бойлерплейт на основе связки Gulp + Webpack с поддержкой SVG спрайтов и SCSS
- jQuery
- GSAP
- Swiper
- lazysizes
- parsley.js
- day.js
- choices.js
- inputmask
- plyr
- bootstrap-datepicker
- body-scroll-lock
- detect-it
Установить Node JS, затем выполнить команду:
npm installnpm run devnpm run buildnpm run squoosh(Нужно добавить ссылку на репозиторий в package.json)
npm run ghp(Нужно переименовать файл _ftp-settings.json в ftp-settings.json)
npm run ftpВ проекте используются build-in-helpers
Основные используемые фичи шаблонизатора:
Как пользоваться:
- Страницы генерируются на основе шаблонов. Шаблон хранится в папке src\partials\layouts
- Страницы, которые наследуются от шаблона, хранятся в папке pages
- В папке pages есть папка data с json-файлами. В них хранятся данные для страниц. Эти файлы принадлежат одноименным страницам, а данные в них сразу доступны для использования (попадают в контекст). Эти файлы создаются вручную
- Какие-то повторяющиеся куски разметки можно выносить в отдельные файлы - partials. Они хранятся в одноименной папке и вызываются в нужном месте
- Есть какие-то плагины из коробки, смотри внимательно
- Есть jQuery, GSAP, Swiper и пр.
- Основной файл - main.js, находится в папке js
- Есть файл src\assets\backend\backend.js, в нем прописываются, например, обработчики сабмита формы (для бекендера на PHP)
- Для пользовательских функций создал отдельную папку src\js\custom
- Объекты можно засунуть в объект window, чтобы получить к ним доступ из файла backend.js
- SCSS
- Легко самому разобраться в структуре
- Все файлы стилей импортятся в styles.scss вручную
- Изображения перед заливкой на гитхаб лучше сразу оптимизировать и переводить в формат webp (Squoosh)
- Иконки лучше оптимизировать через сервис SVG.OMG
- Все svg, помещенные в папку src\img\icons сборщик автоматически собирает в инлайновый спрайт, который доступен на любой странице.
Задать стили контейнеру для его дочерних элементов:
- Заголовки
h1, h2, h3, h4, h5, h6 - Абзацы
p - Списки
ul, ol, li, и лучше для тегаolсохранить вид нумерованного списка. Можно задать свои стили для нумерации через CSS-counter. - Изображения, иконки
max-width: 100%; height: auto; - Ссылки
a - Жирное выделение
b - Таблицы по желанию
Вообще есть идея: любым текстовым тегам (<p>, <h3>, <a>, <ul>, <ol>, <li> - если внутри текст, <span> и т.д.) и иконкам <svg> и изображениям <img> не задавать классы. Всегда наследоваться от родительского контейнера.
Любой текстовый контент лучше оборачивать в div. Так как может получиться ситуация, когда клиент засунет параграф внутрь существующего параграфа - текстового контейнера.
3. Изображения лучше помещать в обёртку, используя CSS-trick с padding-bottom и абсолютным позиционированием.
4. Сложные grid-сетки в идеале автоматизировать. Элементы должны вставать на свои ячейки без дополнительных mod-классов.
5. Учесть отсутствие необязательных атрибутов карточки (теги, подписи и т.д.). Их отсутствие не должно ломать верстку. Например, если не показывать подзаголовок, то у заголовка не должен оставаться margin-bottom.
6. Уведомление об успешной отправке формы как минимум. В идеале создать классы для блокировки кнопки после клика (чтобы случайно не отправить 2 формы подряд). UX!
Можно еще reCAPTCHA прифигачить на сабмит
8. JS — сделать автоматическую инициализацию различных слайдеров, выпадающих меню, селектов и т.п. Чтобы бекендер мог, например, добавить еще один селект в форму.
9. Модалки. Модалки в идеале должны инициализироваться автоматически. Например, открываться при клике на ссылку с id модалки. Вот готовое решение.
До сих пор не придумал нормального решения для открытия модалки на успешную / неуспешную отправку формы. Один из вариантов: дать бекендеру возможность самому открывать модалку. Это можно сделать, поместив объект модалки внутрь window.
Ещё вариант: пусть бекендер пишет обработчик (имя функции заранее известно, например, feedbackFormHandler) на success формы прямо внутри тега <script>. Эту функцию подхватывает фронт и выполняет. Если функция не задана, то ничего не происходит. Можно еще в эту функцию передать значения всех инпутов, бекендеру иногда они пригождаются.