Будни разработчика
14.6K subscribers
1.19K photos
335 videos
7 files
2.02K 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
#фишка дня

Есть псевдокласс :disabled, который выберет отключенные поля. Есть псевдокласс :read-only, который выберет недоступные для ввода поля (только для чтения).

Вот только есть нюанс.

Отключенные поля они так-то тоже для ввода недоступны. Как же тогда быть?

Использовать селектор атрибута: [readonly].

Пример: https://codepen.io/elad2412/pen/wvpmjGR

Отличие disabled-полей от readonly: первые не отправятся с формой вообще, а значение вторых просто нельзя изменить.

Скелетон вернётся с новыми подробностями о фронтенде завтра.

#css #html #input
26👍4🤨1
#заметка дня

Что-то вчерашняя заметка про border-radius: 9999px внесла сумятицу в молодые умы. Я решил, что нужна ещё одна.

На сей раз с иллюстрацией

Итак. 9999px — это просто моё любимое число.

Взамен 9999px можно использовать 100vmax, infinity, calc(1px / 0). Все же помнят соглашение, что деление на ноль даёт бесконечность?

Результат будет один: мы получим скруглённый прямоугольник.

Если же вы выставите 50% — получится эллипс с радиусами в 50% ширины и 50% высоты, на иллюстрации справа.

Разница очевидна, и нам редко нужны эллипсы в жизни. А так хотелось квадруг… (squircle). Ну да ладно.

Обновил кодпен: https://codepen.io/alinaki/pen/jOxRwJJ

Ну и конечно, вынесу сюда ссылку на обсуждение (спасибо Илье Стрельцыну) внедрения в CSS значения border-radius равного round, чтобы убрать этот кажущийся «хак»: https://github.com/w3c/csswg-drafts/issues/6467

Вот только подвижек никаких, всем сразу захотелось больше вариантов.

#geometry #css
👍22
#видео дня

Многие до сих пор страдают от карго-культа при выборе формата изображений для своих проектов. Кому-то сказали использовать webp везде и прикрутить к сайту декодер, кто-то до сих пор считает, что SVG всегда лучше PNG для технических изображений, а кто-то — что нужно поставлять на каждое устройство свой набор разрешений.

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

https://www.youtube.com/watch?v=CMlXUS6e46w

#video #img #png #jpg #webp
👍10🔥1
#книга дня

На сцене снова (раз, два) Александр Беспоясов. На сей раз с книгой «Refactor like a superhero».

Выложена на Гитхабе, на двух языках: русском и английском. Выбирайте любой, засылайте PR-ы на исправления и дополнения.

Читаем, не стесняемся!

#book #refactor
15💩2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#ссылка дня

Да-да, я знаю, знаю, что любить иконочные шрифты нынче не в моде, а в моде дико заморачиваться с SVG, символами...

Но вот типографика же не стоит на месте. Вариативные шрифты — уже реальность. Было бы глупо не применить их для иконок.

И таки да, встречайте, Material Symbols: https://material.io/blog/introducing-symbols

Вариативный иконочный шрифт от Google. Естественно, он есть на Google Fonts: https://fonts.google.com/icons

Естественно, вы можете скачать SVG и PNG.

Ну и куда же без плагина для Figma: https://www.figma.com/community/plugin/1088610476491668236/Material-Symbols, позволяющего настроить и экспортировать иконки как душе угодно.

Меня, правда, забавляет целый ползунок на fill, если вы понимаете, о чём я. Вообще, с ползунками на Google Fonts всё очень плохо... но речь не о них.

К слову, nice touch: там присутствуют специальные символы для iOS, они вариативности не подвластны. Забавный жест.

#fonts #icons #google #material
🔥14👍4👎1
#заметка дня

Если вы делаете тестовое и вариантах приёмки сказано: «Архив или ссылка на репозиторий» всегда делайте репозиторий.

Оценивающему всё равно, сколько было потрачено времени. А вот процесс — интересен. Прислав архив вы сразу получаете мнимый минус. Его же надо распаковать, открыть в редакторе…

В репозитории на гитхабе достаточно нажать точку.

Ну и, очевидно, не пихайте всё одним коммитом.

Ну и читайте мою копию треда про собеседования, конечно: https://t.iss.one/htmlshit/1326

