Будни разработчика
14.6K subscribers
1.19K photos
348 videos
7 files
2.04K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://t.iss.one/it_adv

Чат: https://t.iss.one/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Download Telegram
​​​​#статья дня
#jpeg #jpg #webp #img #avif

Соскучились по моей любимой теме карго-культа форматов изображений? Я вам ещё принёс.

Поскольку Chrome 85 теперь поддерживает AVIF, мы можем воочию сравнить плюсы и минусы уже не двух форматов с потерями, а ажно трёх!

Джек Арчибальд (Jake Archibald) из команды Google Chrome рассказывает об особенностях использования AVIF и отмечает не только преимущества, что так любят делать в лагере бездумного использования webp, но и недостатки и отношение к форматам со стороны пользователя. Например, почему загрузка JPEG при большем чем у других форматов размере кажется быстрее?

Сравнением JPEG, WEBP и AVIF дело, впрочем, не заканчивается.

В статье огромное количество как простых примеров, так и технических подробностей.

Читайте и приходите обсуждать: https://jakearchibald.com/2020/avif-has-landed/

А я тем временем приложу мой любимый пример оттуда: прогрессивная загрузка.
#заметка дня
#css #html #adblock

Сегодня в очередной раз заметил упоминание такой знакомой, но всегда неожиданной проблемы: целые блоки вашей вёрстки просто пропадают.

Секрет проблемы прост: блокировщики рекламы.

Они следят за ключевыми словами в тексте и классах HTML-компонентов. Если вы выбрали один из следующих классов для элемента:
adv
advert
advertisement
banner
banners

— вам конец.

Блокировщик рекламы не будет разбираться, что adv это advantages, а не advertisement. Будьте осторожны.

Более полный лист классических сокращений можно полистать тут: https://easylist.to/easylist/easylist.txt

tldr: почти всё — пресловутый ad.

Это простое правило слишком легко забывается, а вот последствия могут быть совершенно неожиданными. Мы как-то раз писали админку ротатора рекламной сети и… ну вы уже догадались, к какому коллапсу это привело.
#статья #browsersync #инструмент

Итак, представим себе вполне типичную во фрилансе ситуацию: “Добрый день, у нас есть сайт, но нет мобильной версии/нужно поменять дизайн шапки/подвала/заменить шрифты/поиграть с логотипами/продать барахлишко/спрятать золотишко”. Кто делал — непонятно. Как разворачивать у себя на машине — тем более не ясно. Может там самописная CMS или, того хуже, Вордпресс. Час на работу, день на создание окружения. Но не отказываться же от заказа, если всё, что предстоит сделать — это немного ковырнуть стили и скрипты, да залить на FTP, не правда ли?

Написал немного о том, как чинить практически любой сайт локально не разворачивая его у себя. Это не лонгрид, но слишком длинно для канала. Переходите на наш Телеграф: https://telegra.ph/Hirurgiya-sajtov-po-zhivomu-09-14

TLDR: Browsersync.io в режиме прокси-сервера.
Не написать об этом событии нельзя, но и писать одно и то же весьма глупо. Опять же — Defront :)
Команда разработчиков Moment.js официально объявила о прекращении развития библиотеки.

Moment.js — самая популярная библиотека для работы с датами и временем на сегодняшний день. Она была создана в 2011 году с прицелом на потребности разработчиков того времени. За весь период существования библиотеки её дизайн не менялся, но сообщество хотело изменений, особенно иммутабельности и переработки архитектуры таким образом, чтобы библиотека стала дружить с тришейкингом. Внесение этих изменений вызвало бы вопросы у текущих пользователей библиотеки, так как получилась бы совершенно другая библиотека. Разработчики Moment.js не захотели идти по пути Angular и разработали альтернативную библиотеку — Luxon.

С сентября 2020 года в Moment.js не будут добавляться новые фичи, не будут больше обсуждаться вопросы тришейкинга, не будет никаких мажорных изменений (это означает, что никогда не будет 3-ей версии), возможно, не будут исправляться какие-либо баги и поведенческие странности, если они будут связаны с архитектурными проблемами. Но будут исправляться все проблемы безопасности, будет обновляться база часовых поясов IANA.

Разработчики рекомендуют не использовать Moment.js для новых проектов без поддержки старых браузеров, вместо неё рекомендуются Luxon, Date.js, date-fns и js-Jode. Также сейчас TC39 работает над Temporal (современной заменой объекта Date), в которой реализуется основная масса фич библиотек для работы с временем.

#announcement #date #library

https://momentjs.com/docs/#/-project-status/
#статья дня
#css #clip #mask

Рейчел “наше всё“ Эндрю (Rachel Andrew) решила одним махом закрыть две темы: clipping и masking в CSS. Обрезка элемента по контуру и наложение маски. Они неразрывно связаны друг с другом, так что выпуск двух статей подряд был весьма оправдан.

Если с обрезкой всё достаточно понятно (рассмотрены обрезка по кругу, эллипсу, полигону (точкам) и SVG), то что такое “маска” — до сих пор у многих вызывает вопросы.

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

