Третья задача со сложной HTML-структурой.
Нужно написать селектор, который окрасит в зелёный цвет только первый блок, но есть ряд условий.
Проверить себя: https://nikolai-shabalin.github.io/code-weave/css/has/training/test-3.html
Нужно написать селектор, который окрасит в зелёный цвет только первый блок, но есть ряд условий.
Проверить себя: https://nikolai-shabalin.github.io/code-weave/css/has/training/test-3.html
👍2🔥1
Новая задачка от Ани Лисененковой 🥳
Нужно написать селектор, который изменит цвет заголовка в единственном блоке, в котором нет изображения.
Проверить себя можно здесь: https://nikolai-shabalin.github.io/code-weave/css/has/training/test-4.html
Нужно написать селектор, который изменит цвет заголовка в единственном блоке, в котором нет изображения.
Проверить себя можно здесь: https://nikolai-shabalin.github.io/code-weave/css/has/training/test-4.html
👍5👀1
Node.js 22
Выпущена версия Node.js 22 с несколькими улучшениями, включая возможность импортировать ES-модули с помощью
Лично жду glob, хотя наверняка возлагаю на него слишком большие надежды
Выпущена версия Node.js 22 с несколькими улучшениями, включая возможность импортировать ES-модули с помощью
require(), появление клиента WebSocket и обновления движка V8 JavaScript до v12.4. Эта версия скоро перейдет на долгосрочную поддержку (LTS), но в настоящее время она находится в стадии "Текущая" в течение шести месяцев. Среди заметных особенностей - компилятор Maglev, поддержка синхронных графов ESM и новые возможности выполнения сценариев из package.json. Кроме того, в этом выпуске улучшена производительность и добавлены новые функции, такие как glob и globSync. Скачать и прочитать подробнее об этих обновлениях можно здесь.Лично жду glob, хотя наверняка возлагаю на него слишком большие надежды
👍6
Веб-спеки
Мало кто их читает, это и понятно. Слишком сложно. Слишком скучно. Но нужно ли их читать? Я бы сказал, что почитывать точно необходимо, иначе вся веб-разработка вам будет казаться магией.
Спецификации предоставляют полную и точную информацию о технологии, которую вы будете использовать в работе.
Это также способ быть в курсе новинок и трендов. В гридах, например, до сих пор не доделана спецификация CSS Grid Layout Module Level 2, посвящённая сабгридам (подсеткам), а также есть Level 3, посвящённый кирпичной раскладке (Masonry 1, 2). Знали? =)
Спецификации часто включают рекомендации по лучшим практикам, которые помогают избежать распространённых ошибок и улучшить производительность сайта. Когда вышел
Если хотите начать погружаться в спеки, то можете сделать свой первый шаг, начав с статьи Виталия Зюзина "Как организована веб-платформа"
Мало кто их читает, это и понятно. Слишком сложно. Слишком скучно. Но нужно ли их читать? Я бы сказал, что почитывать точно необходимо, иначе вся веб-разработка вам будет казаться магией.
Спецификации предоставляют полную и точную информацию о технологии, которую вы будете использовать в работе.
Это также способ быть в курсе новинок и трендов. В гридах, например, до сих пор не доделана спецификация CSS Grid Layout Module Level 2, посвящённая сабгридам (подсеткам), а также есть Level 3, посвящённый кирпичной раскладке (Masonry 1, 2). Знали? =)
Спецификации часто включают рекомендации по лучшим практикам, которые помогают избежать распространённых ошибок и улучшить производительность сайта. Когда вышел
will-change, это свойство сразу же выстрелило в миллионы колен. Разработчики стали более аккуратно относиться к CSS-свойствам и действительно разбираться в том, что они используют в коде.Если хотите начать погружаться в спеки, то можете сделать свой первый шаг, начав с статьи Виталия Зюзина "Как организована веб-платформа"
🥰1
Хочу нас всех поздравить, так как у нас с каждым днём появляется всё больше способов центрировать элемент.
Никогда бы не подумал, что это такая глобальная проблема, но как оказывается это всех заботит.
Благодаря флексам и гридам у нас появилась спецификация CSS Box Alignment Module Level 3, которая отвечает за выравнивание элементов внутри их контейнеров. Но знаете что? Спецификация никак не связана с гридами и флексами, то есть выравнивать мы должны уметь хоть в блочной, хоть в табличной вёрстке =)
Ну это в спеке, а что с браузерами?
Посмотрите пример как центрируется заголовок внутри дива, без флексового и гридового контекста: https://codepen.io/web-dot-dev/pen/abMxwzr. Красота же.
Никогда бы не подумал, что это такая глобальная проблема, но как оказывается это всех заботит.
Благодаря флексам и гридам у нас появилась спецификация CSS Box Alignment Module Level 3, которая отвечает за выравнивание элементов внутри их контейнеров. Но знаете что? Спецификация никак не связана с гридами и флексами, то есть выравнивать мы должны уметь хоть в блочной, хоть в табличной вёрстке =)
Ну это в спеке, а что с браузерами?
align-content: center заработал во всех браузерах для блочной вёрстки(дивчиков)Посмотрите пример как центрируется заголовок внутри дива, без флексового и гридового контекста: https://codepen.io/web-dot-dev/pen/abMxwzr. Красота же.
🔥10👍2
Начал исследовать visually-hidden.
Всегда было интересна история развития этого утилитарного класса. Какие свойства в нём появились по каким причинам, отчего отказались, а что вообще является антипаттерном.
Всё это опубликую в этом репозитории: https://github.com/nikolai-shabalin/visually-hidden
Уже много материала удалось насобирать
Всегда было интересна история развития этого утилитарного класса. Какие свойства в нём появились по каким причинам, отчего отказались, а что вообще является антипаттерном.
Всё это опубликую в этом репозитории: https://github.com/nikolai-shabalin/visually-hidden
Уже много материала удалось насобирать
👍5
Кажется у меня произошло разочарование века: условный импорт для CSS-файла всё равно загружает CSS-файл, но браузер не обрабатывает файл.
Коротко. В браузеры постепенно имплементируется условный импорт файлов:
Работает это так. Файл
Коротко. В браузеры постепенно имплементируется условный импорт файлов:
<style>
@import url('./anchor.css') supports(position-try: flip-block);
</style>
Работает это так. Файл
('./anchor.css') начнёт работать только если supports подтвердит, что браузер поддерживает (position-try: flip-block). Я думал, что если браузер не поддерживает position-try: flip-block, то './anchor.css' даже не загрузится, но это не так.👍2🤷♂1
Если хотите немного поразвлекаться с JS, то вот вам задачка над реальным проектом. Бери, да делай =)
На сайте css-properties нужно создать фильтр CSS-эпох. Если захотите сделать, то отпишитесь в issue, что берётесь.
https://github.com/nikolai-shabalin/css-properties/issues/29
На сайте css-properties нужно создать фильтр CSS-эпох. Если захотите сделать, то отпишитесь в issue, что берётесь.
https://github.com/nikolai-shabalin/css-properties/issues/29
Сегодня читал всю обратную связь по HTML1. Всё конечно же написать не смогу.
Короткие итоги:
Курса в целом: 9.6/10
Наставники: 10/10 💪
Рад что результаты работы так высоко ценят. А теперь сниму розовые очки и пойду поднимать в небеса HTML2 =)
Короткие итоги:
Курса в целом: 9.6/10
Наставники: 10/10 💪
Рад что результаты работы так высоко ценят. А теперь сниму розовые очки и пойду поднимать в небеса HTML2 =)
❤7👏4👍3
Привет.
Поделитесь ссылками на любые свои проекты. Можно студенческие. Желательно свежие. Себя покажите, да других посмотрите.
Поделитесь ссылками на любые свои проекты. Можно студенческие. Желательно свежие. Себя покажите, да других посмотрите.
Результаты State of HTML 2023
Исследование охватывает не только HTML-теги, но и доступность, веб-компоненты и многое другое.
Интересные для меня моменты:
- Средний возраст HTML-программиста 33,6 года. Мы старые
- Опыт разработки 10,7 лет. Мы опытные
- 51% имеет высшее образование в смежной области.
- Самый популярный скринридер - VoiceOver (26%). Покупаем макбуки и айфоны
- Самый популярный инструмент для проверки доступности, неожиданно, LightHouse (51%), а уже после Axe (23%)
- Ожидаемые элементы: интерактивные таблицы с сортировкой, фильтрацией и прочим, нативные табы, тогглер, нативный скелетон, контекстное меню(правый клик), бесконечный скролл, масштабирование изображений, более умный
- Неожиданно и то, что людям нужны сложные нативные элементы. Не хватает настроек и возможностей стилизации.
Познакомиться с исследованиями можно на странице https://2023.stateofhtml.com/ru-RU/demographics/
Исследование охватывает не только HTML-теги, но и доступность, веб-компоненты и многое другое.
Интересные для меня моменты:
- Средний возраст HTML-программиста 33,6 года. Мы старые
- Опыт разработки 10,7 лет. Мы опытные
- 51% имеет высшее образование в смежной области.
- Самый популярный скринридер - VoiceOver (26%). Покупаем макбуки и айфоны
- Самый популярный инструмент для проверки доступности, неожиданно, LightHouse (51%), а уже после Axe (23%)
- Ожидаемые элементы: интерактивные таблицы с сортировкой, фильтрацией и прочим, нативные табы, тогглер, нативный скелетон, контекстное меню(правый клик), бесконечный скролл, масштабирование изображений, более умный
<input type="date">.- Неожиданно и то, что людям нужны сложные нативные элементы. Не хватает настроек и возможностей стилизации.
Познакомиться с исследованиями можно на странице https://2023.stateofhtml.com/ru-RU/demographics/
🔥4
Не минифицируйте CSS (мнение автора статьи)
78 kB сырого CSS превращаются в 65kB. Так ли вам важны эти 13kB?
Компрессия. Без gzip или Brotli уже вообще не должно быть сайтов:
- 78kB сжимается до 11kB
- 65 kB сжимается до 10kB
Так ли вам важен этот 1kB?
Протокол.
HTTP/2 мультиплексирование позволяет серверу использовать одно соединение для параллельной передачи нескольких запросов и ответов.
Если сжатый CSS-файл без минификации составляет всего 10 кБ, а затем разбивается на более мелкие фрагменты, скажем, по 2 кБ, то минификация становится как бы не проблемой
Статья: https://blog.sentry.io/why-dont-we-talk-about-minifying-css/
Моё мнение: занимайтесь оптимизацией сайта комплексно. Немножко CSS минифицировал, потом JS, потом HTML. Вот и картиночки оптимизировались. И хоба! 1mB сайта превратился в 100kB. Пользователь счастлив. Вы счастливы. Все счастливы.
78 kB сырого CSS превращаются в 65kB. Так ли вам важны эти 13kB?
Компрессия. Без gzip или Brotli уже вообще не должно быть сайтов:
- 78kB сжимается до 11kB
- 65 kB сжимается до 10kB
Так ли вам важен этот 1kB?
Протокол.
HTTP/2 мультиплексирование позволяет серверу использовать одно соединение для параллельной передачи нескольких запросов и ответов.
Если сжатый CSS-файл без минификации составляет всего 10 кБ, а затем разбивается на более мелкие фрагменты, скажем, по 2 кБ, то минификация становится как бы не проблемой
Статья: https://blog.sentry.io/why-dont-we-talk-about-minifying-css/
Моё мнение: занимайтесь оптимизацией сайта комплексно. Немножко CSS минифицировал, потом JS, потом HTML. Вот и картиночки оптимизировались. И хоба! 1mB сайта превратился в 100kB. Пользователь счастлив. Вы счастливы. Все счастливы.
👍11
Линтер для HTML
Напомню, что я делаю линтер для HTML на основе linthtml.
С последнего моего отчёта было многое, что сделано нового:
- Поправил правило
У правила появилось исключение для первого
-
-
- Новое правило
- Правило
-
- У
- Добавил правило
- Правило
- Правило
- Правило
- Правило
Работа идёт и если у вас идеи для правил, то приходите в гости https://github.com/htmlacademy/linthtml-rules-htmlacademy
На данный момент уже стало ясно, что из-за того, что linthtml не развивается, а его API не обширно, то уже хочется какой-то другой инструмент. Поживём - увидим.
Напомню, что я делаю линтер для HTML на основе linthtml.
С последнего моего отчёта было многое, что сделано нового:
- Поправил правило
htmlacademy/attr-req-value, которое требует заполнение атрибутов, например value="chto-nibud"У правила появилось исключение для первого
<option> в <select>-
input-req-label теперь исключает проверку <input type="submit">-
tag-req-attr появилась новая настройка ignore, которая спасает от ситуаций вроде <input type="submit" name="submit">- Новое правило
htmlacademy/req-stylesheet-link, которое проверяет наличие <link rel="stylesheet"> внутри тега head.- Правило
htmlacademy/req-mailto требует mailto: для ссылок с email в теле тега-
htmlacademy/no-blocking-script теперь игнорирует <script> с type="module" в <head>, так как подобные скрипты неблокирующие- У
<source> внутри <picture> требуем атрибуты размеров width и height если <source> внутри <picture>- Добавил правило
tag-forbid-attr, запрещающее использование указанных атрибутов в указанном теге.- Правило
req-tags-presence требует наличия указанных тегов на странице. - Правило
req-preload-font требует значения preload для шрифта. - Правило
req-webp-in-picture требует webp в <picture>. - Правило
no-class-in-container проверяет атрибут class для дочерних элементов внутри указанного контейнера.Работа идёт и если у вас идеи для правил, то приходите в гости https://github.com/htmlacademy/linthtml-rules-htmlacademy
На данный момент уже стало ясно, что из-за того, что linthtml не развивается, а его API не обширно, то уже хочется какой-то другой инструмент. Поживём - увидим.
🔥8🤝1
Альтернативное описание на максималках
Четыре года назад я на работе обсуждал, что альтернативное описания контентным изображениям никто не пишет. Все понимают, что надо, но всем лень. Тогда пришли к мнению, что надо донести простую мысль. Если лень, то хотя бы оставь
3.5 года назад я обсуждал, что если уж контентным изображениям никто альтернативное описание не пишет, то про описание для декоративных изображений можно забыть, хотя такая возможность есть:
в
Но это вообще не рабочий вариант, так как описание находится в стилях. Абсолютно никто не будет после изменения изображения, да и во время создания, менять текст описания, а это значит, что этот текст будет только сбивать столку.
Буквально сегодня, в Chrome 126 версии, должно произойти, то что сможет нам все помочь. Лень никуда не уйдёт, но будут способы делать нормальное описание.
И так: в спецификации CSS Generated Content Module Level 3 для
Исправим изначальный пример
добавим в разметку атрибут
Кажется, что ничего не поменялось, текст "Альтернативное описание" всё также попадает в дерево доступности, а мы всего лишь перенесли описания из стилей в разметку. В этом заключается мощь. У нас появляются новые возможности управлять контентом. Теперь у нашего бэкендера появляется возможность взять нейросеточку, которая делает описания изображению, а результат работы нейросетки вставлять в разметку в
В общем, как вы поняли, то появляются новые возможности, которыми мы конечно же не будем пользоваться, но как приятно, что эти новые возможности постоянно появляются.
Четыре года назад я на работе обсуждал, что альтернативное описания контентным изображениям никто не пишет. Все понимают, что надо, но всем лень. Тогда пришли к мнению, что надо донести простую мысль. Если лень, то хотя бы оставь
alt правильно пустым — alt="". Это уже победа.3.5 года назад я обсуждал, что если уж контентным изображениям никто альтернативное описание не пишет, то про описание для декоративных изображений можно забыть, хотя такая возможность есть:
.element {
content: url("images/background.jpg") / "альтернативное описание";
}в
content можно добавить /, после него написать описать изображение текстом. Такое описание попадает в дерево доступности.Но это вообще не рабочий вариант, так как описание находится в стилях. Абсолютно никто не будет после изменения изображения, да и во время создания, менять текст описания, а это значит, что этот текст будет только сбивать столку.
Буквально сегодня, в Chrome 126 версии, должно произойти, то что сможет нам все помочь. Лень никуда не уйдёт, но будут способы делать нормальное описание.
И так: в спецификации CSS Generated Content Module Level 3 для
content появились новые возможности, а именно использование функции attr() для альтернативного описания.Исправим изначальный пример
.element {
content: url("images/background.jpg") / attr(data-alt);
}добавим в разметку атрибут
<div class="element" data-alt="Альтернативное описание"></div>
Кажется, что ничего не поменялось, текст "Альтернативное описание" всё также попадает в дерево доступности, а мы всего лишь перенесли описания из стилей в разметку. В этом заключается мощь. У нас появляются новые возможности управлять контентом. Теперь у нашего бэкендера появляется возможность взять нейросеточку, которая делает описания изображению, а результат работы нейросетки вставлять в разметку в
data-alt="", ну либо сделать это руками.В общем, как вы поняли, то появляются новые возможности, которыми мы конечно же не будем пользоваться, но как приятно, что эти новые возможности постоянно появляются.
👏11👍6❤1😁1
gapЧасто ведь возникает вопрос «В каких случаях мне переписывать margin на gap» 🤔 У меня уже сложилось мнение, которое я ещё уточняю, но всегда не хватает примеров.
Ахмад Шадид постарался и показал кучу примеров - https://ishadeed.com/article/the-gap/
Статья на английском, но знаний английского не нужно, так как есть примеры кода и небольшие интерактивные демонстрации. Статья хоть и длинная, но хватит 5 минут, чтобы её посмотреть
👍12
Уже практически закончился Я 💛 Фронтенд 2024
https://www.youtube.com/watch?v=xKhuDlMySsE
но вы пересмотрите позже =)
https://www.youtube.com/watch?v=xKhuDlMySsE
но вы пересмотрите позже =)
👍7
Коллекция проектов для самостоятельной тренировки JS начального уровня.
Есть проект. Есть его реализация. Осталось повторить ручками или написать самостоятельно с нуля. Можно закрепить замыкание, буквально в первом проекте, каррирование и многое другое
https://www.jisan.io/dom-projects/#projects
Есть проект. Есть его реализация. Осталось повторить ручками или написать самостоятельно с нуля. Можно закрепить замыкание, буквально в первом проекте, каррирование и многое другое
https://www.jisan.io/dom-projects/#projects
👍17
<permission>Пока мы все наслаждаемся тем, что не нужно изучать новые HTML-теги, Google начинает экспериментировать над новым тегом
<permission>. Тег уже доступен в 126 версии Chrome за флагом.Если коротко: Новый HTML-тег
<permission> предназначен для запроса разрешений на использование функций, таких как доступ к камере или микрофону. Этот тег позволяет избежать проблем с "спамом разрешений", это ситуация, когда сайты постоянно запрашивают разрешения на доступ к различным функциям устройства.Тег также поддерживает атрибуты для настройки запросов, такие как
type и type-ext, например:<permission type="camera">
<permission type="camera" type-ext="precise:true"> <!-- для разрешения геолокации -->
В
type можно передавать несколько значений<permission type="camera microphone">
Демо: https://permission.site/pepc
Стилизация элемента
<permission> на данный момент сильно ограничена, но возможно будет расширена после окончания эксперимента.<permission> работает вместе с API Permissions. Можно прослушать несколько событий:-
onpromptdismiss: пользователь отклонил запрос на разрешение-
onpromptaction: запрос разрешения был разрешен пользователем-
onvalidationstatuschange: элемент переходит из состояния "валидный" в состояние "невалидный"На данный момент
<permission> является одиночным тегом. Также я не увидел, что можно изменять текст "кнопки", видимо для снижения манипуляций над пользователем.👍9🔥1
Новые стейджи
Делегаты Ecma TC39 находятся на этой неделе в Финляндии на 102-й встрече, которая проходит в течение трёх дней и организуется Mozilla и Университетом Аалто. Комитет работает на основе консенсуса и имеет право вносить изменения в спецификацию, если сочтет это необходимым. Сегодня несколько предложений получили консенсус для перехода на следующий этап.
Коротко:
- "Ленивая инициализация модулей" переходит на stage 2.7
- Error.isError() переходит на stage 2
- RegExp Escaping переходит в stage 2.7
- Promise.try переходит на stage 3
Ещё много вкусного в статье: https://socket.dev/blog/tc39-advances-key-proposals
Делегаты Ecma TC39 находятся на этой неделе в Финляндии на 102-й встрече, которая проходит в течение трёх дней и организуется Mozilla и Университетом Аалто. Комитет работает на основе консенсуса и имеет право вносить изменения в спецификацию, если сочтет это необходимым. Сегодня несколько предложений получили консенсус для перехода на следующий этап.
Коротко:
- "Ленивая инициализация модулей" переходит на stage 2.7
- Error.isError() переходит на stage 2
- RegExp Escaping переходит в stage 2.7
- Promise.try переходит на stage 3
Ещё много вкусного в статье: https://socket.dev/blog/tc39-advances-key-proposals
👍2