This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Сайт icones.js.org довольно удобен для подбора иконок (хотя выбор средний и поиска по параметрам нет, но хорошо сделано копирование найденного сразу в
К вопросу о том, качественный ли код пишет
#antfu #icons #optimization
svg
), но такое потребление памяти после поиска нескольких иконок выше понимания.К вопросу о том, качественный ли код пишет
Anthony Fu
, автор VueUse
, Nuxt
и многого другого#antfu #icons #optimization
Описал, как с помощью
На этом примере видно, как еще можно использовать
Посвящается Денису Чернову
#ai #i18n #article
AI
можно быстро и качественно сделать интернационализацию сайтНа этом примере видно, как еще можно использовать
AI
кроме автокомплита.Посвящается Денису Чернову
#ai #i18n #article
Хабр
Использование AI для интернационализации (i18n) вебсайта
Современные AI чатботы это инструмент. Для каких-то вещей в жизни разработчика он подходит хорошо, для каких-то - не очень. Для интернационализации сайтов - хорошо. Ниже будет показано как с помощью,...
Новые HTML элементы
Элемент <dialog> используется для создания модальных и немодальных диалогов, которые требуют явного взаимодействия пользователя для закрытия. Модальные диалоги блокируют остальную часть страницы до тех пор, пока не будут закрыты пользователем, тогда как немодальные диалоги позволяют продолжать взаимодействие с остальной частью страницы. Это делает <dialog> полезным для сценариев, где необходимо привлечь внимание пользователя к определённому контенту или взаимодействию.
Поповеры, с другой стороны, представляют собой лёгкие "всплывашки", которые отображаются рядом с элементом, вызвавшим их. Они могут быть легко закрыты пользователем и не блокируют остальную часть интерфейса. Поповеры отлично подходят для предоставления дополнительной информации или контекстных подсказок, не прерывая основное взаимодействие пользователя с интерфейсом. В отличие от диалогов, поповеры не требуют перемещения фокуса на себя, что делает их менее навязчивыми и более подходящими для вспомогательного контента.
Ключевое различие между этими элементами заключается в их влиянии на фокус: диалоги перемещают фокус на первый доступный элемент внутри себя, в то время как поповеры сохраняют фокус на элементе, который их открыл. Это различие важно учитывать при разработке интерфейсов, чтобы обеспечить правильное взаимодействие и доступность для пользователей. Кроме того, поповер может быть управляем исключительно HTML методами, а <dialog> требует JavaScript.
#dialog #popover
<dialog>
и popover
имеют много схожегоЭлемент <dialog> используется для создания модальных и немодальных диалогов, которые требуют явного взаимодействия пользователя для закрытия. Модальные диалоги блокируют остальную часть страницы до тех пор, пока не будут закрыты пользователем, тогда как немодальные диалоги позволяют продолжать взаимодействие с остальной частью страницы. Это делает <dialog> полезным для сценариев, где необходимо привлечь внимание пользователя к определённому контенту или взаимодействию.
Поповеры, с другой стороны, представляют собой лёгкие "всплывашки", которые отображаются рядом с элементом, вызвавшим их. Они могут быть легко закрыты пользователем и не блокируют остальную часть интерфейса. Поповеры отлично подходят для предоставления дополнительной информации или контекстных подсказок, не прерывая основное взаимодействие пользователя с интерфейсом. В отличие от диалогов, поповеры не требуют перемещения фокуса на себя, что делает их менее навязчивыми и более подходящими для вспомогательного контента.
Ключевое различие между этими элементами заключается в их влиянии на фокус: диалоги перемещают фокус на первый доступный элемент внутри себя, в то время как поповеры сохраняют фокус на элементе, который их открыл. Это различие важно учитывать при разработке интерфейсов, чтобы обеспечить правильное взаимодействие и доступность для пользователей. Кроме того, поповер может быть управляем исключительно HTML методами, а <dialog> требует JavaScript.
<button popovertarget="my-popover">Open Popover</button>
<div popover id="my-popover">Hello!</div>
#dialog #popover
Тихо и незаметно вышел
Ну и стандартно за два дня уже три дополнительных минорных релиза
Из новинок декларируется:
- более высокая производительность
- более гранулированная система реактивности с рунами
- более выразительный синтаксис шаблонов с фрагментами (snippets) и атрибутами событий
- встроенная поддержка
- обратная совместимость с предыдущим синтаксисом
#svelte
Svelte 5
со своими рунами - самый близкий Vue
по духу фронтенд фреймворкНу и стандартно за два дня уже три дополнительных минорных релиза
Из новинок декларируется:
- более высокая производительность
- более гранулированная система реактивности с рунами
- более выразительный синтаксис шаблонов с фрагментами (snippets) и атрибутами событий
- встроенная поддержка
TypeScript
- обратная совместимость с предыдущим синтаксисом
#svelte
svelte.dev
Web development for the rest of us
Пару недель назад в интернете и Твиттере прошла ярая дискуссия по поводу
С моей точки зрения, веб компоненты являются неким ориентиром, стандартом на которые должны/могут ориентироваться фронтенд фреймворки и разработчики на них. Он дает две ключевые вещи - декомпозицию системы на более мелкие части, и инкапсуляцию
Но этот стандарт не может и не сможет заменить фронтенд фреймворки и даже приблизиться к ним в плане удобства и функционала. Да, на
И вряд ли они когда-то появятся, потому что любая их реализация будет частным случаем и будет означать, что это уже не просто
#webcomponents
Web Components
, в которой принял участие и Evan You
.С моей точки зрения, веб компоненты являются неким ориентиром, стандартом на которые должны/могут ориентироваться фронтенд фреймворки и разработчики на них. Он дает две ключевые вещи - декомпозицию системы на более мелкие части, и инкапсуляцию
HTML
, JS
и CSS
в одном компоненте. Vue
взял эти принципы у него, и, наверное, из всех фреймворков ближе всего идеологически к веб компонентам.Но этот стандарт не может и не сможет заменить фронтенд фреймворки и даже приблизиться к ним в плане удобства и функционала. Да, на
Web Components
можно прекрасно писать большие приложения, но ему "не хватает" трех вещей, которыми избаловали современные фреймворки своих пользователей - связывания переменных шаблона и скрипта, директив в HTML
и реактивности данных в JS
. И вряд ли они когда-то появятся, потому что любая их реализация будет частным случаем и будет означать, что это уже не просто
HTML
, и не просто JS
. А такого быть не должно в W3C
мире, потому что в его спецификациях стандарты, которым десятки лет, и которые должны просуществовать еще десятки лет.#webcomponents
В 2024 году в
Нетипизированное
Типизированное
Через
Типы (
Поддержка в браузерах уже полная
———
P.S. Типизация нужна, если это свойство используется в
Пример 1
Пример 2
#css
CSS
завезли типизацию переменныхНетипизированное
CSS property
::root {
--background-color: blue;
}
.box {
background-color: var(--background-color);
}
Типизированное
CSS property
@property --background-color {
syntax: "<color>";
inherits: false;
initial-value: blue;
}
Через
JS
window.CSS.registerProperty({
name: "--background-color",
syntax: "<color>",
inherits: false,
initialValue: "blue",
});
Типы (
syntax
): <length>, <number>, <percentage>, <length-percentage>, <color>, <image>, <url>, <integer>, <angle>, <time>, <resolution>, <transform-function>, <custom-ident>, или список типов данных и значений ключевых слов.Поддержка в браузерах уже полная
———
P.S. Типизация нужна, если это свойство используется в
transition
Пример 1
Пример 2
#css
MDN Web Docs
@property - CSS | MDN
The @property CSS at-rule is part of the CSS Houdini set of APIs. It allows developers to explicitly define CSS custom properties, allowing for property type checking and constraining, setting default values, and defining whether a custom property can inherit…