https://web.dev/css-clipping/
https://web.dev/css-masking/

Ну и конечно же, не забываем канонiчную статью на CSS-Tricks: https://css-tricks.com/clipping-masking-css/
👍1
​​#заметка дня

#github #ghpages #tips

При работе с Github Pages мало кто заглядывает дальше раздела quick start. И вот очень зря.

Не претендую на полный список, но есть пара вещей, которые следует понимать всем.

1. Не начинайте названия каталогов и файлов с _ (подчёркивание), . (точка), # (октоторп) и не заканчивайте их ~ (тильда). С тильды, впрочем, начинать тоже не надо. Почему? Потому что гладиолус. Точнее, Jekyll. Именно его используют GH Pages для генерации ваших страниц: https://jekyllrb.com/docs/structure/ Пример с подчёркиванием — наиболее частый, не знаю, откуда взялась мода называть каталоги так. Для сортировки, видимо. Починить это, впрочем, легко — добавьте файл .nojekyll в ваш репозиторий.

2. URL — регистрозависимы. image.jpg и image.JPG — разные файлы. Это нарушает правила обработки URL, но у GH Pages есть право считать по-своему. Причина проста: GitHub должен поддерживать как регистрозависимые файловые системы, так и регистронезависимые. Поэтому постарайтесь придерживаться одного правила в именовании.

Делитесь вашими примерами, дополним заметку.
#пятница

Вечеру пятницы — пятничная тема. Для тех кому “за”: каталог скинов WinAmp. Гордого и непобеждённого. Каждый скин — шедевр своего времени, выверенный до пикселя.

https://skins.webamp.org/

Скины можно попробовать тут же в проигрывателе WebAmp, который является визуальным и функциональным клоном того самого.

Открытый код, кстати! Кому нужна работа с аудио — рекомендую к ознакомлению.
​​#инструмент дня
#svg #generator

В копилку к разнообразным генератором SVG-фонов (https://t.iss.one/htmlshit/399) можно прибавить ещё один бронебойный инструмент: https://bgjar.com/

Волны, карта, полигоны (жаль, не анимируемые), различные паттерны. И всё это индивидуально настраивается (не только цвет и размер, но и, например, подсветка городов на карте).

Жаль не открытый код, посмотреть на генерацию некоторых вещей было бы интересно.
👍1
#фишка дня
#html

Минутка занимательных фактов на нашем канале.

Если в href ссылки вы укажете шестнадцатеричное число определённой длины, браузер распознает его его как набор октетов IPv4 (адрес, короче говоря, 127.0.0.1 и вот это вот всё).

<a href="https://0xacd916ae">IPv4</a>

Пример:
https://codepen.io/alinaki/pen/bGpyjoB

Не знаю, зачем это могло бы быть полезно. Экстремальная экономия байт? :)

P. S. есть древняя статья от 2002 года где таким образом обфуцировали ссылки. Ну, тоже вариант: https://www.pc-help.org/obscure.htm
Итак, в Телеграме появилась нативная поддержка тредов в чатах, а также комментариев и реакций в каналах.

Интересный вопрос — имеет ли смысл отключать группу от канала? Ведь для обсуждения насущных проблем есть более популярные места.


P. S. Оказалось, комментарии как раз к группе и привязываются, образуя независимые треды в основном потоке. Это не всем и не всегда удобно. Будем наблюдать, в общем.

https://vc.ru/social/162929-kommentarii-v-telegram-kanalah-vse-chto-nuzhno-znat
#codepen дня
#css #html #hamburger #menu

Время обеда, дамы и господа! Вашему вниманию тематическая (обед же) подборка анимаций кнопок переключения меню. Не гамбургером единым!

https://codepen.io/oliviale/pen/gKParr

Автор: Olivia Ng. Вообще, смело могу рекомендовать зафоловить её на Codepen, весьма свежие идеи и решения имеются в достатке.
Проверка комментариев
#ссылка дня
#gsap #css #js #scroll #animation

GreenSock, создатели широко известной библиотеки для анимации GSAP, решили закрыть разом все вопросы по работе со скроллом. Эффекты? Нате. Анимация? Нате. Параллакс? Их есть у меня. Анимировать SVG? Без проблем. Даже WebGL завезли.

В общем, они просто взяли и выложили подборку различных эффектов анимации по скроллу, добавили к каждому видео-предпросмотр и ссылку на CodePen.

Меньше слов, больше ссылок:

https://greensock.com/st-demos/

P. S. Библиотека GSAP имеет весьма развесистое лицензирование, но условия бесплатного использования покрывают даже некоторые коммерческие применения. В любом случае, идеи — бесценны.
​​#ссылка дня
#css #focus #a11y

Ну что же, мы ждали этого с момента первого явления CSS народу.

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

Создатели браузеров (особенно Firefox) делают всё, чтобы усложнить разработчикам сбросить стили фокуса по-умолчанию. Но заказчики-то, оказывается, тоже фокус не любят. И дизайнеры.

