#такое дня
Это дежурное напоминание о том, что если доступность вашего сайта зависит от геополитической ситуации в мире — вы что-то делаете не так.
Например, мне бы в голову не пришло выбрать домен в зоне .AF — Афганистан. А вот паре грандов в мире фронтенда, Вес Босу и Джейсону Ленсторфу так не показалось.
И этот день настал: регистраторы доменов не могут связаться с лицами, ответственными за доменную зону .AF.
Бизнес обоих зависел от сайтов, веселье! Зато крутая доменная зона, ага.
Думайте, котаны, где регистрируете проекты.
Это дежурное напоминание о том, что если доступность вашего сайта зависит от геополитической ситуации в мире — вы что-то делаете не так.
Например, мне бы в голову не пришло выбрать домен в зоне .AF — Афганистан. А вот паре грандов в мире фронтенда, Вес Босу и Джейсону Ленсторфу так не показалось.
И этот день настал: регистраторы доменов не могут связаться с лицами, ответственными за доменную зону .AF.
Бизнес обоих зависел от сайтов, веселье! Зато крутая доменная зона, ага.
Думайте, котаны, где регистрируете проекты.
😁14
#инструмент дня
Tailwind CSS при всех своих спорных моментах понравился многим людям. Кто-то не парится и пишет все атомы в классы, кто-то берёт компонентный подход и собирает компоненты на базе его DSL (domain-specific language), чтобы потом скомпилировать их в чистый CSS. Но, оказывается, есть и альтернативный подход: panda.
Что такое Panda CSS? Это CSS-in-JS движок, который собирает человекочитаемые атрибуты или пропсы компонентов в атомарный CSS-файл. Да, в файл, который создаётся в момент сборки, не в рантайме!
Есть три варианта описания стилей, мне больше всех импонирует компонентный подход, с пропсами.
В общем, такой атомарный CSS мы покупаем.
#css #react #cssinjs
Tailwind CSS при всех своих спорных моментах понравился многим людям. Кто-то не парится и пишет все атомы в классы, кто-то берёт компонентный подход и собирает компоненты на базе его DSL (domain-specific language), чтобы потом скомпилировать их в чистый CSS. Но, оказывается, есть и альтернативный подход: panda.
Что такое Panda CSS? Это CSS-in-JS движок, который собирает человекочитаемые атрибуты или пропсы компонентов в атомарный CSS-файл. Да, в файл, который создаётся в момент сборки, не в рантайме!
Есть три варианта описания стилей, мне больше всех импонирует компонентный подход, с пропсами.
В общем, такой атомарный CSS мы покупаем.
#css #react #cssinjs
🔥7👎6
#заметка дня
Что-то по Твиттеру опять пронеслась война тех, кто считает, что надо максимально ограничивать кандидату доступ информации во время собеседования, не пускать его в поиск Google, запрещать спрашивать у ChatGPT, не давать документацию и так далее. И тех, кто, в общем-то, считает наоборот.
Я пока не видел хороших и правильных примеров использования ChatGPT, если честно. Единственный известный мне случай подобного поведения кандидата вызывает нервный смех, потому что ему стоило честно сказать: "Не знаю". Он буквально понятия не имел даже как задать вопрос правильно, но с каменным лицом доказывал, что так и надо. Наверное, получился бы хороший продажник.
С документацией всё просто: естественно, надо разрешать доступ. Да даже в университетах разрешают пользоваться конспектами и справочниками. Ну, в нормальных...
Google... ситуация похожа на ChatGPT. Нужно внимательно смотреть, что и как человек гуглит. Как конкретно он формирует запрос и какие ссылки открывает.
Я лично нанимал фронта, который не стеснялся гуглить во время собеседования. Прям стримил экран и искал. Где-то для выжимки из доки, где-то чтобы посмотреть альтернативы алгоритму.
А потом чтобы показать скриншоты своего проекта, который был закрыт пейволлом!
А вот того, кто во время собеседования гуглил меня, мы не взяли...
А как у вас дела обстоят и опыт?
#work #interview #собеседование
Что-то по Твиттеру опять пронеслась война тех, кто считает, что надо максимально ограничивать кандидату доступ информации во время собеседования, не пускать его в поиск Google, запрещать спрашивать у ChatGPT, не давать документацию и так далее. И тех, кто, в общем-то, считает наоборот.
Я пока не видел хороших и правильных примеров использования ChatGPT, если честно. Единственный известный мне случай подобного поведения кандидата вызывает нервный смех, потому что ему стоило честно сказать: "Не знаю". Он буквально понятия не имел даже как задать вопрос правильно, но с каменным лицом доказывал, что так и надо. Наверное, получился бы хороший продажник.
С документацией всё просто: естественно, надо разрешать доступ. Да даже в университетах разрешают пользоваться конспектами и справочниками. Ну, в нормальных...
Google... ситуация похожа на ChatGPT. Нужно внимательно смотреть, что и как человек гуглит. Как конкретно он формирует запрос и какие ссылки открывает.
Я лично нанимал фронта, который не стеснялся гуглить во время собеседования. Прям стримил экран и искал. Где-то для выжимки из доки, где-то чтобы посмотреть альтернативы алгоритму.
А потом чтобы показать скриншоты своего проекта, который был закрыт пейволлом!
А вот того, кто во время собеседования гуглил меня, мы не взяли...
А как у вас дела обстоят и опыт?
#work #interview #собеседование
🔥9❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня
Что делать, если нужно срочно проверить какую-то гипотезу или сгенерировать набор строк, покадровую анимацию или что-нибудь ещё в таком духе?
Конечно же, открыть текстовый редактор и терминал, написать код на любимом языке и выполнить его в терминале любимой средой.
Например, что-то пошло не так и ваш любимый язык — JavaScript. Написали, выполнили
Впрочем, есть другие варианты. Консоль браузера, codepen.io, codesandbox.io, jsfiddle.com... Но давайте что-то локальное.
Первый вариант: RunJS (на видео). Бесплатная версия достаточна чтобы играть роль бесконечной удобной консоли. Платная включает npm, вкладки, автодополнение, ENV-переменные и проверку типов.
Второй вариант: расширение CodeRunner для VS Code. В отличие от RunJS поддерживает больше языков и встраивается прямо в редактор.
Третий, естественно: scratch files в IDE от JetBrains. Дебаггер, HTTP-запросы и среда выполнения из коробки.
Всем удачной проверки гипотез, котаны!
#js #runtime #coderunner
Что делать, если нужно срочно проверить какую-то гипотезу или сгенерировать набор строк, покадровую анимацию или что-нибудь ещё в таком духе?
Конечно же, открыть текстовый редактор и терминал, написать код на любимом языке и выполнить его в терминале любимой средой.
Например, что-то пошло не так и ваш любимый язык — JavaScript. Написали, выполнили
node index.js
и радуетесь выводу.Впрочем, есть другие варианты. Консоль браузера, codepen.io, codesandbox.io, jsfiddle.com... Но давайте что-то локальное.
Первый вариант: RunJS (на видео). Бесплатная версия достаточна чтобы играть роль бесконечной удобной консоли. Платная включает npm, вкладки, автодополнение, ENV-переменные и проверку типов.
Второй вариант: расширение CodeRunner для VS Code. В отличие от RunJS поддерживает больше языков и встраивается прямо в редактор.
Третий, естественно: scratch files в IDE от JetBrains. Дебаггер, HTTP-запросы и среда выполнения из коробки.
Всем удачной проверки гипотез, котаны!
#js #runtime #coderunner
👍5❤1
#такое дня
Когда-то давным давно, во времена первых браузеров и изобретения JavaScript, кто-то подумал, что было бы неплохо получать доступ к элементам в глобальном пространстве имён. Речь идёт в том числе об атрибуте
Вам все знакомы якоря вида #cheatsheet в адресной строке браузера. Да-да, хештеги не взялись из ниоткуда.
Так вот, пока браузеры пытались договориться (не пытались), что же должно быть индикатором доступа,
Что это значит? А то, что если вы добавили id элементу, то этот самый элемент стал доступен как переменная в глобальном пространстве ваших скриптов. Без объявления! Буквально вот так: https://codepen.io/alinaki/pen/zYLJVZN
Если кому интересно подробнее почитать, что куда и как попадает, спецификация ответит на этот вопрос: https://html.spec.whatwg.org/multipage/dom.html#dom-tree-accessors
Но если коротко: не надо это использовать если вы не на хакатоне. Приведёт к таким спагетти, что мало не покажется.
А вот знать надо.
#js #dom #node #бородач
Когда-то давным давно, во времена первых браузеров и изобретения JavaScript, кто-то подумал, что было бы неплохо получать доступ к элементам в глобальном пространстве имён. Речь идёт в том числе об атрибуте
name
для ссылок. Вам все знакомы якоря вида #cheatsheet в адресной строке браузера. Да-да, хештеги не взялись из ниоткуда.
Так вот, пока браузеры пытались договориться (не пытались), что же должно быть индикатором доступа,
name
или id
, вышло так, что IE сделал элементы с id
свойствами не только объекта document
, но и объекта window
. А остальные, естественно, скопировали. Что это значит? А то, что если вы добавили id элементу, то этот самый элемент стал доступен как переменная в глобальном пространстве ваших скриптов. Без объявления! Буквально вот так: https://codepen.io/alinaki/pen/zYLJVZN
Если кому интересно подробнее почитать, что куда и как попадает, спецификация ответит на этот вопрос: https://html.spec.whatwg.org/multipage/dom.html#dom-tree-accessors
Но если коротко: не надо это использовать если вы не на хакатоне. Приведёт к таким спагетти, что мало не покажется.
А вот знать надо.
#js #dom #node #бородач
🤯19👍9❤4
#история дня
27 лет назад вышел Internet Explorer 3.0.
13 августа 1996 года появилась версия для Windows, а 8 января 1997 — для Mac OS (да-да, она тогда не macOS называлась). Было же время...
Что же такого в нём примечательного?
Ну, помимо того, что это первый IE с легендарной вселяющей ужас во всех верстальщиков иконкой, это ещё и первый браузер вообще с поддержкой CSS.
В то время CSS использовался чтобы помечать посещенные ссылки фиолетовым.
Эта самая поддержка была даже по тем скромным меркам неполной. Microsoft, впрочем, надолго решила продолжать в том же духе.
А ещё была своя реализация JavaScript: JScript. И предлагалась поддержка VBScript... я свой первый веб-проект на нём писал, не особенно содрогаясь.
Работал браузер на 386 с Windows 3.1, требовал от 4 MB оперативной памяти, 12 MB — если хотелось Java 🤯
Посмотреть скриншоты и видео можно в музее веб-дизайна: https://www.webdesignmuseum.org/old-software/web-browsers/internet-explorer-3-0
Взгрустнулось, котаны? 😅
#css #ie #history
27 лет назад вышел Internet Explorer 3.0.
13 августа 1996 года появилась версия для Windows, а 8 января 1997 — для Mac OS (да-да, она тогда не macOS называлась). Было же время...
Что же такого в нём примечательного?
Ну, помимо того, что это первый IE с легендарной вселяющей ужас во всех верстальщиков иконкой, это ещё и первый браузер вообще с поддержкой CSS.
В то время CSS использовался чтобы помечать посещенные ссылки фиолетовым.
Эта самая поддержка была даже по тем скромным меркам неполной. Microsoft, впрочем, надолго решила продолжать в том же духе.
А ещё была своя реализация JavaScript: JScript. И предлагалась поддержка VBScript... я свой первый веб-проект на нём писал, не особенно содрогаясь.
Работал браузер на 386 с Windows 3.1, требовал от 4 MB оперативной памяти, 12 MB — если хотелось Java 🤯
Посмотреть скриншоты и видео можно в музее веб-дизайна: https://www.webdesignmuseum.org/old-software/web-browsers/internet-explorer-3-0
Взгрустнулось, котаны? 😅
#css #ie #history
❤13👍4
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня
Устроим перепись олдов на канале? Кто ЛогоМиры помнит?
Мой путь в программирование точно с них начинался. Ещё с Муравья, но он был гораздо сложнее.
Кэсси Эванс придумала, что ЛогоМиры забавно ложатся на правила отрисовки SVG-кривых и сообразила сегодняшний кодпен дня.
Так что если вам интересно, как происходит отрисовка SVG — а на самом деле, там реально очень всё похоже на команды той самой черепашки — милости просим: https://codepen.io/cassie-codes/pen/ZEvNBmX
#svg #logo #бородач
Устроим перепись олдов на канале? Кто ЛогоМиры помнит?
Мой путь в программирование точно с них начинался. Ещё с Муравья, но он был гораздо сложнее.
Кэсси Эванс придумала, что ЛогоМиры забавно ложатся на правила отрисовки SVG-кривых и сообразила сегодняшний кодпен дня.
Так что если вам интересно, как происходит отрисовка SVG — а на самом деле, там реально очень всё похоже на команды той самой черепашки — милости просим: https://codepen.io/cassie-codes/pen/ZEvNBmX
#svg #logo #бородач
👍15❤5🤩1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Тут оказалось, что в Chrome DevTools встроен редактор кривых Безье для переходов aka transition!
Можно добавить точку, перетащить её и сразу посмотреть результат. Ну или выбрать из готового набора:
А в версии 116 добавят линейные функции переходов, linear(), о которых нам ещё только предстоит поговорить: https://developer.chrome.com/articles/css-linear-easing-function/
#devtools #css #linear #curve
Тут оказалось, что в Chrome DevTools встроен редактор кривых Безье для переходов aka transition!
Можно добавить точку, перетащить её и сразу посмотреть результат. Ну или выбрать из готового набора:
linear
, elastic
, bounce
, emphasized
.А в версии 116 добавят линейные функции переходов, linear(), о которых нам ещё только предстоит поговорить: https://developer.chrome.com/articles/css-linear-easing-function/
#devtools #css #linear #curve
🤩19👍6
#статья дня
В период пандемии средства для совместной работы пережили самый настоящий бум. Особенно взлетели видеоконференции и вайтборды (ну, доски с заметками, только онлайн). Успех того же Miro известен всем.
И вот Atlassian, которая имеет в своем арсенале почти все необходимое для организации проектной работы, тоже захотела удержать людей у себя, повысив привлекательность пакета. И выпустила Confluence whiteboards.
Но нас все же интересует не бизнес сторона вопроса, а технологические решения.
И тут нам очень повезло! Они выкатили в своем технологе огромную статью с описанием технических решений своей доски. Упор делали на производительность, потому остановились в итоге на чистом WebGL. Но вот что интересно: React+DOM не то чтобы критично медленнее, вполне себе конкурентноспособно.
В общем, это мы читаем: https://www.atlassian.com/engineering/rendering-like-butter-a-confluence-whiteboards-story
В статье полно ссылок на открытые проекты и концепции вообще. Крайне рекомендую.
#webgl #whiteboard
В период пандемии средства для совместной работы пережили самый настоящий бум. Особенно взлетели видеоконференции и вайтборды (ну, доски с заметками, только онлайн). Успех того же Miro известен всем.
И вот Atlassian, которая имеет в своем арсенале почти все необходимое для организации проектной работы, тоже захотела удержать людей у себя, повысив привлекательность пакета. И выпустила Confluence whiteboards.
Но нас все же интересует не бизнес сторона вопроса, а технологические решения.
И тут нам очень повезло! Они выкатили в своем технологе огромную статью с описанием технических решений своей доски. Упор делали на производительность, потому остановились в итоге на чистом WebGL. Но вот что интересно: React+DOM не то чтобы критично медленнее, вполне себе конкурентноспособно.
В общем, это мы читаем: https://www.atlassian.com/engineering/rendering-like-butter-a-confluence-whiteboards-story
В статье полно ссылок на открытые проекты и концепции вообще. Крайне рекомендую.
#webgl #whiteboard
👍10❤4🤩1
#такое дня
Я сделяль!
Не в первый раз, впрочем :) Пять лет назад в Хуахине: https://t.me/htmlshit/106
О том, что буквы должны были выйти за пределы брелка, говорят не только лишь все...
Я сделяль!
Не в первый раз, впрочем :) Пять лет назад в Хуахине: https://t.me/htmlshit/106
О том, что буквы должны были выйти за пределы брелка, говорят не только лишь все...
👍19❤4🤩2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
#библиотека дня
Мой ТВ-пульт на Flutter уже, в принципе, умеет всё то, что необходимо мне. Так что скоро ждите обновлений в постах!
Но, как обычно, после проделывания 80% работы, остаётся ещё 80%. Это простая математика.
Вот частью этой работы, да и на самом деле просто чтобы научиться в анимации, является имитация перегруппировки иконок приложений с iOS. Ну, знаете, когда долго жмёшь на рабочий стол, иконки начинают дрожать, можно удалять или перетаскивать.
Пробежавшись по библиотекам анимаций во Flutter я обнаружил, что некоторые из них не стесняются просто брать и копировать CSS-наборы. А почему нет?
И вот вашему вниманию один из таких наборов: CSShake.
https://elrumordelaluz.github.io/csshake/
И копирующий его пакет Flutter: https://pub.dev/packages/flutter_shake_animated
Не совсем то, что мне нужно, разве что API подсмотреть. Но, может, кому-нибудь такой угар пригодится 😝
#css #animation
Мой ТВ-пульт на Flutter уже, в принципе, умеет всё то, что необходимо мне. Так что скоро ждите обновлений в постах!
Но, как обычно, после проделывания 80% работы, остаётся ещё 80%. Это простая математика.
Вот частью этой работы, да и на самом деле просто чтобы научиться в анимации, является имитация перегруппировки иконок приложений с iOS. Ну, знаете, когда долго жмёшь на рабочий стол, иконки начинают дрожать, можно удалять или перетаскивать.
Пробежавшись по библиотекам анимаций во Flutter я обнаружил, что некоторые из них не стесняются просто брать и копировать CSS-наборы. А почему нет?
И вот вашему вниманию один из таких наборов: CSShake.
https://elrumordelaluz.github.io/csshake/
И копирующий его пакет Flutter: https://pub.dev/packages/flutter_shake_animated
Не совсем то, что мне нужно, разве что API подсмотреть. Но, может, кому-нибудь такой угар пригодится 😝
#css #animation
👍7🤩2❤1
#баг дня
Этот баг довольно сложно сходу осознать, если вёрстка для тебя всё ещё магия.
Итак: в Chrome не поддерживаются такие правила для clip-path как: margin-box, border-box, padding-box и content-box. В Firefox и Safari всё ок. Пример: https://codepen.io/thebabydino/pen/yLGyBrw
Ссылка на трекер: https://chromium-review.googlesource.com/c/chromium/src/+/4784067
Баг исправлен, но задерживается из-за рефакторинга. И сейчас в состоянии конфликта слияния.
А теперь по-русски 🙂
В потоке размер элементов считается довольно сложно. Элементы можно представить как вложенные прямоугольники: отступы — margin, границы — border, поля — padding и содержимое — content — которое ограничено или типографически, или теми же прямоугольниками.
Потом веселье со схлопывающимися отступами или же включением границ в размеры объекта (box-sizing)... зависит от режима потока.
Зачем вам может понадобиться подобное — я не знаю. Но CSS-художникам это очень и очень мешает 🙂
Впрочем, исправление не за горами.
#clippath #css
Этот баг довольно сложно сходу осознать, если вёрстка для тебя всё ещё магия.
Итак: в Chrome не поддерживаются такие правила для clip-path как: margin-box, border-box, padding-box и content-box. В Firefox и Safari всё ок. Пример: https://codepen.io/thebabydino/pen/yLGyBrw
Ссылка на трекер: https://chromium-review.googlesource.com/c/chromium/src/+/4784067
Баг исправлен, но задерживается из-за рефакторинга. И сейчас в состоянии конфликта слияния.
А теперь по-русски 🙂
В потоке размер элементов считается довольно сложно. Элементы можно представить как вложенные прямоугольники: отступы — margin, границы — border, поля — padding и содержимое — content — которое ограничено или типографически, или теми же прямоугольниками.
Потом веселье со схлопывающимися отступами или же включением границ в размеры объекта (box-sizing)... зависит от режима потока.
Зачем вам может понадобиться подобное — я не знаю. Но CSS-художникам это очень и очень мешает 🙂
Впрочем, исправление не за горами.
#clippath #css
❤1
#библиотека дня
А что если бы был такой UI-фреймворк, чтобы можно было запилить браузерку про космос и прочий киберпанк?
Оказывается, такое есть! Называется Arwes: https://arwes.dev/
Выглядит очень круто. У меня ассоциируется с чем-то из начала нулевых, но в хорошем смысле. Просто все ассоциации оттуда: StarCraft, Warfare Inc., Homeworld...
Учитывая, что во многих, даже AAA, играх интерфейс управления рисуется с помощью веб-технологий, создатели Arwes совсем не впустую работают 🙂
Страница примеров всё ещё в разработке, зато их песочница вполне себе доступна и очень крута: https://arwes.dev/play
Крайне рекомендую прокликать, вдохновляет.
#react #ui #future #games
А что если бы был такой UI-фреймворк, чтобы можно было запилить браузерку про космос и прочий киберпанк?
Оказывается, такое есть! Называется Arwes: https://arwes.dev/
Выглядит очень круто. У меня ассоциируется с чем-то из начала нулевых, но в хорошем смысле. Просто все ассоциации оттуда: StarCraft, Warfare Inc., Homeworld...
Учитывая, что во многих, даже AAA, играх интерфейс управления рисуется с помощью веб-технологий, создатели Arwes совсем не впустую работают 🙂
Страница примеров всё ещё в разработке, зато их песочница вполне себе доступна и очень крута: https://arwes.dev/play
Крайне рекомендую прокликать, вдохновляет.
#react #ui #future #games
👍11🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Хотите самый простой способ анимирования появления/исчезания элементов? Их есть у меня!
Правда, как всегда, пока только в Chrome. Но требующиеся изменения настолько мелкие, что это вообще неважно.
Итак, встречайте: View Transitions API. Вот даже ссылочка на MDN: https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API
1. Задали имя вашего слоя:
2. Вынесли добавление HTML в отдельную функцию aka
3. Вызвали её коллбеком в
5. Вы прекрасны!
Вот накидал вам быстрый пример: https://codepen.io/alinaki/pen/VwqLpvX
Основан на вот этих двух: раз и два.
Самое классное, оно просто работает как работало во всех остальных браузерах, потому что никакой дополнительной обработки нод не требуется. Да, есть забавные баги, но это временно.
Но, если честно, от чтения полного описания API у меня слегка заболела голова, поэтому чуть более сложные примеры последуют позже.
#css #view #transition
Хотите самый простой способ анимирования появления/исчезания элементов? Их есть у меня!
Правда, как всегда, пока только в Chrome. Но требующиеся изменения настолько мелкие, что это вообще неважно.
Итак, встречайте: View Transitions API. Вот даже ссылочка на MDN: https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API
1. Задали имя вашего слоя:
style="view-transition-name: unique-name"
2. Вынесли добавление HTML в отдельную функцию aka
mutate()
3. Вызвали её коллбеком в
document.startViewTransition(() => mutate())
4. ...5. Вы прекрасны!
Вот накидал вам быстрый пример: https://codepen.io/alinaki/pen/VwqLpvX
Основан на вот этих двух: раз и два.
Самое классное, оно просто работает как работало во всех остальных браузерах, потому что никакой дополнительной обработки нод не требуется. Да, есть забавные баги, но это временно.
Но, если честно, от чтения полного описания API у меня слегка заболела голова, поэтому чуть более сложные примеры последуют позже.
#css #view #transition
👍9🤩5❤2
This media is not supported in your browser
VIEW IN TELEGRAM
#статья дня
Итак, ты решил анимировать скрытие элемента aka
И получил в щи: элемент моментально скрылся и всё тут. Потому что
И начинается: игры с таймаутами, попытки в анимацию по ключевым кадрам, transitionend, я уже молчу о каком-то дичайшем количестве кода под React просто чтобы плавно убрать элемент с глаз долой и с DOMа вон.
Но мы дождались подвижек. Что принёс нам Chrome 116? Вот что: анимируемые display и content-visibility.
Пример: https://codepen.io/web-dot-dev/pen/qBQeojK
Ну и статья, в которой, помимо прочего, описывается ещё много новых плюшек: https://developer.chrome.com/blog/entry-exit-animations/
Например,
Хорошие времена нас ждут. Пусть только Safari и Firefox подтянутся 🙂
#css #animation
Итак, ты решил анимировать скрытие элемента aka
display: none
...
.box {
background: goldenrod;
width: 300px;
height: 300px;
margin: 30px auto;
transition: all 2s linear;
display: block;
}
.hidden {
display: none;
opacity: 0;
}
И получил в щи: элемент моментально скрылся и всё тут. Потому что
display: none
не анимируется.И начинается: игры с таймаутами, попытки в анимацию по ключевым кадрам, transitionend, я уже молчу о каком-то дичайшем количестве кода под React просто чтобы плавно убрать элемент с глаз долой и с DOMа вон.
Но мы дождались подвижек. Что принёс нам Chrome 116? Вот что: анимируемые display и content-visibility.
Пример: https://codepen.io/web-dot-dev/pen/qBQeojK
Ну и статья, в которой, помимо прочего, описывается ещё много новых плюшек: https://developer.chrome.com/blog/entry-exit-animations/
Например,
@starting-style
для описания поведения элемента при вставке в DOM.Хорошие времена нас ждут. Пусть только Safari и Firefox подтянутся 🙂
#css #animation
👍27🤩5
#заметка дня
Что-то я оборзел, пять дней без постов. Зато вы не отписываетесь. Устроил себе длинные выходные.
Знаете, чего я ждал? Выхода Firefox 117, чтобы в очередной раз поворчать!
Итак, начиная этой версии Firefox поддерживает нативный CSS nesting aka вложенность. Да-да, как практически любой из препроцессоров. То есть:
Амперсанд (&) здесь ссылка на родителя, которую, очевидно, можно использовать где угодно. Но нельзя кешировать :(
А теперь, внимание, клоунада! 🤡
Firefox 117 поддерживает последнюю версию спецификации, в то время как текущие Chrome и Safari — предыдущую. Что это значит?
То, что клятый амперсанд надо ставить даже в определении вложенных селекторов, а не только в композиции. Но не надо перед селекторами потомков и соседей — это >, + и ~:
Потому без магии PostCSS опять не обойтись, используйте плагин postcss-nesting. Или оставайтесь на SCSS.
Ну и на закуску, моё мнение о нестинге вообще: https://t.me/htmlshit/697 Не то чтоб вы его просили, но я такой.
#css #nesting
Что-то я оборзел, пять дней без постов. Зато вы не отписываетесь. Устроил себе длинные выходные.
Знаете, чего я ждал? Выхода Firefox 117, чтобы в очередной раз поворчать!
Итак, начиная этой версии Firefox поддерживает нативный CSS nesting aka вложенность. Да-да, как практически любой из препроцессоров. То есть:
.nesting {
color: hotpink;
> .is {
color: rebeccapurple;
.awesome {
color: deeppink;
}
}
&.alt {
color: cyan;
}
}
Амперсанд (&) здесь ссылка на родителя, которую, очевидно, можно использовать где угодно. Но нельзя кешировать :(
А теперь, внимание, клоунада! 🤡
Firefox 117 поддерживает последнюю версию спецификации, в то время как текущие Chrome и Safari — предыдущую. Что это значит?
То, что клятый амперсанд надо ставить даже в определении вложенных селекторов, а не только в композиции. Но не надо перед селекторами потомков и соседей — это >, + и ~:
.nesting {
color: hotpink;
> .is {
color: rebeccapurple;
& .awesome {
color: deeppink;
}
}
&.alt {
color: cyan;
}
}
Потому без магии PostCSS опять не обойтись, используйте плагин postcss-nesting. Или оставайтесь на SCSS.
Ну и на закуску, моё мнение о нестинге вообще: https://t.me/htmlshit/697 Не то чтоб вы его просили, но я такой.
#css #nesting
👍14
#инструмент дня
Я когда готовил пример для поста про View Transition API, обратил внимание, как написан один из CodePen'ов, на которые я опирался. Конкретно, вот этот: https://codepen.io/argyleink/pen/GRPRJyM
Что же с ним не так? Да вроде всё так, но он импортирует нечто под названием open-props и потом использует какие-то переменные в коде...
Итак, оказалось, это — прости, господи — субатомные стили под названием Open Props: https://open-props.style/
Как можно догадаться, названы они так в пику атомным стилям типа Tailwind CSS, Assembler CSS, Tachyons или Windi CSS. Или любой другой попытке бакендеров сделать свой UI-кит.
Вот только вышеописанные наборы оперируют классами, а Open Props — переменными. Они предлагают интересный набор из цветов, размерностей, анимаций, теней и даже градиентов. Особенно меня порадовали типографические шлюзы aka clamp (Fluid sizes в терминологии фреймворка).
Получается что-то такое:
Это позволяет добиться максимальной гибкости, сохраняя общее единообразие и переиспользуя известные размеры, но не классы. И так можно собрать уже что угодно.
В общем, интересный подход. Точно имеет право на жизнь.
#css #var #variables #ui #kit
Я когда готовил пример для поста про View Transition API, обратил внимание, как написан один из CodePen'ов, на которые я опирался. Конкретно, вот этот: https://codepen.io/argyleink/pen/GRPRJyM
Что же с ним не так? Да вроде всё так, но он импортирует нечто под названием open-props и потом использует какие-то переменные в коде...
Итак, оказалось, это — прости, господи — субатомные стили под названием Open Props: https://open-props.style/
Как можно догадаться, названы они так в пику атомным стилям типа Tailwind CSS, Assembler CSS, Tachyons или Windi CSS. Или любой другой попытке бакендеров сделать свой UI-кит.
Вот только вышеописанные наборы оперируют классами, а Open Props — переменными. Они предлагают интересный набор из цветов, размерностей, анимаций, теней и даже градиентов. Особенно меня порадовали типографические шлюзы aka clamp (Fluid sizes в терминологии фреймворка).
Получается что-то такое:
.card {
border-radius: var(--radius-2);
padding: var(--size-fluid-3);
box-shadow: var(--shadow-2);
&:hover {
box-shadow: var(--shadow-3);
}
@media (--motionOK) {
animation: var(--animation-fade-in);
}
}
Это позволяет добиться максимальной гибкости, сохраняя общее единообразие и переиспользуя известные размеры, но не классы. И так можно собрать уже что угодно.
В общем, интересный подход. Точно имеет право на жизнь.
#css #var #variables #ui #kit
👍14🤡6❤1
#ссылка дня
Я не удивлюсь, если в комментариях напишут: "Ну ты чо вообще, все это знают", но тем не менее.
У Google помимо прекрасных блогов разработчиков (того же Chrome) и весьма неплохой документации на их проекты имеется и простая обучающая платформа — Code Labs.
https://codelabs.developers.google.com/
Повторю, это не тайна, но я не знал, что материалов настолько много. От дизайна и веба до Flutter и ИИ. Ну и всеми любимый Python, куда ж без него.
Прошел несколько примеров по Flutter. Да, это в основном "пиши вот так", но на то оно и простая платформа. На некий путь вполне может навести, руку набить. Ну и бесплатно при этом.
Моя рекомендация, в общем.
#google #dev #education #бородач
Я не удивлюсь, если в комментариях напишут: "Ну ты чо вообще, все это знают", но тем не менее.
У Google помимо прекрасных блогов разработчиков (того же Chrome) и весьма неплохой документации на их проекты имеется и простая обучающая платформа — Code Labs.
https://codelabs.developers.google.com/
Повторю, это не тайна, но я не знал, что материалов настолько много. От дизайна и веба до Flutter и ИИ. Ну и всеми любимый Python, куда ж без него.
Прошел несколько примеров по Flutter. Да, это в основном "пиши вот так", но на то оно и простая платформа. На некий путь вполне может навести, руку набить. Ну и бесплатно при этом.
Моя рекомендация, в общем.
#google #dev #education #бородач
👍36
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня
Какой самый приятный момент ведения канала по веб-разработке? inb4 Когда заказывают рекламу
Конечно же когда кто-то из подписчиков присылает свои измышления и эксперименты! Как будто у нас тут с вами настоящее сообщество!
Итак, сегодня — очередная вариация на тему из игры World of Goo. Жидкие перекаты 🙂
Предыдущий пост был вот: https://t.me/htmlshit/1867
Основан эффект на размытии и последующем повышении контраста до уровней, когда края снова становятся чёткими.
Итак, встречайте: https://codepen.io/mdss/pen/qBLZeya?editors=1100
Автор честно признаётся, что анимация украдена с https://maps.mel.fm/ Вот только у них там SVG. Пример с SVG можете увидеть по ссылке на чат или на сайте.
В общем, вдохновлять людей — приятно. Рекомендую!
#css #goo #filter #svg
Какой самый приятный момент ведения канала по веб-разработке? inb4 Когда заказывают рекламу
Конечно же когда кто-то из подписчиков присылает свои измышления и эксперименты! Как будто у нас тут с вами настоящее сообщество!
Итак, сегодня — очередная вариация на тему из игры World of Goo. Жидкие перекаты 🙂
Предыдущий пост был вот: https://t.me/htmlshit/1867
Основан эффект на размытии и последующем повышении контраста до уровней, когда края снова становятся чёткими.
Итак, встречайте: https://codepen.io/mdss/pen/qBLZeya?editors=1100
Автор честно признаётся, что анимация украдена с https://maps.mel.fm/ Вот только у них там SVG. Пример с SVG можете увидеть по ссылке на чат или на сайте.
В общем, вдохновлять людей — приятно. Рекомендую!
#css #goo #filter #svg
👍9❤1