GithubHelp home page GithubHelp logo

nicothin / nth-start-project Goto Github PK

View Code? Open in Web Editor NEW
621.0 56.0 215.0 7.02 MB

Startkit for HTML / CSS / JS pages layout.

Home Page: https://nicothin.pro/NTH-start-project/blocks-demo.html

License: Do What The F*ck You Want To Public License

JavaScript 20.05% Pug 48.93% SCSS 31.02%
starter-kit scss css bem postcss gulp html starter-project starter starterkit

nth-start-project's People

Contributors

adm1t avatar antig86 avatar dependabot[bot] avatar dojdev avatar inerv avatar nicothin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nth-start-project's Issues

Динамический alert

Добрый день.
Как сделать, чтобы работала кнопка закрытия в alert, который формируется таким способом:
$("#msg").html('<div class="alert alert--danger"><button class="alert__close" aria-label="Close">×</button><p>сообщение</p></div>'); ?

ES6 и ошибка сборки/ минификации JS

Может быть добавить что-то вроде:

.pipe(gulpIf(!isDev, uglify().on('error', function(e){console.log(e);})))

В сборку попал JS файл с ES6, и не понятно было поначалу из-за чего рушится сборка и минификация JS.

Добавить валидацию форм

Вдохновлено: https://www.youtube.com/watch?v=9G8CSNgCxE8&index=9&list=WL

  • Добавить отображение ошибочного заполнения на основании:
input:invalid:not(:focus):not(:placeholder-shown) {...}
  • Убрать отдельные файлы со стилизацией ошибочного состояния.
  • Добавить в разметке образцы pattern

Увы, это без поддержки IE и Edge. Найти и внедрить нативный JS для проверки.

Зависает экран при вызове модального окна

Здравствуйте Николай!
Спасибо большое за данный шаблон, во многом он мне облегчил мою работу.
Я нашел "баг", при вызове модального окна, экран зависает и пропадает вертикальный скролл. Подскажите пожалуйста, как можно исправить данный "баг"?

Gulp version

Приветствую Николай.

Если мне память не изменяет, Ваш шаблон "вертелся" на 4 Gulp, из каких соображение откатились на 3.9.1

Вложения в стилевых файлах

Добавить для всех имеющихся блоков и в файл создания блока:

.blockName {

  $block-name:                &;
  // #{$block-name}__element {} для вложений

}

Max width

Хорошо бы писать через min width
https://cl.ly/1r1H1r0R0b33
@media (max-width: ($menu-desktop-width - 1))

А еще можно использовать миксины
типа таких

@mixin for-phone-only {
    @media (max-width: $phone-to) {
        @content;
    }
}
@mixin for-phone-up {
    @media (min-width: $phone-from) {
        @content;
    }
}
@mixin for-tablet-portrait-up {
    @media (min-width: $tablet-portrait) {
        @content;
    }
}
@mixin for-tablet-landscape-up {
    @media (min-width: $tablet-landscape) {
        @content;
    }
}
@mixin for-desktop-up {
    @media (min-width: $desktop) {
        @content;
    }
}

Их вызов https://cl.ly/1P0E2Y361y0c. Улучшает восприятие кода.

Придумать какой-то механизм быстрого добавления JS-инструментов

Есть много хороших инструментов на чистом JS. Хочется иметь возможность быстро добавлять их в проект.

https://github.com/nosir/cleave.js — форматирование текста в инпуте
http://leaverou.github.io/stretchy/ — авторесайз полей ввода
https://github.com/jackmoore/autosize — авторесайз текстареи
https://github.com/bevacqua/dragula — драг-н-дроп
https://github.com/bevacqua/horsey — автокомплит
https://github.com/maxwellito/vivus — поочередная отрисовка SVG path
https://github.com/dimsemenov/photoswipe — фотовьювер
https://github.com/oncode/handorgel — аккордеон
https://github.com/Prinzhorn/skrollr — параллакс, реакция на скролл

