Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
#CSS
🖼️ Animation of the appearance of an element without complex structures
Example on CodePen: https://codepen.io/alinaki/pen/XWXORzM
Example on CodePen: https://codepen.io/alinaki/pen/XWXORzM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤔3
#Angular
🖼️ Angular DI infographic
https://christiankohler.net/angular-dependency-injection-infographic-updated
https://christiankohler.net/angular-dependency-injection-infographic-updated
Please open Telegram to view this post
VIEW IN TELEGRAM
#HTML
🖼️ Абсолютная защита от нежелательных взаимодействий
Что вы делаете, когда вам необходимо запретить взаимодействие с элементом?
Верно, добавляете свойство pointer-events! Но здесь есть тонкость. Вы правы только наполовину, поскольку существует ещё клавиатурный фокус и пользователи со скринридерами.
К счастью, есть решение: супер-геройский атрибут - inert
1. Останавливает обработку по клику
2. Лишает элемент фокуса
3. Исключает элемент из дерева доступности (a11y tree)
Ссылочка на документацию MDN
Что вы делаете, когда вам необходимо запретить взаимодействие с элементом?
Верно, добавляете свойство pointer-events! Но здесь есть тонкость. Вы правы только наполовину, поскольку существует ещё клавиатурный фокус и пользователи со скринридерами.
К счастью, есть решение: супер-геройский атрибут - inert
1. Останавливает обработку по клику
2. Лишает элемент фокуса
3. Исключает элемент из дерева доступности (a11y tree)
Ссылочка на документацию MDN
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
#HTML
🖼️ Полезный атрибут который не используют
Как подсказать пользователям мобильного устройства, что произойдёт при отправке формы?
Можно на дизайне показать, скажет кто-то.
Можно конечно! Но не всегда удобно.
Либо лишних действий добавим, либо полезное место заберем, а у нас еще и клавиатура часть экрана занимает.
Давайте тогда ее и использовать!
Атрибут enterkeyhint! Адаптирует кнопку enter на мобильной клавиатуре, меняя ее текст или иконку. Удобно? - удобно!
Примеры на скриншоте, документация по ссылке.
Как подсказать пользователям мобильного устройства, что произойдёт при отправке формы?
Можно на дизайне показать, скажет кто-то.
Можно конечно! Но не всегда удобно.
Либо лишних действий добавим, либо полезное место заберем, а у нас еще и клавиатура часть экрана занимает.
Давайте тогда ее и использовать!
Атрибут enterkeyhint! Адаптирует кнопку enter на мобильной клавиатуре, меняя ее текст или иконку. Удобно? - удобно!
Примеры на скриншоте, документация по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👾3👍2
#WebAccessibility #DevTools
> 300 миллионов человек страдают дальтонизмом
Когда-нибудь задумывались о том, как ваш сайт выглядит для людей с нарушениями зрения?
Чтобы легче следить за доступностью, не придется качать дополнительные программы.
В Chrome DevTools для этого есть много инструментов, один из них: "Emulate vision deficiencies", позволяющий проверить, как ваш контент воспринимается людьми с разной степенью цветовой слепоты.
> 300 миллионов человек страдают дальтонизмом
Когда-нибудь задумывались о том, как ваш сайт выглядит для людей с нарушениями зрения?
Чтобы легче следить за доступностью, не придется качать дополнительные программы.
В Chrome DevTools для этого есть много инструментов, один из них: "Emulate vision deficiencies", позволяющий проверить, как ваш контент воспринимается людьми с разной степенью цветовой слепоты.
🔥4🤔2👾1
#DevTips
🚀 Открываем localhost на телефоне
(и тестируем мобилку без деплоя)
На самом деле, все просто:
- подключаем телефон и компьютер к одной Wi-Fi сети
- открываем терминал и вводим команду ifconfig | grep "inet ". (ipconfig для windows)
- ищем строку начинающуюся с "inet " и содержащую IP-адрес формата "192.168.x.x".
- запускаем приложение используя этот хост (пример для angular cli: ng serve --host 192.168.x.x --port 4200)
- заходим в мобильный браузер и в адресной строке вводим этот IP-адрес с нужным портом (192.168.x.x:4200)
Всë!
🚀 Открываем localhost на телефоне
(и тестируем мобилку без деплоя)
На самом деле, все просто:
- подключаем телефон и компьютер к одной Wi-Fi сети
- открываем терминал и вводим команду ifconfig | grep "inet ". (ipconfig для windows)
- ищем строку начинающуюся с "inet " и содержащую IP-адрес формата "192.168.x.x".
- запускаем приложение используя этот хост (пример для angular cli: ng serve --host 192.168.x.x --port 4200)
- заходим в мобильный браузер и в адресной строке вводим этот IP-адрес с нужным портом (192.168.x.x:4200)
Всë!
🔥7👍1🤔1
#junior #css #grid
🔤 🔤 🔤 🔤 на лягушках
🔤 🔤 🔤 🔤 на морковках
Все уже давненько внедряют игровые механики в свои продукты и решения, в том числе EdTech направление. И я полностью поддерживаю эту тенденцию.
Освоить Flex и Grid, в игровой форме, позволяют продукты компании Codepip. Отличная возможность потренировать базу за 52 уровня.
- Grid Garden🥕
- FlexBox Froggy🐸
🤓 Бесплатно и интересно
Все уже давненько внедряют игровые механики в свои продукты и решения, в том числе EdTech направление. И я полностью поддерживаю эту тенденцию.
Освоить Flex и Grid, в игровой форме, позволяют продукты компании Codepip. Отличная возможность потренировать базу за 52 уровня.
- Grid Garden
- FlexBox Froggy
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👾3😱1
#cookie #browser
LocalStorage, SessionStorage и IndexedDB - что мы теряем при отказе от Cookie? 🍪
Смотрели когда-нибудь, что произойдет с вашим сайтом или веб-приложением если пользователь отключит куки?
Не паникуйте сразу, ошибки бывают у всех, даже у ребят с MDN.
А получим мы следующее веселье со скриншота, еще и бесконечные загрузки или белые экраны в придачу.
Суть проста: не забываем оборачивать вызовы LocalStorage, SessionStorage и IndexedDB в try-catch блоки.
LocalStorage, SessionStorage и IndexedDB - что мы теряем при отказе от Cookie? 🍪
Смотрели когда-нибудь, что произойдет с вашим сайтом или веб-приложением если пользователь отключит куки?
Не паникуйте сразу, ошибки бывают у всех, даже у ребят с MDN.
А получим мы следующее веселье со скриншота, еще и бесконечные загрузки или белые экраны в придачу.
Суть проста: не забываем оборачивать вызовы LocalStorage, SessionStorage и IndexedDB в try-catch блоки.
👍5🗿3🔥2🤔1
#Angular #SVG #AngularTip
🖼️ SVG файл как темплейт компонента
Интересный факт: в свойстве templateUrl можно указывать путь не только до HTML шаблона. Да, можно вставлять и до SVG файла. Теперь в вашем арсенале!
Стильно, удобно, лаконично! ✨
Интересный факт: в свойстве templateUrl можно указывать путь не только до HTML шаблона. Да, можно вставлять и до SVG файла. Теперь в вашем арсенале!
Стильно, удобно, лаконично! ✨
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4🤯2👾1
Получая значение из инпута мы часто обращаемся к event.target.value, будто предполагая, что из инпута мы можем получить только строку. Таким образом, возникают излишние преобразования, чаще всего с созданием новых объектов Date() или использованием parseInt().
Но, на самом деле, все эти манипуляции необязательны.
Пример на скриншоте.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7😱2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🔧 Решаем проблему с переключением языка на macOS (вместо Apple) 😱
Сталкивались с проблемой, когда нажали клавишу переключения языка, но ничего не поменялось? (Не говорите "нет", я вам все равно не поверю).
В общем, вся беда в этом назойливом попапе, который не только требует времени на открытие, но и взаимодействует со случайно оказавшимся по центру курсором.
Дальше хорошие новости.
Товарищи программисты разработали скрипт, который решает эту проблему за пару шагов. Идея в следующем: Мы избавляемся от раздражающего попапа, но при этом оставляет функцию переключения языка на "fn" клавишу.
Cсылка на гитхаб с подробной инструкцией:
https://github.com/norflin321/fn-lang-switcher
Сталкивались с проблемой, когда нажали клавишу переключения языка, но ничего не поменялось? (Не говорите "нет", я вам все равно не поверю).
В общем, вся беда в этом назойливом попапе, который не только требует времени на открытие, но и взаимодействует со случайно оказавшимся по центру курсором.
Дальше хорошие новости.
Товарищи программисты разработали скрипт, который решает эту проблему за пару шагов. Идея в следующем: Мы избавляемся от раздражающего попапа, но при этом оставляет функцию переключения языка на "fn" клавишу.
Cсылка на гитхаб с подробной инструкцией:
https://github.com/norflin321/fn-lang-switcher
🔥6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Несколько дней назад Дуров показал прототип дизайна Telegram от 2012 года, и я вспомнил про отличный ресурс Web Design Museum.
Острожно! Можно залипнуть на долгое время, и офигеть, как давно некоторые продукты существуют, и как сильно они изменились. По хронологии видно, как весь дизайн устремился к более базовым шрифтам и моделям, как сильно продукты экспериментировали с визуалами, и как читаемость пришла на смену индивидуальности (иногда даже грустно).
Оставляю ссылки на интересные подборки с галереи:
Google дудлы: первый кстати был о Burning Man
Промо-лендинги: Nirvana, Eminem
Игры 00-х: Sims, Diablo, CS
И конечно
Делитесь в комментариях вашими интересными находками.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4😱3🤔1🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
📲 Адаптация мобильной клавиатуры под поле ввода
Оптимизация мобильного пользовательского опыта становится все более важной задачей. Один из способов улучшить этот опыт - это адаптация клавиатуры под поле ввода с помощью атрибута inputmode.
Типы раскладок, которые можно указать:
- text: Стандартная текстовая клавиатура для обычного ввода текста.
- numeric: Цифровая клавиатура, подходящая для ввода кодов доступа или номеров документов.
- tel: Цифровая клавиатура с символами +, # и *, удобная для ввода телефонных номеров.
- search: Клавиша Enter заменяется на "Поиск".
- url: Клавиатура для ввода URL-адресов, дополнительно предоставляющая символы / и ., а также расширенный выбор доменов.
- email: Клавиатура для ввода электронной почты, включающая символы @ и .
- none: Не вызывает клавиатуру, полезно при использовании кастомных вариантов ввода.
Поддержка - тут (смотрим мобильные браузеры)
Демо - тут
Оптимизация мобильного пользовательского опыта становится все более важной задачей. Один из способов улучшить этот опыт - это адаптация клавиатуры под поле ввода с помощью атрибута inputmode.
Типы раскладок, которые можно указать:
- text: Стандартная текстовая клавиатура для обычного ввода текста.
- numeric: Цифровая клавиатура, подходящая для ввода кодов доступа или номеров документов.
- tel: Цифровая клавиатура с символами +, # и *, удобная для ввода телефонных номеров.
- search: Клавиша Enter заменяется на "Поиск".
- url: Клавиатура для ввода URL-адресов, дополнительно предоставляющая символы / и ., а также расширенный выбор доменов.
- email: Клавиатура для ввода электронной почты, включающая символы @ и .
- none: Не вызывает клавиатуру, полезно при использовании кастомных вариантов ввода.
Поддержка - тут (смотрим мобильные браузеры)
Демо - тут
❤8🔥4🗿1👾1
#css #design
📐 Быстрый прыжок в курс школьной геометрии
Итак, что вам не расскажут на курсе «Профессия дизайнер за 2 недели»?
Правильно - как считать скругление углов.
И я не шучу! Казалось бы, очевидные вещи, а проблемы можно найти даже у гигантов индустрии.
(Делитесь в комментариях, если нашли.)
Так вот, чтобы правильно загруглить углы внутреннего блока, достаточно воспользоваться формулой:
Будет работать в большинстве стандартных кейсов.
Почему в большинстве? - Потому что формула линейна и, конечно же, не покрывает всë.
Если хотите больше погрузится в эту тему, можно почитить тред втвиттере X.
📐 Быстрый прыжок в курс школьной геометрии
Итак, что вам не расскажут на курсе «Профессия дизайнер за 2 недели»?
Правильно - как считать скругление углов.
И я не шучу! Казалось бы, очевидные вещи, а проблемы можно найти даже у гигантов индустрии.
(Делитесь в комментариях, если нашли.)
Так вот, чтобы правильно загруглить углы внутреннего блока, достаточно воспользоваться формулой:
inner radius = outer radius - padding
Будет работать в большинстве стандартных кейсов.
Почему в большинстве? - Потому что формула линейна и, конечно же, не покрывает всë.
Если хотите больше погрузится в эту тему, можно почитить тред в
🔥7❤3👍2
Если у вас возникла необходимость отлаживать веб-приложение на iOS в браузерах Chrome или Edge (и, возможно, других браузерах, основанных на Chromium), то существует способ, позволяющий очень просто увидеть логи консоли:
1. Откроваем Chrome на вашем устройстве iOS и переходим на
about://inspect
2. Нажимаем "Start Logging"
3. Оставляем эту вкладку открытой
4. Открываем вкладку с нужным вам сайтом или веб-приложением
5. Возвращаемся к логам (пример на скриншоте)
Что насчет самого Safari?
Там достаточно подключить iPhone к MacBook, и вы получите доступ к полноценной консоли разработчика.
Ставьте 🙏 если интересно, напишу инструкцию.
#devtools #mobile
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🙏3👍1
CSS предоставил нам замечательное свойство - text-overflow, которое позволяет добавлять многоточие и грациозно обрывать слова. Однако у text-overflow есть серьезное ограничение: оно работает только с одной строкой.
А как быть с многострочным текстом? В таком кейсе нам поможет свойство -webkit-line-clamp (см. пример на скриншоте).
❗️Не забывайте добавлять атрибут title="FULL_TEXT", чтобы отображать полный текст в виде тултипа при наведении.
#cssTip
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4
В TypeScript есть интересная возможность, которая называется const assertions (константное утверждение), она предусматривает применение конструкции as const для того, чтобы рекурсивно пометить все поля объекта как readonly. Все примитивные типы, в свою очередь, расцениваются как литеральные типы.
Пример на скриншоте.
#tsTip #typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤯3🔥2😱1
Неважно, к какой стороне вы примкнули и какую цветовую схему теперь предпочитаете использовать. Важно лишь то, что с помощью медиа-запросов можно адаптировать всё.
Сделайте так, чтобы ваши фавиконки корректно отображались при использовании как тёмной, так и светлой темы, используя
prefers-color-scheme
.Пример на скриншоте.
#cssTip
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤4😱1
Принципы SOLID и объектно-ориентированный дизайн программ
В интернете существует бесконечное число статей, видео и разного рода интерпретаций принципов SOLID, и найти среди них действительно хороший материал бывает непросто. Но я нашел, и делюсь им с вами)
Для каждого из принципов вы найдете примеры кода (на TypeScript), шаблоны проектирования, ограничения и проверочные вопросы. А еще лаконичный дизайн, и русский язык.
📖 Ссылка на книгу:
https://solidbook.vercel.app/
В интернете существует бесконечное число статей, видео и разного рода интерпретаций принципов SOLID, и найти среди них действительно хороший материал бывает непросто. Но я нашел, и делюсь им с вами)
Для каждого из принципов вы найдете примеры кода (на TypeScript), шаблоны проектирования, ограничения и проверочные вопросы. А еще лаконичный дизайн, и русский язык.
📖 Ссылка на книгу:
https://solidbook.vercel.app/
🔥5❤3🙏1