
false
должен было бы меняться на true
.)Заодно обновил документацию в MDN, чтобы эти два пункта были заметнее — я не знал о них именно из-за того, что они не были хорошо описаны. Редактируйте MDN тоже, если видите, что что-то можно улучшить :–)
Size: a a a
false
должен было бы меняться на true
.)IntersectionObserver
, но другим способом. Придётся посчитать высоту шапки, убрать опцию root
и задать опцию rootMargin
. Это менее удобно — если высота шапки поменяется, придётся создавать IntersectionObserver
заново — но работает.resize
и scroll
— а это прилично медленнее.)<input type="month">
— поле ввода для выбора месяца, которое описано в спецификации, но почти нигде не документировано. Выглядит круто (это в Microsoft Edge):<input type="date">
— работает в Chrome и Edge, но не работает в Firefox и Safari.<input type="month" placeholder="YYYY-MM" pattern="\d{4}-\d{2}">
placeholder
и pattern
применятся, только если браузер не будет поддерживать <input type="date">
, и подскажут пользователю о формате поля)onclick
вместо ссылок, а я расскажу, как её избегать.div
-ы. Как на Яндекс-Музыке (клик на «Жанры» поменяет урл, но это просто div
):<a>
).<button>
).div
-ы для кликабельных элементов лучше вообще не использовать. Преимущество кнопок перед div
-ами в том, что они 1) нормально фокусируются и активируются с клавиатуры и 2) произносятся как «Кнопка» в экранных читалках. Есть и недостаток — придётся дописать несколько CSS-cвойств, чтобы убрать рамку и фон — но преимущества важнее.jsx-a11y/no-static-element-interactions
<a>
он тоже считает статичным почему-тоIntersectionObserver
срабатывает с задержкой. (IntersectionObserver
— это штука в браузерах, которая позволяет определять, когда элемент пересекает экран или другой элемент.)window.addEventListener('scroll')
с getBoundingClientRect()
и тормозит. Я надеялся, что Intersection Observer сможет заменить слушатель события, но придётся искать другие способы.