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

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

Чат: https://t.me/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Ну что, кажется, настало то время, когда для стилизации радиокнопок и чекбоксов не нужно больше изгаляться с input:checked+i. Это освобождает мозг и руки для более приятных вещей.

Итак, смотрим на пример от Джона Кантнера: https://codepen.io/alinaki/pen/ExMXbqz

1. Для начала, обнуляем все браузерные стили и предположения браузера об внешнем виде радиокнопок вообще через appearance: none.

2. Я вам этого не говорил, но, технически, уже давно можно на поля ввода накладывать псевдоэлементы. Но не на select. Я всё хочу написать большой пост про реализацию select, пока вот так.

Благодаря этой возможности, собственно, можно стилизовать чекбокс как душе угодно: ::before, ::after, :checked::before, :checked::after... В целом, лично я бы обошёлся радиальным градиентом и одним псевдоэлементом.

3. Освободившиеся ресурсы мозга и тот факт, что теперь все элементы красиво вложены в label (как минимум, не нужны for и id), можно отправить на реализацию разных эффектов.

Например, проверить, есть ли лейбл с выделенным чекбоксом и подвинуть к нему рамку:


label:nth-of-type(2):has(input[type="radio"]:checked) ~ .selection {
transform: translateY(100%);
}


Обратите внимание, рамка — отдельный элемент, к ней обращаемся через селектор низлежащих соседей ~.

Не знаю, что меня больше впечатляет. Псевдоэлементы на полях ввода или :has.

И да, поддерживается везде.

#css #has #appearance #бородач
#заметка дня

Вчера в комментариях к посту возник логичный вопрос: «Почему фишкой дня назначена буквально строка из документации?»

Спрашивали — отвечаем.

Формат Telegram плохо подходит для лонгридов. Иногда это даже немного удручает: переходов по ссылкам на, на мой взгляд, интересные примеры весьма немного.

Некоторые люди даже отписываются, если видят, что пост в телеге — лишь тизер.

Ну, шутка ли, у поста с каким-нибудь #codepen дня может набраться 3-4 тысячи просмотров за всё время, а переходов по ссылке — ну сотня. Если повезёт. Впрочем, эта ситуация касается не только Telegram и не только меня, тут удивления нет.

Наибольшее число переходов набирают красивые картинки градиентов. А вы говорите, документация...

Теперь к фишкам дня. Мне бы хотелось сказать что-то пафосное вроде: «Мусор одного человека — сокровище другого», — вот только короткие сниппеты кода совсем не мусор. И я за много лет опыта повидал их достаточное количество.

И иногда сидишь и думаешь: «Так, наверное, все уже это знают».

Нет, не все.

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

Основная фишка фишек — быть bite sized. На один укус. Чтобы никуда не ходить.

Но обратная связь — очень необходима. Реакции, комментарии — не стесняйтесь.

Раскачаем этот чат, котаны 🙂
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Можно ли при помощи SVG-фильтров, не прибегая к помощи теней, экструдировать текст?

Экструзия — процесс выдавливания, как в 3D-принтере.

И да, можно! Как всегда, Ана Тюдор с прекрасным решением. На сей раз, кстати, у решения нет багов на HDR-экранах 😅 Всё отображается как надо.

Кодпен: https://codepen.io/thebabydino/pen/yLmxePV

Выглядит потрясно. Матрица экструзии там отдельная песня, конечно.

#svg #filter
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Итак, вашему вниманию самый популярный в октябре кодпен небезызвестной Аны Тюдор.

Переливающийся всеми цветами радуги светящийся текст!

Вот: https://codepen.io/thebabydino/pen/rNPOpJK

Реализовано на SVG-фильтре gaussian blur: фон обрезается по контенту текста через -webkit-background-clip: text и размывается.

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

#css #svg #filter #бородач
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

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

Давайте я вам две новогодние ёлочки, а вы мне всё простите?

🎄 Ксения Кондрашова подарила нам интерактивную ёлку на Three.js, вынесена в иллюстрацию: https://codepen.io/ksenia-k/pen/yyBYVyd

🎄 А Ана Тюдор — на чистом CSS: https://codepen.io/thebabydino/pen/bGwYVOm

На стороне какой ёлки вы?

#3d #threejs
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#codepen дня

Тут нужно краткое предисловие.

