Ответы пользователя по тегу JavaScript
  • Получать правильное значение Rem из px которые даем на вход функции, написал функцию но она работает не корректно, что не так?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    что не так?

    По умолчанию font-size у корневого элемента (html в данном случае) не обязан быть равным 13. Так что нужно его явно задать:
    :root {
        font-size: 13px;
    }
    Ответ написан
  • Что является идентификатором усвоения языка?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Если вы можете решать любые задачи, которые перед вами возникают в процессе работы и не задаетесь вопросом "знаю/не знаю" - все хорошо, вы усвоили ваш язык. Возможна переодическая потеря памяти и необходимость загуглить что-то что "знаю, но забыл". Если вы хотите прям какой-то тест в процентах - то knot-it-all будет в самый раз. Бесполезная статистика, но все в одном месте - довольно занятно.
    Ответ написан
    Комментировать
  • Как делают такие вещи?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Алгоритм примерно такой:
    - Берем обычный canvas, на нем что-то пишем или выводим картинку (в данном случае строго 2 цвета).
    - Берем imageData у того, что получилось.
    - Проходим по всем пикселям этой imageDatы с каким-то шагом, делаем объект "частица" с нужными координатами когда цвет соответствует определенному (если писали черным по белому - значит если цвет пикселя черный).
    - Стираем надпись.
    - Проходим по массиву частиц, рисуем небольшой круг (что угодно, но пусть будет круг) на месте с координатами этой частицы.
    - PROFIT.

    По вкусу к частице добавляется параметр "цвет" (лучше полупрозрачный) и "размер". Можно сделать функцию обновления, которая будет менять эти параметры и координаты, requestAnimationFrame нам в помощь. Координаты частицы меняются по определенному закону в каком-то радиусе от ее изначального положения, можно взять параметрическое уравнение любой замкнутой кривой и использовать его для вычисления отклонения частицы от ее изначального положения.
    Ответ написан
    Комментировать
  • В каких случаях использовать ES6 Class?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Нормально ли вообще иметь компоненты в виде классов?

    "Нормальность" - это термин из области психиатрии, обозначающий тот факт, что кто-то другой делает то, что мы на данный момент времени и в данном обществе считаем приемлемым. Были времена, когда люди говорили "мы должны разделять разметку, стили и скрипты и ни в коем случае не должны их смешивать". Это считалось нормальным. Даже относилось к хорошим практикам. А потом появился реакт. И те же люди стали говорить "да давайте все в одном файле фигачить, это же круто, а еще вебпаком можно весь проект со всеми ресурсами в один бандл сжать". И теперь это - норма. Как можно заметить, нормальность немного поменялась.

    не могу найти место применение классов при создании интерфейсов

    Посмотрите на досуге мой велосипед. Он еще далек от совершенства и скорее является полигоном для экспериментов, но там как раз хорошо видно, что получается в коде при использовании классов-компонентов.
    Ответ написан
    Комментировать
  • Как сделать обратную анимацию распада с использования css или javascript (Pixel Dust)?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вот как-то так (кроссбраузерность не проверял, но должно работать IE11+).
    59d5e110e70d2375505477.gif
    По-хорошему стоило бы нарисовать точки в виде SVG-картинки и анимировать ее части, а не div элементы, как я сделал, но общая концепция должна быть понятна. Поведение с опцией hidden можно заменить на :hover у вашей кнопки.
    Ответ написан
    1 комментарий
  • Как реализовать плавный якорь на чистом(Нативном) JavaScript?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Этот функционал находится в стадии черновика и в некоторых браузерах уже есть из коробки. Вероятно вам нужен smooth scroll polyfill. Разумеется никто не мешает в образовательных целях посмотреть его исходники.
    Ответ написан
    1 комментарий
  • Зачем в библиотеке lodash функция map?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Lodash дает возможность использовать большой набор утилит (как стандартных, так и не очень) в едином функциональном стиле. Это чуть ли не главная фишка, за которую его так любят.
    Ответ написан
    Комментировать
  • Какие есть плагины анимации элементов?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Возьмите animate.css и добавляйте нужные классы к элементам. Или, что еще лучше, достаньте из нее только необходимые вам анимации (postcss-animation может это дело автоматизировать) или посмотрите идеи в исходниках и сами их напишите, чтобы не тащить всю библиотеку ради пары десятков строк. Если хотите что-то совсем кастомное и необычное - идите на codepen, смотрите идеи там и адаптируйте под свои нужды. Тут главное не переборщить, все-таки сильно нестандартные или длинные анимации интересны первые пару-тройку раз, потом начинают раздражать.
    Ответ написан
    Комментировать
  • Какую лучше сделать разметку и как запомнить выбор?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Это стандартные радио-кнопки. Сами инпуты скрываются, а label для каждого из них стилизуется необходимым образом - пример.
    Ответ написан
    Комментировать
  • Как не применять html при отключенном JS?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Как не показывать прелоадер если у человека выключен JS?

    Можно посмотреть на вопрос с обратной стороны и показывать ваш прелоадер с помощью JS. Там, где нет JS - не будет и прелоадера.
    Ответ написан
    Комментировать
  • Какую библиотеку для анимации вы используете постоянно?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    На постоянной основе - anime.js или делаю анимации на CSS, иногда использую D3.js.
    Ответ написан
    Комментировать
  • Как запланировать ежедневные изменения файле js (график)?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    как сделать cron, чтобы он вносил изменения в файл js

    Это очень плохая идея, которая создает неявную логику работы фронтенда, ломает его сборку, и из-за которой можно очень крупно влипнуть в перспективе. Если на JS совсем никак нельзя эти точки генерировать - то лучше не в скриптах что-то менять, а сделать отдельный json файл, в котором будут храниться точки и потом его аяксом загружать на клиента. В таком случае вам нужно просто вставлять нужную строку перед последней строкой этого json файла (google->php insert string before last line), это будет очень простой скрипт, а для того, чтобы добавить его в cron вам понадобится (google->cron php script). Ответы на оба вопроса есть по первой ссылке на stackoverflow. Про то, как можно загрузить на клиента можно почитать здесь, там и пример есть и пояснения.
    Ответ написан
    Комментировать
  • Как исправить кучу ошибок цсс в валидаторе?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Как исправить кучу ошибок цсс в валидаторе?


    Тут вопрос не в том, как исправить, а в том, что исправить. Префиксы, как вы понимаете, нам нужны в любом случае. Меняем настройки валидации, чтобы не обращать на них внимание:
    9d365b5f13ea4505a0f5ffbb674078a3.png

    Имеем 9 ошибок с вашего сайта. Из них (с повторениями, -webkit-min-device... не считаем):
    - Property user-select doesn't exist : none - это свойство из черновика CSS4. Все ок.
    - Property touch-action doesn't exist : pan-y - относится к спецификации Pointer Events, а не CSS. Все ок.
    - Value Error : cursor hand is not a cursor value : hand - вот тут ошибочка, cursor: hand не бывает.
    - Value Error : margin-top Unknown dimension 10px\9 - что-то тут не так со значением отступа.

    Последние две ошибки стоит поправить, на остальное можно забить.
    Ответ написан
    1 комментарий
  • Какие есть ресурсы для обогащения знаний по JavaScript?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Интересные задачки, всякие тесты, неожиданные нюансы языка и тд. Короче, всякого рода места на просторах интернета, где можно встретить живое общение, обсуждение и споры, реальные кейсы.

    Почитайте вопросы на тостере. Тут каждый день реальные кейсы, часто интересные задачки, неожиданности, живое общение, обсуждения, споры, троллинг. Вобщем советую.
    Ответ написан
    2 комментария
  • Чего бы сложного сделать на javascript?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Проблема в том, что я никогда не писал большие проекты на несколько сотен тысяч строк, и всё ещё не использовал тесты или написание целой документации под проект. Всё что делал, небольшие библиотеки под тысячу строк.

    Не всегда что-то интересное должно быть большим - например рисовалка аватарок. Маленький скрипт, страшный, но прикольный, людям нравится. Кстати начало ему положил вопрос от xmoonlight , здесь на тостере. В свободное время я еще делаю убийцу бутстрапа (шутка), просто сборник каких-то компонентов и полезных утилит, чтобы по-быстрому клепать простые сайтики да лендинги, правда не знаю, когда его доведу до ума. В такого рода проекте можно и документацию прикрутить и относительно большие объемы кода красиво организовать.
    Ответ написан
    4 комментария
  • Какой порядок обучения веб-верстке вы посоветуете?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    По вашим словам кажется, что вы понятия не имеете о том, какой инструмент для чего нужен. Так что рекомендую следующий план:

    HTML: практика -> Pug или любой другой препроцессор -> понять зачем он нужен -> микроданные -> wai-aria
    CSS: практика -> каждый день выкладывать один сверстанный компонент на CodePen -> всякое разное -> изучить внутренности normalize.css -> использовать autoprefixer -> изучать хорошие практики -> написать свою сетку -> познакомиться с БЭМ, RSCSS -> осознать полезность методологий -> препроцессоры (LESS проще, SASS моднее, есть еще много разных) -> PostCSS -> осознать разницу между пре-процессором и пост-процессором
    JS: ES6+ -> Babel -> понять смысл инструмента -> писать много велосипедов -> много велосипедов -> больше велосипедов богу велосипедов -> паттерны проектирования -> тестирование
    Gulp/Grunt и Webpack/Browserify: осознать разницу -> использовать по мере надобности -> научиться автоматизировать все, что можно автоматизировать
    Git, NPM: без комментариев

    А дальше, когда вы будете владеть тем, что нужно везде, уже встанет вопрос о ваших задачах. Существуют тысячи библиотек и фреймворков, каждый из которых хорошо решает одни задачи и плохо решает другие. Расширяйте кругозор и выбирайте инструменты исходя из задач.

    Есть еще один дельный совет: читайте ответы на тостере и изучайте решения, которые народ предлагает. Разбирайтесь с тем, как они что-то делают. В перспективе сами отвечайте. Метод утенка рулит.

    Ну и умение задавать вопросы тоже лишним не будет.
    Ответ написан
    Комментировать
  • Действительно ли все так очевидно?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    сидели-сидели и вдруг их озарило такое решение

    Такого не бывает. Ни в какой области. Человек не может придумать то, что никогда не видел. Просто вы долго смотрите, впитываете информацию (из разных областей), а потом берете известные кусочки информации и компонуете их каким-то новым образом. Чем большим количеством кусочков вы обладаете, тем больше вероятность того, что у вас в нужный момент окажутся нужные кусочки и вы "угадаете" решение. Задачи, которые не относятся к шаблонным, типичным для вашей повседневной деятельности, решаются именно так, хотя вы можете об этом и не задумываться.

    Наглядный пример

    Наглядный пример из другого вопроса. Генератор аватарок. Ни разу не повседневная задача. В памяти всплыли кусочки, изначально не связанные между собой:
    - Геометрические картинки (картинка из вопроса)
    - Нужен набор параметров для геометрических фигур (школьная геометрия)
    - Какая дана информация? Откуда взять параметры? Видимо имя или email (опыт юзера)
    - Информация может быть неоднородной, есть крайние случаи (вспомнил о тестировании)
    - Из информации можно сделать однородный кусок, пригодный для использования в качестве параметра, с помощю хеша (читал про это, когда пытался администрировать)
    - Рисовать фигуры вроде можно на канвасе (видел в сети примеры)
    - Цветовая схема... (уже делал на c++, давно, но исходники где-то лежат)
    и.т.д.
    Загуглил алгоритмы хеширования (добавил недостающие кусочки информации), взял оттуда идеи и скомпоновал за пару часов. Получилось что-то такое, даже решил через какое-то время на GitHub выложить.

    Некоторые посчитали, что это что-то сверхестественное, я на тот момент где-то пол года фронтендом занимался на постоянной основе (даже не работал еще в этой области). Но, как видите, я ничего не придумывал, никаких озарений не было, просто собрал то, что и так уже где-то видел. И так с любой нестандартной задачей - вспоминаю кусочки, добавляю недостающие и все решается.


    Можно дать лишь один совет: расширяйте кругозор. Читайте про все подряд. Собирайте те самые кусочки информации и в нужный момент сможете быстро собрать их в единое целое.
    Ответ написан
    Комментировать
  • Почему возникает ошибка "Unexpected end of input"?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Взял ваш файл, в котором ошибка, загнал в beautifier, он показал следующее:
    b745471b26cd4e55b5c5463f3702c06c.png
    Иными словами, первый однострочный комментарий сразу вырубает часть кода при превращении его в одну строку. Пользуйтесь нормальной минификацией, при которой удаляются комментарии.
    Ответ написан
    1 комментарий
  • Объявление "var" больше не нужно? let наше все?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Да, теперь рекомендуется использовать let везде, где нельзя поиспользовать const. Это удобно. Но не стоит забывать про Babel, а то старым браузерам плевать на наши новые стандарты.
    Ответ написан
    Комментировать
  • Как освоить функциональное программирование на javascript?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    полноценно изучить все принципы и понять как думать в этом ключе?

    (имхо) Лучше взять какой-нибудь простой лисп (Common Lisp например) и пописать недельку на нем что-нибудь для себя. Без разницы какие книжки брать, насколько они будут старые, не обязательно все запоминать или пытаться написать что-то нереально большое. Главное - попробовать и проникнуться общими подходами к делу, которые вы там увидите. А потом взять свой JS и посмотреть на него свежим взглядом.
    Ответ написан