Diffins: так это ж обычная 12-колоночная сетка, только на препроцессорах + плагин для объединения media-запросов. Я-то думал... А уж говорить, что такая сетка может быть лучше нативных CSS grids, поведение которых возможно имитировать только JS-ом, вообще смешно.
"Замыкание это как окаменелость динозавра - снимок момента времени, сохранившегося на миллионы лет. Вы всё ещё можете получить информацию о динозавре из его окаменелости, хотя самого динозавра не существует уже миллионы лет."
Куки/cookie:
"Представим, что я хожу в одну и ту же пекарню каждый день и покупаю у пекаря печенье. Первое, что он спрашивает у меня, это - «Какие печеньки вы хотите?». Спустя несколько дней, пекарь может уже заранее знать о моих предпочтениях и просто спросить - «Вам как обычно?». Запомнив мой выбор (сохранив в памяти), он может переиспользовать ту же функцию, что и вчера, чтобы дать мне нужные печеньки, не повторяя вопрос."
Sanes: А ну не нукай посторонним. Зачем ты уходишь в сторону, когда говорят о кривом отображении даже в самых популярных браузерах? Или по-твоему это нормально, что в Chrome и Opera точки не по центру, а в IE и Firefox эти стили вообще не применяются, потому что спецификация не определяет поведение псевдоэлементов для замещаемых элементов (то есть их никак нельзя применять в деле, особенно в фреймворке)?
Раз уж советуешь подобное, объясни, как ты "не придумываешь велосипеды", перезаписывая компоненты фреймворка, чтобы они работали во всех браузерах?
Sanes: Не знаю какой имбицил писал этот фреймворк, но эти радио-кнопки ужасны. Синие точки заданы через ::before к input, хотя замещаемые элементы (input, img, object, video и т.д.) согласно спецификации не поддерживают их. Поэтому в хроме видны синие точки, а в файрфокс их нет, только стандартные радио-кнопки.
Более того, размеры кнопки 13x13 пикселей, а точки 8x8, то есть отступы должны быть по 2.5 пикселя, из-за чего её невозможно выровнять посередине.
С таким подходом лучше вообще фреймворки не делать.
Про способы достоверно узнать тип переменной я в курсе, но нигде не могу найти, чтобы кто-либо проверял аргументы в каждой функции, обычно максимум Typescript.
Как писал выше, очень удобный HTML поиск есть в Microsoft Expression Web, но это WYSIWYG и при том крайне медленный и лагающий (надолго подвисает даже при открытии файлов). Но зато там есть удобные правила для поиска по HTML - можно выбирать нужные теги, атрибуты, классы и т.д.
Это понятно, что есть препроцессоры, шаблонизаторы и прочее. Но меня интересует задача, когда уже есть несколько десятков .html файлов и во всех нужно отредактировать какой-то html элемент. Поиск-поиском, но вопрос в том, как удобно выцепить нужные элементы.
div class="myclass" div /div /div
В приведённом случае регуляркой выцепится строка только до первого /div
Пока единственное что нашёл - поиск по HTML правилам в Microsoft Expression Web, но программа дико лагает и хотелось бы всё-таки нечто для простого редактора типа Sublime.
Сергей: Веб-компоненты - формирующийся стандарт, а БЭМ лишь одно из временных решений, которое спустя годы развития CSS исчезнет за ненадобностью.
Я согласен, что БЭМ действительно избыточен, для маленьких и средних систем более подходящей будет любая другая методология. Лично я использую rscss.io + разбивку по папкам от smacss.com + называю блоки с заглавной буквы, так проще их выделить в разметке.
Независимость элементов блока в rscss вместо именования block_element определяется с помощью жесткой структуры как .block > .element.
1) shit() вызывает функцию, поэтому вместо вызова функции shit() подставляется результат её вызова - то, что находится после return, то есть анонимная функция function(){alert('b')}. Присваивание здесь не при чем, в любом месте это вызвало бы вызов функции. Чтобы работать с самой функцией, как со значением, можно просто передавать саму переменную: var x = shit;
2) Вызывается дочерняя, потому что именно она присвоилась в переменную var x. Почему - я написал выше.
3) Каждая функция при создании получает скрытое свойство [[Scope]], которое ссылается на лексическое окружение, в котором была создана. А лексическое окружение это скрытый объект функции LexicalEnvironment, хранящий в себе все переменные внутри самой функции. Он создаётся при запуске функции.
Замыкание в JS это способность видеть внешний контекст выполнения - внешние переменные. С помощью замыкания функции в JS запоминают значение нужных внешних переменных, причём у каждой функции своя копия, что позволяет делать всякие функции-счетчики, как в вопросе, причем много разных из одной функции.
Игорь: Просто задавай ширину контейнеров в относительных к вьюпорту величинах (проценты (чаще всего) / flexbox (набирает популярность) / vw, vmin (не всегда подходит) и изменяй структуру с помощью media-запросов и обычного поведения элементов (flexbox/inline-block/float) , когда каким-либо фиксированным по размерам элементам будет не хватать ширины (при уменьшении), либо свободной ширины будет слишком много (при увеличении экрана) .
Павел Волынцев: ознакомиться со всем актуальным сбродом во фронтэнд. Многие новички даже про препроцессоры и менеджеры задач не знают, хотя это сейчас в тренде.