• Как сверстать перевернутый текст?

    Ответ написан
    Комментировать
  • А можно ли на javascript реализовать эффект когда буквы прилетают из-за экрана и встают в текст?

    0xD34F
    @0xD34F Куратор тега JavaScript
    HTML

    <span>hello, world!!... fuck the world... fuck everything</span>


    CSS

    body {
      margin: 0;
      background: black;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }
    
    span {
      color: red;
      font-size: 24px;
      font-family: monospace;
    }
    
    .xxx {
      display: inline-block;
      min-width: 10px;
      transition: all 0.2s;
      transform: scale(1);
    }
    
    .hidden {
      opacity: 0;
      transform: scale(30);
    }


    JS

    function show(el) {
      el.innerHTML = Array
        .from(el.innerText, n => `<span class="xxx hidden">${n}</span>`)
        .join('');
    
      el.querySelectorAll('span').forEach((n, i) => {
        setTimeout(() => n.classList.remove('hidden'), 100 * i);
      });
    }
    
    show(document.querySelector('span'));


    https://jsfiddle.net/xw6acvnb/
    Ответ написан
    1 комментарий
  • Можно ли считать выполнение xmlhttprequest запроса работой в отдельном потоке?

    @Interface
    Дисклеймер:
    С веб-воркерами (и чем-то подобным) все и так понятно, поэтому далее я пишу вне их использования

    Ответ на ваш вопрос сильно зависит от понимания заголовка. Если мы говорим про браузер или какую-то его часть - то вполне вероятно это действительно работа в отдельном потоке. Только это работа браузера, а не javascript. Вот например статья про node.js https://codeburst.io/how-node-js-single-thread-mec... (достаточно прочитать Top Highlight)
    The main event loop is single-threaded but most of the I/O works run on separate threads, because the I/O APIs in Node.js are asynchronous/non-blocking by design, in order to accommodate the event loop.

    Таким образом про node.js можно сказать, что оно - многопоточное приложение. Но вот с точки зрения javascript-а, то есть как-бы изнутри него - node.js - однопоточный. Иными словами: весь JavaScript код и в браузере и в ноде позиционирует себя как однопоточное приложение. И исполняется так же. Но какие-то операции вне языка (I/O или тот же xhr) могут быть реализованы как угодно браузером. Это строго говоря вопрос больше про устройство среды исполнения.

    Я подвис, но мой ответ был, что JS можно считать многопоточным и я так предполагаю из-за наличия xmlhttprequest запросов (в простонародии ajax).
    - строго говоря это не так. Хотя мне кажется это не далеко от истины. Если мы поговорим, что язык многопоточный, я думаю мы имеем ввиду, что языком поддерживается работа с потоками, а не то как он устроен изнутри или как изнутри устроена среда его исполнения. Потому как какая-нибудь сборка мусора может выполняться в отдельном потоке, но это не делает сам ЯЗЫК много поточным.

    Вопрос: Относится ли WebAPI к движку JavaScript и корректно ли утверждать, что фактически xmlhttprequest выполняется в отдельном потоке от остального кода JavaScript?

    - Нет. Это API которое браузер предоставляет внутрь движка. Это можно проследить взяв например node.js и сравнив с браузерным js. Так, например, в node.js доступны внутренние модули (fs, http, path etc.)., а также другие фичи, такие как process.argv и так далее, в то время как в браузере есть WebAPI, например, fetch. При этом в браузере нет require('path'), зато в ноде нет fetch.

    И это при том что и браузер (chrome) и node.js работают на одном движке (V8).

    В node.js нет доступа к xhr, что уже может навести на мысли о том, что это не часть движка.

    Важное замечание: я думаю сравнивая node.js и браузер, можно сформировать какое-то представление о том, что из себя представляет чистый движок js, но тем не менее это не полностью достоверно. Потому как, например, и там и там есть совместимые друг с другом setInterval и setTimeout, однако (если мне не изменяет память) они не входят в движок.

    Если хочется четче понять где проходит граница, но не так сильно чтобы читать спеки - можно попробовать встроить движок самостоятельно. V8 или SpiderMonkey (в Firefox'е) умеют встраиваться в другие приложения и если встраивать их самостоятельно - и API внутрь движка (причем конкретной его реализации, а не абстрактного понятия) нужно будет прокидывать самостоятельно - тогда можно будет увидеть, что в голом движке не будет ни setTimeout, ни alert, ни console.log, ни document ни даже require и т.д.
    Ответ написан
    1 комментарий
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Что написать для тренировки на js с нуля?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    Из того, что часто может пригодится в вебе

    • Паралакс
    • слайдер
    • генерацию таблиц из js
    • сортировку таблиц
    • общение с сервером
    • Плеер (аудио/видео)
    • Работа со временем (momentjs)
    • Подгрузка постов при скроле
    • Движение блоков при скроле
    • Пагинация
    • Модалка
    • Взаимодействие с изображениями (фильтр, обрезка, ...)
    • Кастомные селекты, датапикеры
    • Табы


    + можешь поискать топ сайтов и попробовать повторить интересные штуки из них
    + jQuery
    + фрейморки, например Vue
    + node js
    Ответ написан
    Комментировать
  • Что написать для тренировки на js с нуля?

    Sergamers
    @Sergamers
    front-end
    Создай json файл и от него генерируй какое-нибудь симпатичное ленивое дерево. К примеру в начале у тебя грузится дерево из 3-х групп. По нажатию на группу происходит загрузка данных. В этот момент ты делаешь анимацию этого действия. Получив данные дорисовываешь дерево новыми данными. В качестве api можешь взять json-server https://github.com/typicode/json-server

    Вариаций реализации куча - от винильного ( чистого ) js до использования фреймворка или библиотек - ( angular, react, vue ).
    Ответ написан
    Комментировать
  • Где смотреть современные интересные сайты?

    @Cypres
    Возможно, вы имели ввиду всякие примеры для собственной реализации, и прочее:

    dribbble
    uplabs
    uimovement
    Ответ написан
    Комментировать
  • Где смотреть современные интересные сайты?

    sfi0zy
    @sfi0zy Куратор тега Вёрстка
    Creative frontend developer
    Ответ написан
    Комментировать
  • Когда лучше применять синхронность, а когда асинхронность?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Синхронность применяйте когда результат операции получается сразу. JavaScript выполняется в один поток, поэтому пока что-то синхронное происходит, всё остальное ждёт в сторонке. В том числе события интерфейса.

    Асинхронность используйте везде, где нужно ждать. Чтобы не ждать:
    • Отправили запрос на сервер. Ответ будет неизвестно, когда – то ли сеть медленная, то ли сервер призадумается. В это время JS может заняться чем-то ещё. Дайте ему такую возможность.
    • События интерфейса - неизвестно, когда нажмут на кнопку или введут значение в форму. Даже длинная цепочка действий: отправили пользователя авторизоваться через третий сайт.
    • Длинные сложные вычисления. Их можно вынести в web worker, отправлять в него задачу и асинхронно ждать результата. В это время бодро реагировать на кнопки и прочее.


    p.s. Ждать, не важно, сколько: всего несколько миллисекунд или полчаса.

    p.p.s. для желающих упороться подробностями: Concurrency model and Event Loop
    Ответ написан
    1 комментарий
  • Npm модуль требует jQuery. Как исправить?

    @abberati
    frontend-разработчик
    Это плагин для $, написанный без поддержки нормальных человеческих модулей. Он подразумевает, что $ есть в глобальной области видимости.

    Самое простое решение:
    import $ from 'jquery'
    window.jQuery = $
    
    import svgConnect from 'HTMLSVGconnect'


    Может быть, можно провернуть как-то иначе, но в любом случае будет костыль.
    Ответ написан
    4 комментария
  • Как сделать веб-сервис и не утонуть в процессе?

    gobananas
    @gobananas
    finishhim.ru
    1. Выделить одну главную функцию сервиса
    2. Сделать её, сверстать и выкатить, это будет MVP
    3. Не заморачиваться с вёрсткой
    4. Не заморачиваться с методами авторизации
    5. Не думать про нагрузку, не заниматься оптимизацией кода и БД
    6. Если поймали себя на мысли что вы думаете какой паттерн тут применить вы в Ж, просто пишите код, который работает!!
    7. Не совмещать написание сервиса, который вы РЕАЛЬНО хотите запустить с изучением чего-то нового (языка, БД). Утоните в учёбе и никогда не запустите.

    Это всё на своём опыте написания проекта говорю вам а не голословно ))
    Ответ написан
    10 комментариев
  • JS - есть ли что-то для проверки совместимости уже готового кода с различными браузерами?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Для IE: https://netrenderer.com/ (или переключать в консоли IE Edge эмуляцию разных предыдущих версий IE)
    2. Для функций: https://caniuse.com/
    3. Для остального: консоль в браузере (Ctrl+Shit+K).
    4. Адаптивный дизайн: Ctrl+Shift+M, можно воспользоваться андроид-эмулятором: например, BlueStack
    5. Mac OS X Sierra: через VirtualBox: здесь
    Ответ написан
    Комментировать
  • Как и чем перебрать массив?

    DeyvHorni
    @DeyvHorni
    $dir = 'img/';
    $images = scandir($dir);
    for ($i = 0; $i < count($images); $i++) {
    	if ($images[$i] != '.' && $images[$i] != '..') {
    		echo '<a href="' . $dir . $images[$i] . '" target="_blank"><img src=' . $dir . $images[$i] . ' style="width: 200px;"></a>';
    	}
    }
    Ответ написан
  • Js библиотека/и попадание елементов в поле зрения?

    Stalker_RED
    @Stalker_RED
    Совсем вручную не надо, есть Intersection Observer

    Ну или можно взять какую-то готовую библиотеку, типа wowjs
    Ответ написан
    Комментировать
  • Js библиотека/и попадание елементов в поле зрения?

    UnluckySerivelha
    @UnluckySerivelha
    Ответ написан
    Комментировать
  • Как сверстать элемент в виде буквы с background-image?

    0xD34F
    @0xD34F
    Можно сделать обычный текст с подложенной под него картинкой, типа так:

    background: url(...);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    Ответ написан
    1 комментарий
  • Сервис онлайн-перевод нового синтаксиса в устаревний, php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Здравый смысл говорит что нет, т.к

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

    b) в целом эта задача никому не нужна: в проекте используется какая-то конкретная версия php + периодически решается вопрос "как адаптировать старый код к новой версии php" (ну или не решается хе-хе).

    Я честно старался придумать ситуацию кому может понадобиться запускать код написанный под новую версию на старой - додумался только до легаси проекта, который хочет пользоваться плодами опенсорс, но не может.
    Что ж, тут пришло время обновлять свой код до актуальных версий языка.
    Ответ написан
    Комментировать