> Пойдем дальше и заменим тэг на button. Теперь все почти идеально. За исключением того, что этот тэг сложнее всего стилизовать, особенно если используются глобальные стили.
А скажите, какие сложности возникают при стилизации `button`? Если лишь в сбрасывании дэфолтных стилей? Но разве это проблема?
@Urukhayy, сказать что лучше нельзя - оба варианта крутые; а разница лишь в использовании. Указав transition свойства не нужно вызывать анимацию явно - просто меняйте стили элемента и радуетесь. А keyframes анимации нужно явно указывать - мол сейчас стартуй Foo анимацию, но зато можно для элемента довольно сложные анимации создавать, почитайте про keyframes.
В вашем случае, когда у вас есть Н-блоков и поочередно нужно проанимировать например translateX, то используйте transitions + transition-delay для каждого элемента; потом в нужный момент просто меняете transform для всех элементов и и они поочерёдно сместятся.
@doublench21 Потому что потребности в монолитных фрэймворках ни у кого нет. Мир ноды довольно фрагментирован, и хоть в этом есть свои минусы, но при этом возникает более глубокое понимание создаваемого приложения, получаете больше контроля. Вы как бы "жонглируете" модулями и библиотеками в условиях разных окружений браузер-сервер. И тут важно, что бы фреймворк покрывал не просто все эти окружения, а также каждые из них по-отдельности (приложения то разные бывают). А это уже получилось бы что-то непонятное, куда лучше просто брать те инструменты которые нужны для решения определённого ТЗ, вот поэтому и плюс в этих всех разрозненных библиотеках. Вот например, Meteor - чем не фреймворк? А нам не подходит, так как сильно завязан на сервер-клиент архитектуре. Мы идем другим путём , MaskJS - это и фронтэнд и бэкенд, или вместе или по раздельности. Компонентная архитектуру способствует более быстрой компоновки приложения, будь это клиент-сервер или просто phonegap мобильное приложение. У нас ещё очень много других библиотек Atma но совмещать их в один фреймворк хоть и можно, но в этом нет нужды.
var imax = array.length,
i = -1;
while(++i < imax) {}
Здесь мы явно разделяем декларацию переменных и сам цикл - например, мы легко можем сделать дополнительные проверки или что ещё нужно перед началом цикла.
Вместо одной длинной строчки имеем 3 коротких - для чтения более приятно, но это субъективно.
@RubaXa , конечно это спорная тема. Особенно, что касается стилистики. Вам например нравится когда всё строго определено и тем более контролируется какой нибудь утилитой, как jscs. Я же привык работать с разными разработчиками, и нет ничего зазорного, если кто-то пишет однострочный `if` без {}.
Коментарии - согласен, недостаток. Также согласен, что вместо indexOf лучше contains (привычка :)).
Тесты есть, подключу travis.
Если ещё что-то запало на сердце - пишите.
Давайте так: зачем вам это. Какое техническое отличие вам нужно определить? Ведь собственно грань между понятиями "гибридный" ноутбук и планшет сейчас довольно размыто.
Это лямбда функции, но в ес6 зовут их arrow functions. Написал это здесь так для наглядности, уже как бы пора пересаживаться с ES5 на javascript next)
Что бы запустить подобный код в браузере нужен препроцессор, для компилирования, есть много инструментов, но мы например не используем инкрементированное компилирование, а подключаем *.es6 файлы как обычные js, a сервер сам всё компилирует и отдает. Например, поместите этот код в, например globals.es6, создайте test.html файл и подключите globals.es6. Далее нужно немного cli:
Теперь открываем `http://localhost:577/test.html`. Tеперь спокойно можно разрабатывать на es6, и даже не заметите, что браузер его не поддерживает, (пока ещё). Потом для релиза приложение можно будет собрать.
Хорошего кода!
В js варианте используйте `closest`. Но изначальный selector в ответе делает тоже самое! Выбираются все `a`, а лишь потом только фильтруются `:not(.class) > `.
Конечно, скролл будет "деревянный", и здесь есть 2 выхода, или `-webkit-overflow-scrolling: touch` к контейнеру (но работает на старых платформах), или использовать что-то такое: iScroll 5.
Мы делаем так:
layout через `position:absolute` с позиционированием через javascript (подгоняем только высоту основной секции под девайс, которая должна быть "зажата" между хэдером и футером), а для скролла используем iScroll.
Так ведь есть множество фреймворков, которые подобную архитектуру "проталкивают" и начинающему программисту нужно начинать с маленьких частей которые разрабатываются отдельно от приложения. Создал маленький контрол - диалог оверлэй, например - и радуясь идешь дальше. Создал инпут с валидацией, который при неправильных данных вызывает этот диалог с сообщением - и радуясь двигаешься дальше. Бизнес логику также дробить на части и абстракции.
Ну я в свое время так боролся с прокрастинацией, когда было страшно находясь перед огромным приложением, и так набирался опыта.
Почитайте что такое `Promise`. Каждый раз когда когда вызываем функцию с одним и тем же id, то при первом вызове создается в данном случае `Deferred Object` и посылается запрос. Если же `Deferred Object` уже есть в кэше, тогда просто пидписываемся на результат. Извините вчера на скорую руку пример набросал, он был не правельным, сейчас кажется ничего не упустил)
А скажите, какие сложности возникают при стилизации `button`? Если лишь в сбрасывании дэфолтных стилей? Но разве это проблема?