Ответы пользователя по тегу JavaScript
  • Как быть - учить GreenSock или чистую CSS Animation?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Кто нибудь из серьёзных верстальщиков делает анимацию самостоятельно, вот чтобы без плагинов писать весь код с нуля?

    Да, вполне. Тут нужно понять такую вещь: есть задача и есть инструмент под задачу. Если вам нужно посадить кактус в горшок - экскаватор будет не к месту. И не всегда универсальный набор шестигранников подойдет под треугольный болт.

    Вопрос : нужно ли вообще заморачиваться над серьёзным изучением анимации, джаваскрипта, или же забить и учить документацию гринсок?

    Что такое GSAP? Ну вот без красивых слов? Это набор функций, решающих набор задач. А если у вас появится задача, на которую этот инструмент не рассчитан? Или задача, которую вообще никто еще не решал до вас, или готовые решения не подходят? Вы ничего не сможете сделать. Так что если вы хотите делать интересные вещи, которые выходят за рамки среднестатистического сайта, то ответ очевиден.

    P.S.: И да, не зацикливайтесь на каком-то конкретном инструменте (например GSAP) только потому, что кто-то сказал, что это "стандарт". Всегда есть альтернатива. Например anime.js. То, что инструмент активно не развивается, не значит, что он вдруг перестал решать свою задачу. Старая добрая классическая zippo работала, работает и вас переживет.
    Ответ написан
    Комментировать
  • Как сделать эффекты как на сайте примере?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Что ж вас всех так тянет к этому канвасу? (риторический вопрос)

    1. Анимации буквы под ней фото. Как это делается? Подозреваю что canvas используется

    Если вы про большие "прозрачные" буквы, через которые видны фотографии, то никакой канвас там не нужен. Это делается на svg-масках - просто и производительно. Соответственно при перемещении мышки добавляется transform:translate для маски. Задача тривиальная, но оставлю пример для ознакомления. Переход между слайдами делается аналогично.

    2. Листание мышкой (зажимаешь появляются направляющие вверх-вниз, вправо-влево).

    На нажатие мышки вешаете обработчик, показывающий эти элементы (думаю не стоит говорить о том, как поменять им opacity). Далее точно так же - на событие "перетаскивания" добавляете transform:translate для всех этих линий и transform:scale для кружков. При переходе между слайдами добавляете еще больше трансформаций по вкусу.

    Остальные эффекты тоже интересуют. Понятно что css3, js, canvas

    Для рисования линий можно опять взять svg и..... Это вообще мощный прием, много куда его можно приткнуть. Появление надписей можно сделать на CSS-анимациях. Вариантов много, можно начать с вот этого примера (только делать все в обратную сторону) или поиграть с размерами псевдоэлементов, положенных поверх текстов. Еще там есть постраничный скролл, но это легко загуглить.
    Ответ написан
    5 комментариев
  • Как найти эту vanillavalue.com?

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

    Этим все сказано. Запрос делает он. Несколько месяцев назад кто-то на сайте самого disqus жаловался на проблему с долгой загрузкой и как раз запросами на vanillavalue, но видимо так и не решили этот вопрос.

    Что эта за шалапань?

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

    Как его победить?

    Никак. Если есть такая возможность, то можно поиграться с CSP на ваших сайтах. Люди говорят, что с помощью этой штуки можно уменьшить количество запросов и немного ускорить загрузку disqus. Но от зомби серебряная пуля может и не спасти. Будьте готовы к тому, чтобы со временем перейти на другую систему комментирования.
    Ответ написан
    2 комментария
  • Как вывести HTML структуру в дерево?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Имеете в виду что-то такое?
    Ответ написан
    1 комментарий
  • User agent stylesheet и цвет орфографической ошибки?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    В отдаленном светлом будущем скорее всего у нас будут псевдоэлементы ::spelling-error и ::grammar-error, мы будем из CSS переопределять стандартное подчеркивание. На данный момент вот так просто из CSS ничего сделать не получится.

    куда копать

    В девелоперской версии Хрома есть chrome.automation API, в котором по идее с помощью метода getTree() можно получить некое дерево, похожее на DOM, но на самом деле им не являющееся, и опять же по идее в нем должны быть элементы типа AutomationNode для слов, которые содержат ошибки, и у них есть некоторые свойства вроде цвета и подчеркивания. Сам я этим никогда не пользовался, но интуиция подсказывает, что стоит копать в эту сторону.

    P.S.: Если вам нужно решение для сайта "здесь и сейчас", то думаю лучше будет совсем отключить проверку орфографии со стороны браузера и вместо нее вставить кастомную, в сети есть готовые решения.
    Ответ написан
    2 комментария
  • Как привязать контекст?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    чтобы клик срабатывал верно

    Чтобы клик срабатывал, никакие привязки контекста вообще не нужны:
    div.onclick = (e) => {
        e.target.classList.toggle("ss");
    }

    Если хочется попривязывать, то можно конечно, но для вашей задачи это усложнение на ровном месте:
    function listener(e) {
        this.classList.toggle("ss");
    }
    
    div.onclick = (e) => {
        listener.call(e.target, e);
    }
    Ответ написан
    1 комментарий
  • SVG и анимация - как собрать в кучу и сделать?

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

    Рисуете эти линии в векторном графическом редакторе (каждую по отдельности); затем действуете по принципу, описанному в этой статье, чтобы эти линии прорисовывались от начала до конца.

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

    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. Перед тем, как использовать результат работы этого метода, проверяйте что он вернул.
    Ответ написан
    Комментировать