Ответы пользователя по тегу JavaScript
  • При помощи чего сделаны такие эффекты?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    при помощи каких библиотек/технологий

    Технологии - в основном canvas, webgl, иногда немного svg. Библиотеки - любые связанные с перечисленными технологиями и упрощающие работу с ними (на ваш вкус, иногда можно и вообще без них обойтись).

    Примеры снега есть вот тут. Вот этот довольно симпатичный. Классный дождик есть там же. Примеры огня найдете по аналогии.

    Главное здесь - помнить о производительности. Можно сделать суперреалистичный эффект и намертво повесить браузер, а можно сделать что-то более простое, декоративное, понятное больше на уровне образов, но при этом не тормозящее и понятное коллегам (нужно обговаривать с дизайнером).
    Ответ написан
    Комментировать
  • Можете терминологию в parceljs?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Терминология не относится именно к этому инструменту, она универсальная. Если пытаться как-то объяснить ее своими словами, то:
    • Asset - актив, полезная вещь (в нашем контексте - файл), которую мы используем для чего-либо. Например используете иконку на странице - она есть ассет. То же самое относится к скриптам, файлам со стилями и.т.д.
    • Bundle - связка, пучок; набор вещей, объединенных в одну кучу. В нашем контексте это набор ассетов (отдельных полезных файлов), собранных хитрым образом в один большой файл.
    Ответ написан
    2 комментария
  • Почему не работает наследование методов?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    function Figure() {
        THREE.Group.call(this);
        this.add('TEST');
    }
    
    Figure.prototype = Object.create(THREE.Group.prototype); // <-- вы забыли вот это
    
    let f = new Figure();
    Ответ написан
  • Как реализовать поворот треугольника за курсором мыши?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    как я понимаю это работа с canvas

    Совсем не обязательно. Треугольник можно вставить как картинку (формат SVG будет хорошим выбором), расположить его абсолютным/фиксированным позиционированием в нужном месте, а дальше к нему применять CSS-трансформацию "rotate". Пример того, как следить за мышкой и применять трансформации есть вот тут.
    Ответ написан
    Комментировать
  • Зачем нужен nunjucks, как он может помочь в фронтенд верстке?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Как он может помочь в фронтенд верстке? Не могу понять.

    В целом nunjucks своим синтаксисом напоминает handlebars, а еще есть pug (бывший jade) - схожий инструмент (по совместительству препроцессор), который вам точно стоит посмотреть.

    Все эти инструменты (их вообще много разных), которые можно объеденить словом "шаблонизаторы", фронтендеру нужны в разных ситуациях:
    • Переиспользование разметки при верстке (один раз компонент сверстали, десять раз импортировали)
    • Удобное отображение загруженных с сервера данных на странице (в одностраничниках с большим количеством данных - просто маст хев)
    • В некоторых случаях ускорение верстки, да и выглядит она более красиво и структурированно
    • Создание шаблонов под автогенерируемую документацию и тесты

    Можно придумать и другие варианты использования.
    Ответ написан
    Комментировать
  • Как использовать gremlin, monkey testing?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    актуально ли использовать gremlin.js

    Ну инструмент не очень популярный - всего 636 загрузок с NPM за последний месяц. Давно не обновлялся, но свою задачу по всей видимости продолжает решать, так что если вам он нужен - используйте.

    Если б он был такой крутой, то его б все использовали

    Используют. Не так много, но используют. Просто инструмент очень узкоспециализированный, его не везде имеет смысл применять. Я на свой сайт не стал бы этот инструмент тащить - две с половиной кнопки-ссылки, ну зачем там такое тестирование? Ну и не забывайте, при разработке большинства (подавляющего, к сожалению) сайтов слова "тестирование интерфейсов", и тем более "автоматизированное" звучат как что-то страшное-страшное и не дающее прибыли здесь и сейчас. Так что многие забивают.
    Ответ написан
    2 комментария
  • Какой стандарт EcmaScript стоит учить сейчас?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Используйте последнюю доступную версию + Babel. С приходом ES6 (и небольшими дополнениями в виде следующих версий) язык сильно поменялся в положительную сторону, так что будет странно отказываться от удобств.
    Ответ написан
    1 комментарий
  • Что за ошибку выдаёт JS?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Скорее всего ваш скрипт с атрибутом async начинает выполняться раньше, чем загрузится jQuery. Посмотрите этот вопрос на SO - там есть возможные решения проблемы.
    Ответ написан
    Комментировать
  • Как реализовать такую анимацию оленя?

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

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    При фокусе на инпут используем transform: scale, чтобы увеличить картинку. Зрачков на картинке у товарищей нет (или можно закрывать белой точкой место, где они должны быть изначально), они наложены отдельными абсолютно спозиционированными элементами. При изменении состояния инпута смотрим сколько там символов и добавляем transform translate для зрачков. Можно такое и с координатами мышки делать (пример), тоже забавно получается.

    И может есть какие то (?каталоги?) где можно найти подобного формата различные интересные (?фишки?) ?

    CodePen, там много всего есть. Следите за разделом picked pens, подписывайтесь на интересных людей и будет вам каждый день порция интересных фишек.
    Ответ написан
  • Как сделать такой же логотип?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    И как вообще это реализовать?

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

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Вариант 1:
    У разработчика есть то же ПО, что и у вас. Он может открыть ваш проект и не по описанию и гифке все делать, а по вашим исходникам.

    Вариант 2:
    У разработчика нет возможности открыть ваш проект. Такое вполне может случиться. Например ваш Principle не очень дружит с линуксом. Или еще что-то не так. В такой ситуации желательно иметь:
    • Гифку
    • Гифку x0.1, а то иногда все так быстро движется, что ничего не понятно
    • Список функций, которые вы используете (кривые безье сложно угадывать на глазок, а easing - понятие ооочень растяжимое)
    • Тайминги, по крайней мере продолжительность основных движений в анимации (в небольших взаимодействиях с элементами разница в 50ms может "чувствоваться", но "увидеть" ее сложно)
    • Если есть хитрые соотношения размеров - было бы хорошо иметь описание логики, а то иногда не понятно, идет движение "на 100px" или "на треть высоты элемента"


    Если есть обратная связь с вами, как дизайнером (можно что-то уточнить в процессе), то этого вполне достаточно.

    результат работы фронтенда не устраивает

    Не забывайте о том, что у очень многих (как это ни странно) фронтендеров чувство вкуса отсутствует от слова совсем. Так что для них создание чего-то красивого и нестандартного - это почти пытка. Правда что в такой ситуации делать - не очень представляю.
    Ответ написан
    3 комментария
  • JavaScript: из-за чего возникает ошибка: Uncaught TypeError: Cannot read property '1' of null?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Ошибка возникает из-за того, что переменная matches равна null. Вероятнее всего какая-то из ссылок имеет кривой href. Соответственно match(...) не находит совпадений и возвращает null. Перед тем, как использовать результат работы этого метода, проверяйте что он вернул.
    Ответ написан
    Комментировать
  • Есть ли плавный скролл между якорями на чистом JS?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Для современных браузеров ничего придумывать не нужно, все и так уже есть.
    element.scrollIntoView({ behavior: 'smooth' })
    Для остальных можно временно заполифиллить.
    Ответ написан
    1 комментарий
  • В чем отличие объявления этих двух функций?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Как давно в JS можно не писать function в первом примере?

    Ключевое слово function можно опускать в определенных ситуациях:
    let bar = {
        test: 'A',
        foo() {
            console.log(this.test);
        }
    }
    
    bar.foo(); // A
    
    class Bar {
        constructor() {
            this.test = 'B';
        }
        foo() {
            console.log(this.test);
        }
    }
    
    (new Bar()).foo(); // B

    Разумеется для старых браузеров нужен Babel. В остальных случаях запись вида test(){} вызовет ошибку Uncaught SyntaxError: Unexpected token.
    Ответ написан
    Комментировать
  • Как удалить публичный пакет npm?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    С помощью unpublish можно убрать из публичного доступа пакет, который был опубликован в последние 24 часа. Если это так и пакет не удаляется - лучше написать в техподдержку (в последние пару дней у многих ресурсов были серверные проблемы - github и codepen уже падали, может и у npm что-то не так). Если же вы опубликовали свой пакет раньше, то удалить его уже нельзя. Можно только сделать устаревшим с помощью npm deprecate. Если ваш пакет не является зависимостью у других пакетов, то теоретически можно попросить техподдержку удалить его вручную, но не факт, что они станут это делать.
    Ответ написан
    1 комментарий
  • Хочу набить руку на создании адаптивных меню. Можете подсказать сайты со сложными меню (чтобы посмотреть и попытаться сделать что-то похожее)?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Посмотрите подборку от freefrontend.com. 117 менюшек, начиная от самых простых и заканчивая довольно интересными в плане "сделать это самому и взять приемы на вооружение".
    Ответ написан
    Комментировать
  • Что такое и зачем нужен новый тип данный Symbol в ES15?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Что такое

    Новый тип данных symbol - это попытка ввести уникальные идентификаторы. Все крутится вокруг функции Symbol. Это не конструктор в полном смысле слова, с new ее использовать не получится. Это скорее маленькая фабрика. Она просто возвращает новый символ каждый раз. Это важно. Каждый раз новый. В качестве аргумента можно передать строку, но она используется только для отладки.
    Symbol() === Symbol() // false

    Что такое глобальный символ? Какой еще реестр?

    Есть Symbol.for(), это еще один метод, который не просто возвращает символ, но и сохраняет информацию о том, для какого параметра он создавался. Внешне логика работы напоминает хеширование - для разных параметров символы получаются разные, а для одинаковых - одинаковые.
    Symbol.for('my-string') === Symbol.for('my-string') // true
    Symbol.for('my-string') === Symbol.for('another-string') // false


    Зачем это надо?

    Применение этого типа данных - предмет для споров. Большая часть кейсов из интернета - это попытки поиспользовать новую фишку только ради того, чтобы ее поиспользовать. Самые популярные и практически применимые варианты:
    • В качестве ключа для доступа к свойству объекта. Грубо говоря вместо obj[key] использовать obj[some-magic-unique-key]. Позволяет избежать коллизии этих самых ключей если вы расширяете существующий объект из сторонней библиотеки. На практике встречается не очень часто, особенно в небольших проектах, но по всей видимости это - причина появления символов в языке.
    • Некоторая иллюзия приватных свойств. Символы по-своему работают с циклами и многими методами, связанными со свойствами объекта, становясь невидимыми для них. В результате можно разделить "все свойства с обычными ключами" и "все свойства с ключами-символами". А еще можно запутать код до безобразия.
    • Также, пользуясь предыдущей мыслью, можно сделать что-то вроде метаданных для любого объекта, которые опять же не сломают существующий код, но могут быть использованы для хранения какой-то информации и мередачи ее между отдельными модулями. Штука довольно интересная.
    Ответ написан
    Комментировать
  • В каких задачах лучше использовать TypeScript?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Обязательно ли его знать фронтендеру?

    Нет. Не обязательно. После того, как пришел ES6+ и стала популярной нормальная сборка с линтерами и тестами, количество изюминок в TypeScript заметно поубавилось, и в наше время его использование стало вопросом религии (нужна более строгая типизация или нет) и личных предпочтений. Учите чистый JS, а если вам в какой-то момент покажется, что TypeScript вам нужен или попадете в команду, где его используют - за пару дней разберетесь.
    Ответ написан
    Комментировать
  • Есть ли скрипт автоподбора размера шрифта?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Да, есть готовые решения, на которые стоит обратить внимание, например FlowType.js. Также есть CSS-only вариант на тот случай, если вам нужно привязать font-size к размеру окна браузера.
    Ответ написан
    1 комментарий