Не ссыте, котаны. Рассылайте резюме и ищите работу мечты.

Тока с умом.

#work
16👍6👎1
#такое дня

Что-то меня задело сегодня высказывание, что я тут мало по вёрстке выкладываю.

По-моему, я тут только про вёрстку и выкладываю. И лично мне хотелось бы больше хардкора и историй за жизнь.

Но ок, завтра будет хардкор по вёрстке. Всё и сразу. Надо немного подготовиться только. Держитесь там.

Ну и как всегда — делитесь, что хотели бы увидеть.

#css #js #geometry
13👍8❤‍🔥2😱2
#заметка дня

Что-то мы совсем забыли про полезные кусочки кода.

Например, как сделать красивую градиентную тень?

Да очень просто! Как и всегда, ответ на этот вопрос – псевдоэлемент. Поместили, подвинули, размыли. Готово.

Вот даже живой пример: https://codepen.io/argyleink/pen/WNxeBKa

Похоже на Philips Ambilight, не правда ли?

Добавляйте в ваши коллекции, но лучше – запоминайте принцип.

#css #gradient #shadow
👍25👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#заметка дня и #codepen

Лет шесть назад поступил мне заказ от агентства, работающего на некий автозавод. Они хотели «разрезать» машину под углом, представив её в двух ипостасях: для отдыха и для работы.

К сожалению, набор браузеров не позволял просто взять clip-path. Поэтому я даже немного завидую людям, который вошли в мир промо-сайтов в последние пару-тройку лет.

Что же пришлось делать? Немного геометрии! И забавных визуальных хаков.

Повернуть контейнер, сдвинуть его, чтобы совместить части. А вот внутреннюю часть контейнера — повернуть в обратном направлении и обратно же сдвигать на те же значения.

Где-то у меня даже завалялась бумажка с расчётами… если интересно будет кому — можно восстановить.

Ну и, конечно, с использованием CSS-переменных код стал в два раза меньше только за счёт того, что не пришлось клеить строки стилей.

Десктоп: https://codepen.io/alinaki/pen/MWGMLey?editors=0010

P. S. если вам нужны подобные совмещённые изображения — ищите по запросу macos dynamic wallpaper.

#css #geometry
👍20🔥9
#статья дня

На сайте последней конференции по Next.js многих поразила WebGL-реализация прохождения света через призму. Возможно, не самая физически точная, но от этого не менее потрясающая.

Подобные вещи на промо-сайтах и лендингах определенно точно привлекают внимание не только широкой аудитории «на поиграться», но и разработчиков.

Вот только подробные посты о том, как это делать, выходят довольно редко. Почему-то чаще легче встретить достойное видео от того же Юрия Артюха, чем хорошую статью.

Да даже мой предыдущий пост должен был стать большой статьей… но лень да и формат Телеграма просто не позволяют это сделать.

Поэтому рекомендую обратить пристальное внимание на статью от, собственно, авторов призмы: https://vercel.com/blog/building-an-interactive-webgl-experience-in-next-js

Все шаги, от прототипа и расчетов до оптимизации производительности. Делается все на react-three-fiber. Настоятельно рекомендую пойти и пройти их самостоятельно.

#webgl #react
👍15
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Признавайтесь, кто в TikTok часы проводит за скроллингом ленты?

Но я вообще не за тем пришёл. Меня их прелоадер заинтересовал. Яркий пример режима смешивания цветов со слоями ниже, mix-blend-mode: multiply.

Без него анимация была бы совсем простой: https://codepen.io/frontendcorn/pen/poWZObX

Кстати, прекрасная статья есть с примерами: https://web.dev/learn/css/blend-modes/

А тут разобрана вся их математика: https://www.w3.org/TR/compositing-1/

А тут вся математика разобрана еще более подробно: https://css-tricks.com/taming-blend-modes-difference-and-exclusion/

И перевод от Ильи Стрельцына: https://css-live.ru/tricks/ukroshhaem-rezhimy-nalozheniya-difference-i-exclusion.html

А самое забавное, что с видео это тоже работает: https://codepen.io/jcoulterdesign/pen/QagxgJ

#css #mixblendmode
👍12🔥5
#фишка дня