В итоге начинается… борьба умов. Попытки скрыть фокус по клику, но оставить по Tab-у. Скрипты, стили, лишние элементы.

На помощь приходит псевдокласс :focus-visible! Уже доступен в свежем Chrome 86, а в Firefox существует под именем :moz-focusring. Что он делает? Даёт доступ разработчику к управлению необходимостью применения стилей фокуса!

Сложно как-то получилось. Короче говоря, теперь можно прямо указать браузеру: примени эти стили только когда используется клавиатура.

Пример: https://codepen.io/matthiasott/pen/LYZEwBJ

А и собственно статья Маттиаса Отта (Matthias Ott): https://matthiasott.com/notes/focus-visible-is-here

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

#css #transitions #keyframes

Вокруг конкретно этого примера с неделю назад в Твиттере разгорелась небольшая дискуссия, превратившаяся, как это нередко бывает в технической среде, в соревнование.

Впрочем, куда там без, кхрм, дискуссий.

Причина спора банальна: то, что одним кажется излишне сложным, другие видят как возможность. Ну и какая то часть из этих “других” всегда заявит о том, что тут даже скрипты не нужны и одних стилей достаточно. И, собственно, доказывают это:
https://codepen.io/cobra_winfrey/pen/OJXJeod

Тред: https://twitter.com/cobra_winfrey/status/1314040380908855297

Мораль проста: декомпозируйте и не бойтесь совмещать подходы. Скорее всего, изначальная задача гораздо проще, чем кажется. Попробую в будущих постах объяснить, что же такое, собственно, декомпозиция и как делить макеты и анимации на составные части.
#статья дня
#перевод #css #html

Пару-тройку месяцев назад вышла отличная статья Уны Кравец (Una Kravets): “Ten modern layouts in one line of CSS”.

Я очень не согласен со словом “modern” (современные), потому что, например, трёхколоночная раскладка с шапкой и подвалом (“святой грааль” вёрстки) появилась не вчера и не десять лет назад. Решению без таблиц тоже сильно больше десяти лет. То же касается и различных сеток.

Но факт есть факт: при помощи display: grid можно буквально в одну строку реализовать не только “Святой грааль”, но и множество других вариантов. Мне больше всего понравился clamp.

Почему я именно сейчас решил упомянуть эту статью? Да потому что на Хабре вышел перевод. Я уверен, что многим было бы приятно прочесть и на русском языке.

Ссылка на перевод: https://habr.com/ru/post/522880/

Ссылка на оригинал: https://web.dev/one-line-layouts/
​​#инструмент дня
#css #img #placeholder

Помните пост про плейсхолдеры для ваших проектов и CodePen-ов? https://t.iss.one/htmlshit/431

Помимо задачи поставить временное изображение, существует и задача отобразить что-то, пока грузится основная картинка. Для этого можно или поставить серое поле, или применить различные техники под общим названием LQIP — Low Quality Image Preview. Название пошло вот от этого проекта: https://github.com/zouhir/lqip

Есть решение LQIP на базе SVG, оно так и называется, SQIP: https://github.com/axe312ger/sqip (но произносится сквиб, спросите у Гарри Поттера, почему так).

Задача у них одна: показать вместо оригинального изображения что-то минимальное по размеру, но передающее хоть какую-то информацию об исходнике. Например, цвет.

И вот на сцену выходит компания Wolt со своим решением под названием BlurHash: https://blurha.sh/. Ссылка на GitHub: https://github.com/woltapp/blurhash

Оно генерирует максимально размытое изображение на базе хеша вида: LEHV6nWB2yk8pyo0adR*.7kCMdnj (для генерации используется ограниченный набор из 83 доступных символов) и рисует его в canvas. Плагины есть под любые мыслимые средства, от Gulp и Eleventy до Flutter.

Если в вашем приложении или сайте требуется загрузить огромное число изображений — подобные техники очень вам помогут снизить пиковую нагрузку на сервер и ускорить процесс загрузки для пользователя, попутно сделав его более приятным и, кхрм, цветным.
​​#codepen дня

#css #game #trick

На CSS+HTML можно писать целые игры! Я их много встречал за свою карьеру, но в эту запись попадёт совсем свежая.

Построй маяк до наступления ночи! Кликайте по ячейкам с домиками.

https://codepen.io/ivorjetski/pen/OJXbvdL

Мой MacBook это еле переваривает, но оно работает и даже увлекает за счет великолепной анимации и идеи вообще. Кстати, качество графики тоже можно изменить — в меню справа. Всё как у больших!
​​Субботняя #фишка дня

Наверное все знают, что у Google есть анимированные и интерактивные «дудлы» (doodle, ну, интерактивный логотип, грубо говоря). Но вот не всем известно, что в зависимости от результатов поиска можно найти пасхальное яйцо.

Вот что я сегодня увидел:
1. Введи в строку поиска «Wizard of oz»
2. Кликни по красным башмачкам 👠
3. А теперь по торнадо 🌪

Не благодарите :)