подсветка синтаксиса
https://github.com/isagalaev/highlight.js
https://github.com/PrismJS/prism
https://github.com/syntaxhighlighter/syntaxhighlighter

Разобраться с модальными окнами (паддинг на body)

Прототипом модальных окос служит 3й БС, там при открытии на body вешается инлайн стиль с внутр. отступом, идентичным ширине скролла.
Чтобы он был, нужны стили

.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}

Тестировать с gulp 4-й версии

Ранее был странный глюк на винде: по ходу работы прогрессивно увеличивалось время, затрачиваемое на компиляцию стилей. Если при старте была пара секунд, то минут через 10 работы становилось уже в районе 6 и далее время увеличивалось при несущественном усложнении кодовой базы.

Добавить Pug

  • Добавить компиляцию и слежение
  • Добавить шаблон и файл для импортов примесей
  • Добавить в парсинг блоков генератор для src/pug/mixins.pug
  • Добавить в генератор файлов блоков создание .pug файла
  • Добавить для всех блоков pug-примеси с подходящими API и собрать библиотеку компонентов с pug
  • Добавить на прекоммит-хук pug linter
  • Переписать README репозитория

Время сборки стилей

Windows 10 64x.
node 9.5.0
npm 5.6.0

Сборка стилей идёт ~15-30с.
Если добавить ещё с десяток блоков = стилей, может затянуться на пару минут.

Это в чистом виде, т.е. скачиваю проект, делаю npm i и пробую.
После обновления packages тоже самое.

Пробовал ещё в Виндовом bash, тоже самое.
sdd\ hdd тоже ситуации не меняло.

Вопрос скорее к тем кто пользуется/ сталкивался)
Виндовая проблема или может дело в чём-то другом?

Как подключить css-фреймворк (Bootstrap/Foundation)

А можно ли добавить целый фреймворк?)
Например, foundation, bootstrap тот же.

Интересно именно добавление scss.
Пробовал добавить
"../../node_modules/foundation-sites/scss/foundation.scss"
но безрезультатно, но и другие вариации пробовал.

Или не всё так просто?)

Т.е. чтобы именно все veriables (настройки) были от foundation.

Требования к системе

Пожелания и требования к системе для комфортной работы

БЭМ-блоки

  • Каждый блок в своей папке
  • Папка для картинок блока
  • Отдельные файлы (необязательные) для Элементов и Модификаторов
  • Файлы с описанием зависимостей блоков (?)
  • В сборку попадут только те Блоки, Элементы и Модификаторы, которые используются на странице (если Э и М прописаны в файле стилизации Б, то они попадут безусловно)

Разметка

  • обрабатывать html и bem-xjst
  • html обрабатывать file-include-ом

Стили

Прочее

  • SCSS и переменные блока в стилизационном файле блока c !default
  • Глобальные переменные
  • Отсутствие глобальных стилей (для общих стилей — блок page)
  • Легкое внедрение фреймворков
  • Легкое добавление сторонних JS- и CSS-файлов, шрифтов
  • Оптимизация картинок только вручную (сообщения в консоль при сборке)

Did you forget to signal async completion?

[15:49:33] Размер style.min.css 395 kB
[15:49:33] Finished 'style' after 7.02 s
[15:49:33] The following tasks did not complete: build, <parallel>, style:single
[15:49:33] Did you forget to signal async completion?
npm ERR! code ELIFECYCLE

Windows 10.
Gulp 4.0,
node 9.5.0

Бывала ли такая ошибка?
Обрывается после сборки стилей я так понимаю.

Кеш npm чистил, сам gulp удалял/ устанавливал.

Как добавлять плагины jQuery

Здравствуйте!

Во-первых, спасибо за этот репозиторий, я многое из него для себя почерпнул. Но у меня остался нерешенным вопрос: каким образом добавляются плагины JQuery в ваш проект?