Где-то с неделю назад, Google опубликовали исходный код операционной системы умных часов Pebble.

Вы, наверное, вряд ли помните о них, но это, собственно, были первые умные часы. Они и проложили дорогу всем остальным, начавшись просто как проект на Kickstarter.

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

Дело в том, что их основатель и уговорил Google открыть исходный код, чтобы возродить те самые часы. Мотивация проста: писать софт — долго и сложно, дайте хоть что-то.

И он сделал забавный сайт — https://repebble.com/ — на котором изложил свою философию.

А меня, в свою очередь, чуток порвало с анимации выключения телевизора, которая происходит при нажатии на No. Порвало настолько, что я решил для вас её повторить 📺

Она простая и при этом очень крутая, никаких шейдеров и прочего: https://codepen.io/alinaki/pen/vEBoZOz?editors=0110

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

Хорошей пятницы, котаны!

#css #animation #animationend
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Давно не было рубрики, потому что это ну как-то ну слишком лениво.

Но вы только посмотрите на эту кнопку от Петра Кнолла: https://codepen.io/Petr-Knoll/pen/QwWLZdx


Если это не приближает нас к пику глассморфизма — то я не знаю, что приближает :)

#css #glassmorphism
#codepen дня

Как сделать элементы интерфейса... зернистыми? Напоминающими шершавую структуру, например, пластика? Или плёнки...

Для достижения эффекта можно воспользоваться SVG-фильтром! Например, от Аны Тюдор: https://codepen.io/thebabydino/pen/MWBNrZq

К сожалению, на Safari съехали буквы, но сути дела не меняет :)

#svg #grainy #бородач
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Сайт по продаже пончиков должен быть пончиком и точка!

Пруф: https://codepen.io/narrowdesign/pen/ZYErvWv?editors=1000

Извините, я просто никак больше не могу это прокомментировать.

#threejs #3d
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Кому в детстве нравилось крутить в руках всякие цепочки и кисточки для велосипедов?

Сегодня ваш шанс вспомнить то самое чувство!

Очередной прекрасный пример анимации по скроллу от Stijn Van Minnebruggen (я хз как произнести, это что-то из Евротура)

Тут: https://codepen.io/donotfold/pen/ZYYYJRV

Работает в Chrome и Safari TP.

Кто переведёт на GSAP? Он, кстати, недавно официально бесплатным стал, даже для коммерческого использования.

#css #scroll #animation
Media is too big
VIEW IN TELEGRAM
#статья дня

Я знаю, знаю — вас всех уже достали различные реализации Doom.

Тут дум, там дум, а на байкале не дум.

И точно так же я прекрасно знаю, как вам надоели все эти #codepen'ы дня в стиле «вы только посмотрите, Мона Лиза на одном div'е», которые являются эксплуатацией линейных и радиальных градиентов и часто вообще делаются через формулы в Excel: группы пикселей конвертируются в колор-стопы градиентов.

Формулы в экселе... погодите. Если что-то можно описать формулой, значит, это что-то можно и автоматизировать?

Сюрприз-сюрприз! Можно. И вот тут начинается абсолютная дичь. Подбираемся к статье дня!

Итак, есть такой проект: WASM DOOM. Это просто движок, на его выходе — canvas. И что делает безумный автор статьи дня?

Правильно, рендерит холст в CSS-градиенты! Вот, собственно, и статья: https://dev.to/grahamthedev/doomrendered-using-a-single-div-and-css-1fal?

А вот прямая ссылка «на поиграть»: https://grahamthe.dev/demos/doom/

Кажется, на этом разговоры о Моне Лизе в одном DIV'е можно заканчивать.

#css #doom
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 #бородач
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня

Просыпайся, страна! Minecraft подвезли...

...на CSS!

Подвезли-то давно, но завирусилось только сейчас: https://benjaminaster.com/css-minecraft/

CodePen: https://codepen.io/Benjamin_Aster/pen/gOKwpOd
GitHub: https://github.com/BenjaminAster/CSS-Minecraft

Я не так давно посмотрел серию видео о разработке Minecraft для 8- и 16-битных консолей и даже для калькуляторов, но даже после этого — версия на HTML+CSS повергла в культурный шок.

Скриптов на странице, кстати, нет. Даже поворот — это сочетание псевдокласса :active и animation-play-state!

Дичь совершенная.

#css #minecraft