Пластмассовый мир победил, XML оказался сильней…

Но почему? Неужели всё настолько плохо?

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

Но погодите, ведь любой компонент в React это просто функция?

А значит, мы можем сообразить их композицию!


const AppProvider = compose(
UserProvider,
ThemeProvider.
MenusProvider,
SupportProvider,
ErrorProvider,
StateProvider,
);


И получить красоту: https://codesandbox.io/s/gprovider-composition-fkn93e?file=/src/App.js

Естественно, подход по своей сути применим ко всем компонентам.

Всё есть функция, котаны.

#react #fp #context #compose
👍23🤮31👎1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня

Итак, проблема. У вас десятки видео на странице, но вам лень готовить каждому постер и прописывать его.

Казалось бы, ну и что такого? Все браузеры подгрузят первый кадр видео и покажут его.

Да. Но нет. Safari не подгрузит. И что делать, если нужен не первый кадр?

Всё очень просто! Крис Койер пишет: «Просто добавьте #t=0.01 к урлу (в src)». Смотрим видео — работает :) Кто не понял — это просто проход по таймлайну.

Да, это заставит браузер сделать запрос к видео за ключевым кадром, но постер так-то тоже грузить надо.

К слову, в некоторых промо-проектах бывает весьма сподручно заменять анимации и 3D на контролируемое видео. Чтобы не происходило скачка при начале проигрывания — как раз лучше отказаться от постера и прибегнуть к технике с t.

Вот свежий и яркий пример — книга рецептов-игра: https://www.themagicalpantry.com/

Весь интерактив сделан на видео.

#video #safari #poster
👍40🔥2🤩1
#инструмент дня

Забавный обучающий проект посвящённый DOM Events (событиям объектной модели документа). Кликам и фокусам, короче.

Что такое target, bubble, propagation? Всё показано максимально наглядно.

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

Итак, встречайте: https://domevents.dev/

#js #dom #education
👍17🔥6
никто:
theguardian.com: я веган

...
Вот кого-то распирало, вы поглядите.
😁25🤡3
Походу, к слову, это вирусная реклама такая… Каждый же зайдёт проверить.

Меня использовали?! 🤔
👍7
#заметка дня

Часто приходится делать таблицы в GitHub Markdown? Тогда лови это знание, пригодится.

Списки и контейнеры не могут и не должны отображаться внутри таблиц, набранных "палочками" (||). Палочки — только для текстового контента, для данных. Точка.

Нужен табличный, кхрм, макет (ну список изменений там запихать) – используй HTML таблицы.

Но есть нюанс.

Чтобы правильно использовать Markdown внутри HTML-таблиц, нужно этот самый контент с двух сторон обложить переводами строки, вот так:

<td>

_markdown_ **тут**

</td>

...и будет норм.

#markdown
👍9👎1
This media is not supported in your browser
VIEW IN TELEGRAM
#прекрасное дня

Ни больше ни меньше. Прекрасное. Потому что я не могу это описать каким-то другим словом.

Я вообще сел другой пост писать, но наткнулся на эти карточки в моей твиттер-ленте.

Не, я понимаю, мода на 3D-карточки в лендингах давно прошла, все эти перевороты и шевеления мышкой… Это всё прошлое десятилетие.

Но ребят, я за всю свою карьеру и представить не мог, что можно настолько точно передать эффект переливающейся металлизированной карточки настолько точно манипулируя одним только положением фона! Это какое-то безумное умение сочитать mix-blend-mode, градиенты и SVG-фильтры.

Вам срочно надо зайти и посмотреть самим: https://deck-24abcd.netlify.app/

Ну и гитхаб, конечно: https://github.com/simeydotme/pokemon-cards-css

Крышу сносит, потрясающе. И без WebGL.

#css #3d #gradient
👍26🔥7😍3
#книга дня

Какой материал подъехал, вы не поверите!

https://www.patterns.dev/

Бесплатная, прекрасно иллюстрированная и снабжённая подробными примерами книга о паттернах проектирования и их применении в React-приложениях.

Просто огонь 🔥

Если кто не понял — книга бесплатная. Сумму оплаты можно выбрать на LeanPub, а можно в ноль.

#book #react #js #patterns
🔥32👍5👎1