Допустим нужно внедрить lightbox-плагин для картинок. В роли js-хука используется элемент “section__image-link”. У плагина помимо js-файла есть свои стили и иконки. Первое что приходит в голову при использовании файловой структуры БЭМ (насколько я ее пока понимаю) — сделать все ресурсы плагина частью блока и разместить их в его папке, при этом «грязно» смешав стили блока со стилями плагина.

Так делать можно или у Вас какой-то более удобный вариант? Читал по этой теме много материала, но не нашел хороших примеров...

TODO: Баги, исправления, улучшения

  • В листинг кода текстовых полей вынести самый частый вариант для копипасты
  • Перенести примесь фокуса формы в файл миксинов формы
  • Убрать модификаторы размера
  • Выпадающие элементы: решить проблему клика в выпадающем блоке (происходит закрытие блока)
  • Перетащить стилизацию таблиц в БЭМ-блок таблиц (как можно сильне отвязаться от глобальных стилей)
  • Перетащить стилизацию элементов форм в соответствующие БЭМ-блоки (как можно сильне отвязаться от глобальных стилей)
  • Разнести стилизацию блоков и модификаторов в разные стилевые файлы.

Как можно скомпилировать для работы отдельно блоки ?

Николай, спасибо за отличный темплейт, всё доступно описано и удобно в использовании. Подскажите пожалуйста технически, как можно дополнительно организовать команду для сборки не привычным способом (img, js, css, страницы), а, скажем, чтобы скомпилировать перечень блоков в какую-нибудь отдельную папку buildBlocks (компонентно для программиста). Чтобы переносились блоки со всем содержимым, скомпилированным css и, возможно, подключенным js ? Наверное, всё можно сделать обычным способом, но может вы что-то подскажете

Компиляция css в произвольном порядке.

Добрый день. Есть проблема, что файл стилей компилирует медиа запросы в разном порядке. Запрос на 768px может находится ниже чем запрос на 480px, приходится перебивать стили каскадом. Не подскажете как решить данную проблему.

01
02
03

Обработка изображений

При попытке обработки изображений выдает ошибку:
folder=/src/blocks/logo/img npm start img:opt
"folder" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Операционная система - Windows 10
Запускаю из корня проекта.
Что нужно покрутить?

Как правильно организовать сборку целой страницы?

Добрый день, Николай.
Недавно начал использовать Вашу прекрасную работу - NTH-start-project. В процессе работы возникли несколько вопросов по правильной организации кода, не могли бы Вы прояснить некоторые моменты?

Как организованы блоки с компонентами вопросов не вызывает. Но как дела обстоят с цельной страницей пока не понятно.

К примеру создан в корне src файл landing.html. Заинклудил хедер, футер, нужные компоненты. А вот что делать с секциями не понятно (к примеру about-us, tema и тд):

  • просто писать в landing.html разметку, вставляя где нужно инклудами компоненты можно. Тогда не ясно, где писать стили к этим секциями и добавлять графику + js.
  • либо делать под каждую секцию в blocks/about-us и там писать стили + img + js, но тогда blocks превратится в полную кашу.
  • либо в blocks создать папку landing и в нем уже делать разбиение на отдельные html составляющие + img + css + js. Но последующие страницы хоть и будут одной папке (blocks) но будут отсортированы по алфавиту, что тоже не предает структуры, плюс внутри landing будет очень много файлов, что тоже не круто.

Не могли бы прояснить данный момент, потому что портить красивый стартовый проект уродливыми решениями не хочется.

field-text block

<label class="field-text">
  <div class="field-text__name">Любое поле, выглядящее как текстовое</div>
  <div class="field-text__input-wrap">
    <input class="field-text__input" type="text" placeholder="input[type=text]">
    <div class="field-text__help-text">Обёртка — <code>label</code>. Можно сделать обёртку <code>div</code>, но тогда, возможно, захочется элемент <code>.field-text__name</code> делать <code>label</code> и связывать его с полем по <code>id</code> поля.</div>
  </div>
</label>

Ругается валидатор. Блочный элемент внутри строчного.

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.