Всех с понедельником 😭
Сегодня разберём задачу с собеседования про пропущенное число в массиве.
Условие задачи:
У нас есть неупорядоченный массив n-длины, содержащий числа от 1 до n+1. Одно из этих чисел отсутствует. Нужно найти пропущенное число.
Решение с сортировкой
Самый простой способ — отсортировать массив и сравнить его элементы с ожидаемой последовательностью чисел.
Алгоритм:
1. Отсортировать массив.
2. Пройти по нему и найти, где последовательность нарушается.
Решение через сумму арифметической прогрессии
Более быстрый способ — воспользоваться суммой арифметической прогрессии.
Алгоритм:
1. Сначала вычислить ожидаемую сумму чисел от 1 до n+1. Формула: (n+1) * (n+2) / 2.
2. Далее найти фактическую сумму всех чисел в массиве.
3. Разница между ожидаемой суммой и фактической даёт пропущенное число.
Как вам задача и как бы вы решили ее?
И не забывайте, что можно просто тыкнуть реакцию на пост😏
#interview #JavaScript #algorithm
Сегодня разберём задачу с собеседования про пропущенное число в массиве.
Условие задачи:
У нас есть неупорядоченный массив n-длины, содержащий числа от 1 до n+1. Одно из этих чисел отсутствует. Нужно найти пропущенное число.
Решение с сортировкой
Самый простой способ — отсортировать массив и сравнить его элементы с ожидаемой последовательностью чисел.
Алгоритм:
1. Отсортировать массив.
2. Пройти по нему и найти, где последовательность нарушается.
function findMissingNumberSort(arr) {
arr.sort((a, b) => a - b); // Сортируем массив
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== i + 1) {
return i + 1; // Если число не совпадает с ожидаемым
}
}
return arr.length + 1; // Если пропущено последнее число
}
console.log(findMissingNumberSort([3, 1, 4, 6, 2])); // 5
Решение через сумму арифметической прогрессии
Более быстрый способ — воспользоваться суммой арифметической прогрессии.
Алгоритм:
1. Сначала вычислить ожидаемую сумму чисел от 1 до n+1. Формула: (n+1) * (n+2) / 2.
2. Далее найти фактическую сумму всех чисел в массиве.
3. Разница между ожидаемой суммой и фактической даёт пропущенное число.
function findMissingNumberSum(arr) {
const n = arr.length + 1; // Учитываем пропущенное число
const expectedSum = (n * (n + 1)) / 2; // Ожидаемая сумма
const actualSum = arr.reduce((acc, num) => acc + num, 0); // Сумма массива
return expectedSum - actualSum; // Пропущенное число
}
console.log(findMissingNumberSum([3, 1, 4, 6, 2])); // Результат: 5
Как вам задача и как бы вы решили ее?
И не забывайте, что можно просто тыкнуть реакцию на пост
#interview #JavaScript #algorithm
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14👍6🔥3👀3
Сегодня про проблемы начинающих (и не только) разработчиков — использование
Почему
CSS-свойств много, и когда вы используете
Например:
Что произойдёт, если вы решите менять ещё и
Как правильно?
Используйте только те свойства, которые действительно нужно анимировать:
Здесь мы явно указали, что хотим анимировать только
Итог
#CSS #BestPractices
transition: all. Это может казаться удобным, но на практике часто приносит больше вреда, чем пользы.Почему
transition: all проблема?CSS-свойств много, и когда вы используете
all, вы переходите в режим «а пусть плавно изменится всё». Это может вызвать неожиданные эффекты, если вы добавите или измените свойства в будущем.Например:
button {
transition: all 0.3s ease;
}
button:hover {
background-color: #ff5722;
transform: scale(1.1);
}
Что произойдёт, если вы решите менять ещё и
box-shadow или добавите border? Всё будет анимироваться, даже если вы этого не хотите. В результате — неочевидный баг на проде.Как правильно?
Используйте только те свойства, которые действительно нужно анимировать:
button {
transition: background-color 0.3s ease, transform 0.3s ease;
}
Здесь мы явно указали, что хотим анимировать только
background-color и transform.Итог
transition: all — это как "универсальный ключ", который вроде как открывает всё, но может сломать половину замков. Не ленитесь и всегда указывайте только нужные свойства.#CSS #BestPractices
❤11👍3🔥2👀1
Это среда, мои чуваки 🐸
Сегодня предлагаю разобраться с загрузкой и выполнением скриптов. Этот вопрос частенько всплывает на собеседованиях, но на практике мы редко сталкиваемся с ним, ведь почти всегда у нас есть одна точка входа. Однако понимание того, как работает загрузка, всё же важно и лучше разобраться.
Как работает загрузка без атрибутов?
Если вы подключаете скрипт обычным способом:
То браузер выполняет следующие шаги:
1. Останавливает парсинг HTML.
2. Загружает скрипт.
3. Выполняет его.
4. Возвращается к разбору HTML.
Если такой скрипт подключён в
Решение: async и defer
С помощью атрибутов
async
1. Скрипт загружается параллельно с HTML.
2. Выполняется сразу после загрузки, останавливая парсинг HTML.
3. Порядок выполнения не гарантирован, если таких скриптов несколько.
Пример:
defer
1. Скрипт загружается параллельно с HTML, как и async.
2. Выполняется только после завершения парсинга HTML.
3. Гарантировано выполняется в порядке объвления.
Пример:
Особенности
1.
2.
Когда использовать?
—
—
Заключение
Атрибуты
Шпаргалку со сравнением можно найти в прикрепленном изображении.
#JavaScript #Perfomance #HTML #interview
Сегодня предлагаю разобраться с загрузкой и выполнением скриптов. Этот вопрос частенько всплывает на собеседованиях, но на практике мы редко сталкиваемся с ним, ведь почти всегда у нас есть одна точка входа. Однако понимание того, как работает загрузка, всё же важно и лучше разобраться.
Как работает загрузка без атрибутов?
Если вы подключаете скрипт обычным способом:
<script src="main.js"></script>
То браузер выполняет следующие шаги:
1. Останавливает парсинг HTML.
2. Загружает скрипт.
3. Выполняет его.
4. Возвращается к разбору HTML.
Если такой скрипт подключён в
<head>, это заблокирует загрузку страницы, пока скрипт не будет загружен и выполнен. Это критично для производительности и серьезно влияет на пользовательский опыт. Наши заказчики будут серьезно недовольны)Решение: async и defer
С помощью атрибутов
async и defer можно избежать блокировки парсинга HTML.async
1. Скрипт загружается параллельно с HTML.
2. Выполняется сразу после загрузки, останавливая парсинг HTML.
3. Порядок выполнения не гарантирован, если таких скриптов несколько.
Пример:
<script src="main.js" async></script>
defer
1. Скрипт загружается параллельно с HTML, как и async.
2. Выполняется только после завершения парсинга HTML.
3. Гарантировано выполняется в порядке объвления.
Пример:
<script src="main.js" defer></script>
Особенности
1.
defer и async работают только с внешними скриптами (src). Если вы напишете инлайн-скрипт, атрибуты проигнорируются2.
type="module" автоматически включает defer. Когда использовать?
—
async подходит для независимых скриптов, таких как аналитика, рекламные библиотеки, виджеты и трекеры.—
defer используется для скриптов, которые зависят от DOM или должны выполняться строго в порядке их подключения. Например, это основной код вашего приложения или скрипты с полифилами.Заключение
Атрибуты
async и defer дают простой способ улучшить производительность и не блокировать страницу. Шпаргалку со сравнением можно найти в прикрепленном изображении.
#JavaScript #Perfomance #HTML #interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6👏2👀1
Закончим неделю на лайтовом посте, но который поможет сделать вашу жизнь немного продуктивнее 🧑💻 Многие из нас ведут заметки, но не всегда их удобно организовать и структурировать. Сегодня пост как раз про приложение, которое поможет решить эту проблему.
Obsidian — это инструмент для создания заметок, который превращает информацию в настоящую базу знаний.
Почему стоит попробовать Obsidian?
— Все записи полностью локальны и создаются в формате
— Обсидиан позволяет связывать заметки друг с другом. Просто пишите
— Обширная библиотека плагинов позволяет добавлять задачи, трекеры, канбан-доски, базы данных, аналитику и многое другое.
Для чего и почему я использую Obsidian?
Я использую Obsidian для работы, ведения этого канала и структурирования своих мыслей. Можно сказать, что это моя персональная вики.
Кстати, этот пост не исключение и он тоже хранится у меня в заметках)
Скачать и попробовать Obsidian можно тут obsidian.md
Кто-то уже пробовал? Интересно узнать ваше мнение и рекомендации.
#Markdown #Продуктивность
Obsidian — это инструмент для создания заметок, который превращает информацию в настоящую базу знаний.
Почему стоит попробовать Obsidian?
— Все записи полностью локальны и создаются в формате
Markdown. — Обсидиан позволяет связывать заметки друг с другом. Просто пишите
[[Название заметки]], и вы создадите связь. А встроенный Graph View визуализирует всю вашу базу знаний в виде сети.— Обширная библиотека плагинов позволяет добавлять задачи, трекеры, канбан-доски, базы данных, аналитику и многое другое.
Для чего и почему я использую Obsidian?
Я использую Obsidian для работы, ведения этого канала и структурирования своих мыслей. Можно сказать, что это моя персональная вики.
Кстати, этот пост не исключение и он тоже хранится у меня в заметках)
Скачать и попробовать Obsidian можно тут obsidian.md
Кто-то уже пробовал? Интересно узнать ваше мнение и рекомендации.
#Markdown #Продуктивность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5🤔3⚡1
Наступают выходные, а это значит, что пора отдыхать 🍻
На всякий случай хочу сказать, что посты выходят только по будним дням, и следующий будет уже в понедельник.
А пока небольшая подборка старых интересных постов:
1. Разбор задачи с собеседования про анаграммы
2. Отложенная загрузка изображений
3. Простой лоадер для вашего сайта
Спасибо за ваши подписки и активность🫶 Обнял, поднял ☺️
Хороших выходных, увидимся в понедельник🤜
На всякий случай хочу сказать, что посты выходят только по будним дням, и следующий будет уже в понедельник.
А пока небольшая подборка старых интересных постов:
1. Разбор задачи с собеседования про анаграммы
2. Отложенная загрузка изображений
3. Простой лоадер для вашего сайта
Спасибо за ваши подписки и активность
Хороших выходных, увидимся в понедельник
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤6🦄2
Редкий атрибут, про который многие даже не слышали, — это
Что делает reversed?
Вы, наверное, догадались по названию, но если нет — атрибут
Как работает?
Добавьте этот атрибут к
Браузер покажет это так:
Кто-нибудь знал про этот атрибут?
#HTML
reversed для <ol>. Довольно простая и базовая штука, но, возможно, однажды пригодится)Что делает reversed?
Вы, наверное, догадались по названию, но если нет — атрибут
reversed позволяет отображать элементы списка в обратном порядке нумерации. Вместо того чтобы начинать с единицы, счёт стартует с максимального числа и идёт вниз.Как работает?
Добавьте этот атрибут к
<ol>, например:
<ol>
<li>Первое место</li>
<li>Второе место</li>
<li>Третье место</li>
</ol>
Браузер покажет это так:
3. Первое место
2. Второе место
1. Третье место
Кто-нибудь знал про этот атрибут?
#HTML
🔥12👍8👀2
Сегодня кажется, что почти каждая команда работает по Scrum или чему-то приближенному. Но довольно часто вижу, что у многих из встреч остаются только базовые. Однако есть одна практика, о которой знают далеко не все — особенно если в вашей команде никогда не было скрам-мастера. Это встреча «Три амиго».
Что это за встреча?
Это встреча на которой пересекаются бизнес, разработка и тестирование, чтобы превратить идеи в понятные, четко сформулированные задачи.
Кто учавствует?
1. Бизнес — задаёт контекст и отвечает на главный вопрос: «Зачем это нужно?».
2. Разработчик — оценивает технические аспекты и предлагает: «Как это сделать?».
3. Тестировщик — добавляет перспективу качества и спрашивает: «Как проверить, что это работает правильно?».
Что происходит на встрече?
1. Разбираются пользовательские истории или фичи, чтобы у всех было единое понимание.
2. Выявляются «узкие места» в реализации, чтобы избежать сюрпризов.
3. Определяются четкие критерии готовности (DoD), чтобы не допустить размытых требований.
Когда эта встреча пригодится?
— Если задачи слишком размыты, встреча помогает превратить абстрактные идеи в четко сформулированные задачи.
— Когда в команде есть разногласия. Если разработчики, тестировщики и бизнес понимают задачу по-разному, такая встреча устранит недоразумения.
— При работе над сложными или технически рискованными фичами можно заранее выявить узкие места, оценить риски и спланировать, как их избежать.
— Когда сроки поджимают, четкое определение критериев готовности и понимание объёма работ помогут сосредоточиться на главном и избежать потери времени на лишние доработки.
— Если важно качество, тестировщики на встрече могут заранее обозначить свои ожидания от задачи, предложить тестовые сценарии и уточнить, как проверить, что всё сделано правильно.
Что в итоге?
Такие встречи помогают синхронизировать участников процесса, предотвратить недоразумения и экономить время на доработках.
Кто-то из вас участвовал в таких встречах? В моем опыте это довольно редкая практика.
Запущу опрос ниже, чтобы понять, насколько популярна эта практика)
#Scrum #Продуктивность #BestPractices
Что это за встреча?
Это встреча на которой пересекаются бизнес, разработка и тестирование, чтобы превратить идеи в понятные, четко сформулированные задачи.
Кто учавствует?
1. Бизнес — задаёт контекст и отвечает на главный вопрос: «Зачем это нужно?».
2. Разработчик — оценивает технические аспекты и предлагает: «Как это сделать?».
3. Тестировщик — добавляет перспективу качества и спрашивает: «Как проверить, что это работает правильно?».
Что происходит на встрече?
1. Разбираются пользовательские истории или фичи, чтобы у всех было единое понимание.
2. Выявляются «узкие места» в реализации, чтобы избежать сюрпризов.
3. Определяются четкие критерии готовности (DoD), чтобы не допустить размытых требований.
Когда эта встреча пригодится?
— Если задачи слишком размыты, встреча помогает превратить абстрактные идеи в четко сформулированные задачи.
— Когда в команде есть разногласия. Если разработчики, тестировщики и бизнес понимают задачу по-разному, такая встреча устранит недоразумения.
— При работе над сложными или технически рискованными фичами можно заранее выявить узкие места, оценить риски и спланировать, как их избежать.
— Когда сроки поджимают, четкое определение критериев готовности и понимание объёма работ помогут сосредоточиться на главном и избежать потери времени на лишние доработки.
— Если важно качество, тестировщики на встрече могут заранее обозначить свои ожидания от задачи, предложить тестовые сценарии и уточнить, как проверить, что всё сделано правильно.
Что в итоге?
Такие встречи помогают синхронизировать участников процесса, предотвратить недоразумения и экономить время на доработках.
Кто-то из вас участвовал в таких встречах? В моем опыте это довольно редкая практика.
Запущу опрос ниже, чтобы понять, насколько популярна эта практика)
#Scrum #Продуктивность #BestPractices
🔥6👏4👍2
Проводите встречи «Три амиго»?
Anonymous Poll
8%
Да, регулярно 💪
6%
Иногда 🤔
6%
Знаю, но не проводим ☕️
80%
Первый раз слышу 😬
❤3👨💻2
Разберём Intersection Observer — это API для отслеживания появления элементов в зоне видимости.
Синтаксис выглядит так:
Опции для настройки:
1.
2.
3.
Методы:
Что внутри entries и entry?
intersectionRatio — степень видимости элемента (например, 0.5 для 50%).
Когда использовать?
Intersection Observer отлично подходит для появления элементов при скролле, ленивой загрузки изображений и аналитики.
Я использую в своей работе для аналитики и отслеживания действий.
P.S Сделал шпаргалку на всякий случай. Сохраняйте чтобы не забыть)
#JavaScript #webapi #шпаргалка
Синтаксис выглядит так:
const observer = new IntersectionObserver(callback, options);
observer.observe(targetElement);
Опции для настройки:
1.
root — Контейнер, в пределах которого отслеживается пересечение. По умолчанию — null (viewport). 2.
rootMargin — Отступы вокруг контейнера, например, 50px 0px отслеживает на 50px раньше. 3.
threshold — Уровень видимости элемента (например, 0.5 для 50% видимости или массив значений [0, 0.5, 1], чтобы отслеживать видимость элемента на 0%, 50% и 100%).Методы:
observe() — Начинает отслеживать указанный элемент. unobserve() — Прекращает отслеживание элемента. disconnect() — Полностью останавливает работу Observer. takeRecords() — Возвращает список всех записей о пересечении, которые ещё не были обработаны.Что внутри entries и entry?
entries — это массив объектов, содержащих информацию о каждом отслеживаемом элементе. entry — один из этих объектов. Вот его свойства:isIntersecting — true, если элемент пересёк границы видимости.target — сам элемент DOM, за которым ведётся наблюдение.intersectionRatio — степень видимости элемента (например, 0.5 для 50%).
boundingClientRect — размеры и положение элемента относительно viewport.intersectionRect — область пересечения элемента с видимой частью контейнера.rootBounds — размеры контейнера (root), если он указан.Когда использовать?
Intersection Observer отлично подходит для появления элементов при скролле, ленивой загрузки изображений и аналитики.
Я использую в своей работе для аналитики и отслеживания действий.
P.S Сделал шпаргалку на всякий случай. Сохраняйте чтобы не забыть)
#JavaScript #webapi #шпаргалка
👍8🔥4👏4
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера я рассказывал про Intersection Observer , а сегодня подготовил пример его использования. С помощью Intersection Observer будем "печатать" текст, когда он попадает в зону видимости, и скрывать при прокрутке вверх.
Посмотреть пример можно тут JSFiddle / CodePen
#CSS #HTML #JavaScript
Посмотреть пример можно тут JSFiddle / CodePen
#CSS #HTML #JavaScript
🔥9👀4👍3
Завершаем эту неделю постом, который, возможно, вдохновит кого-то покопаться в интересном проекте на выходных.
Может быть, кто-то помнит бородатые времена UCOZ? У них был довольно прикольный интерфейс в виде рабочего стола.
Я нашел интересный проект, который написан на чистом JavaScript и может быть поднят локально.
Что интересно:
— Написан на чистом JavaScript.
— Можно поднять локально.
— Работает как полноценная операционная система в браузере.
Репозиторий проекта: GitHub
Демонстрация: Puter.com
#JavaScript #OpenSource
Может быть, кто-то помнит бородатые времена UCOZ? У них был довольно прикольный интерфейс в виде рабочего стола.
Я нашел интересный проект, который написан на чистом JavaScript и может быть поднят локально.
Что интересно:
— Написан на чистом JavaScript.
— Можно поднять локально.
— Работает как полноценная операционная система в браузере.
Репозиторий проекта: GitHub
Демонстрация: Puter.com
#JavaScript #OpenSource
Всем привет 👋 Начнем эту неделю с очень простой темы)
Если вы хоть раз верстали, то наверняка сталкивались с тегами, которые не нужно закрывать. Сегодняшний пост как раз о них🙂
Что это за элементы и как они называются?
Void-элементы— это тип HTML-элементов, которые не требуют закрывающего тега. Такие элементы предназначены для случаев, когда контент внутри недопустим. Например,
Полный список void-элементов:
На что обратить внимание?
Итого
Void-элементы — это HTML-элементы, которые не требуют закрытия, не допускают вложений и в HTML5 не нуждаются в слэше перед закрытием.
#HTML #шпаргалка
Если вы хоть раз верстали, то наверняка сталкивались с тегами, которые не нужно закрывать. Сегодняшний пост как раз о них
Что это за элементы и как они называются?
Void-элементы— это тип HTML-элементов, которые не требуют закрывающего тега. Такие элементы предназначены для случаев, когда контент внутри недопустим. Например,
<img> используется для добавления изображений, а <br> — для переноса строки.Полный список void-элементов:
<area> — для создания активных областей в <map>.<base> — задаёт базовый URL для документа.<br> — перенос строки.<col> — определяет колонки в таблицах.<embed> — для вставки мультимедиа-контента.<hr> — горизонтальная линия для разделения секций.<img> — для добавления изображений.<input> — для создания полей ввода.<link> — подключение внешних ресурсов, например, CSS.<meta> — метаинформация о документе.<source> — источник для <audio> и <video>.<track> — субтитры и текстовые дорожки для видео.<wbr> — возможный разрыв длинного слова.На что обратить внимание?
1. Не закрывайте void-элементы вручную:
<img src="photo.jpg"></img> <!-- Ошибка -->
2. Void-элементы не могут содержать вложений:
<hr>---</hr> <!-- Так нельзя -->
3. В HTML5 не нужно добавлять слэш перед закрытием:
<img src="example.jpg" alt="Описание"> <!-- Добавляем без слэша -->
Итого
Void-элементы — это HTML-элементы, которые не требуют закрытия, не допускают вложений и в HTML5 не нуждаются в слэше перед закрытием.
#HTML #шпаргалка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥5
А как вы относитесь к чату? Он уже есть, но пока он используется только для комментариев к постам. Давайте попробуем сделать его более активным? Возможно, в нём вы сможете найти ответы на свои вопросы по фронту или, наоборот, помочь кому-то.
Если интересно, то предлагаю вступить в чат(тык). А еще его можно найти в профиле канала😏
Если интересно, то предлагаю вступить в чат(тык). А еще его можно найти в профиле канала
Please open Telegram to view this post
VIEW IN TELEGRAM
👀6
Давно не было постов про React. Пора это исправлять) Сегодня про встроенную поддержку метаданных в 19 версии реакта. Теперь можно легко задавать
Что это за фича?
Раньше для изменения метаданных страницы нужно было использовать такие библиотеки, как react-helmet. Но теперь всё стало намного проще, так как React позволяет добавлять метаданные прямо в код компонента, а обновление тегов выполняется автоматически.
Как это работает?
Метаданные можно описывать прямо в JSX, и React автоматически добавит их в
Пример:
React следит за актуальностью этих данных — они обновляются каждый раз, когда компонент монтируется или изменяется.
Почему это удобно?
— Теперь метаданные задаются прямо в коде React-компонента.
— Всё обновляется автоматически при изменении компонента.
— Никаких дополнительных зависимостей или сложных настроек.
Кто-нибудь уже успел попробовать или еще сидите на 18 версии?
#react #BestPractices
<title>, <meta> и <link> прямо внутри компонентов, без сторонних библиотек.Что это за фича?
Раньше для изменения метаданных страницы нужно было использовать такие библиотеки, как react-helmet. Но теперь всё стало намного проще, так как React позволяет добавлять метаданные прямо в код компонента, а обновление тегов выполняется автоматически.
Как это работает?
Метаданные можно описывать прямо в JSX, и React автоматически добавит их в
<head> страницы.Пример:
const Post = ({ post }) => {
return (
<article>
<h1>{post.title}</h1>
<title>{post.title}</title>
<meta name="description" content={post.description} />
<meta name="keywords" content={post.keywords.join(', ')} />
<link rel="canonical" href={post.url} />
<p>{post.content}</p>
</article>
);
}
React следит за актуальностью этих данных — они обновляются каждый раз, когда компонент монтируется или изменяется.
Почему это удобно?
— Теперь метаданные задаются прямо в коде React-компонента.
— Всё обновляется автоматически при изменении компонента.
— Никаких дополнительных зависимостей или сложных настроек.
Кто-нибудь уже успел попробовать или еще сидите на 18 версии?
#react #BestPractices
🔥13👍5👀2 2
This media is not supported in your browser
VIEW IN TELEGRAM
Хотите сделать скролл плавным и приятным? Вам поможет CSS-свойство
Что делает scroll-behavior?
Свойство
Какие значения бывают?
Пример:
Теперь при переходе к якорным ссылкам или использовании JavaScript для скроллинга ваша страница будет плавно прокручиваться.
Использование в JavaScript:
Пример:
Когда использовать:
— Якорные ссылки, чтобы сделать переходы между разделами страницы удобнее.
— Скролл к элементам, например, кнопки "Вверх" или выделенные области.
— Длинные страницы, чтобы пользователь видел плавные анимации и навигация выглядела более дружелюбно.
Посмотреть реализацию можно тут JSFiddle / CodePen
#CSS #JavaScript
scroll-behavior.Что делает scroll-behavior?
Свойство
scroll-behavior управляет тем, как браузер прокручивает контент. Оно позволяет переключаться между мгновенным и плавным скроллингом.Какие значения бывают?
auto (по умолчанию): Скролл происходит мгновенно, без плавности.smooth: Скролл становится плавнымПример:
html {
scroll-behavior: smooth;
}
Теперь при переходе к якорным ссылкам или использовании JavaScript для скроллинга ваша страница будет плавно прокручиваться.
Использование в JavaScript:
scroll-behavior также работает в сочетании с методами JavaScript, такими как scrollTo или scrollIntoView.Пример:
document.querySelector('#button').addEventListener('click', () => {
document.querySelector('#section').scrollIntoView({
behavior: 'smooth'
});
});
Когда использовать:
— Якорные ссылки, чтобы сделать переходы между разделами страницы удобнее.
— Скролл к элементам, например, кнопки "Вверх" или выделенные области.
— Длинные страницы, чтобы пользователь видел плавные анимации и навигация выглядела более дружелюбно.
Посмотреть реализацию можно тут JSFiddle / CodePen
#CSS #JavaScript
👍8🔥6🆒1
Большинство из нас сталкивалось с задачей, когда нужно отформатировать вывод даты. Например, показать, когда было последнее изменение или указать, когда что-то произойдёт. Часто на проектах для этого пишут кастомные решения, но можно не изобретать велосипед и использовать встроенный инструмент
Пример использования:
1. Локаль — передаётся первым аргументом, например 'ru' или 'en'.
2. Объект опций — опционально передаётся вторым аргументом, где вы можете настроить форматирование.
Что можно передать в опциях?
"lookup" — Строгое сопоставление, используется только точное совпадение локали. Если локаль не найдена, будет использована базовая (например, en вместо en-US).
"best fit"(по умолчанию) — Умное сопоставление, использует ближайшее подходящее значение локали. Например, en-GB может быть интерпретирован как en.
"auto" — Использует слова вроде "вчера", "завтра", "послезавтра".
"always"(по умолчанию) — Всегда отображает числовое значение, например, "1 день назад".
"long"(по умолчанию) — Полная форма (по умолчанию).
"short" — Сокращённая форма, например, "5 мин назад".
"narrow" — Ещё более сокращённая, например, "5м".
Методы Intl.RelativeTimeFormat:
1.
2.
3.
Единицы времени для format которые передаются вторым аргументом:
second — секунды.
minute — минуты.
hour — часы.
day — дни.
week — недели.
month — месяцы.
quarter — кварталы.
year — годы.
Итого
#JavaScript
Intl.RelativeTimeFormat.RelativeTimeFormat - это часть API Intl, которая позволяет форматировать относительное время для разных языков. Он поддерживает локализацию, поэтому вы можете сразу получить перевод фраз на нужный язык. Больше не придётся подключать библиотеки вроде i18n или вручную писать переводы.Пример использования:
const rtf = new Intl.RelativeTimeFormat('ru', { numeric: 'always' });
console.log(rtf.format(-5, 'minute')); // "5 минут назад"
console.log(rtf.format(2, 'day')); // "через 2 дня"
Intl.RelativeTimeFormat принимает следующие аргументы:1. Локаль — передаётся первым аргументом, например 'ru' или 'en'.
2. Объект опций — опционально передаётся вторым аргументом, где вы можете настроить форматирование.
Что можно передать в опциях?
localeMatcher:"lookup" — Строгое сопоставление, используется только точное совпадение локали. Если локаль не найдена, будет использована базовая (например, en вместо en-US).
"best fit"(по умолчанию) — Умное сопоставление, использует ближайшее подходящее значение локали. Например, en-GB может быть интерпретирован как en.
numeric:"auto" — Использует слова вроде "вчера", "завтра", "послезавтра".
"always"(по умолчанию) — Всегда отображает числовое значение, например, "1 день назад".
style:"long"(по умолчанию) — Полная форма (по умолчанию).
"short" — Сокращённая форма, например, "5 мин назад".
"narrow" — Ещё более сокращённая, например, "5м".
Методы Intl.RelativeTimeFormat:
1.
format(value, unit) — Форматирует относительное время, где value — числовое значение (например, -1 или 2), а unit — единица времени (например, 'day' или 'month').2.
formatToParts(value, unit) — Возвращает массив объектов с разбиением форматированного времени на части, где каждая часть описывает, например, число или текст.3.
resolvedOptions() — Возвращает текущие настройки объекта, такие как locale, numeric, style.Единицы времени для format которые передаются вторым аргументом:
second — секунды.
minute — минуты.
hour — часы.
day — дни.
week — недели.
month — месяцы.
quarter — кварталы.
year — годы.
Итого
Intl.RelativeTimeFormat — это готовое решение, которое позволяет избавиться от сложной логики, сделать код чище и нативные методы для форматирования времени.#JavaScript
👍12🔥7👀1
Не переживайте, если что-то не работает. Если бы всё работало, вас бы уволили 😏
Эта фраза идеально отражает реальность работы разработчика. Каждый день мы ищем проблемы и решаем их. Давайте разберем, почему ошибки — это нормально и даже полезно.
Если в проекте всё работает идеально, это может означать:
— Вы просто ещё не нашли проблемы.
— Проект больше не развивается и требует обновлений.
В первом случае у вас точно есть задачи. Во втором — проект устарел и, скорее всего, требует доработок или новых решений.
Почему ошибки — это хорошо?
1. Ошибки помогают расти. Каждая исправленная проблема улучшает ваше понимание кода и систем.
2. Программирование — это решение задач. Даже самые опытные разработчики сталкиваются с проблемами, и это нормально.
3. Ваша ценность в умении решать. Неважно, сколько багов появляется. Главное, как быстро и качественно вы их устраняете.
Как правильно относиться к ошибкам?
1. Не принимайте их на личный счёт. Ошибки — это не показатель вашей некомпетентности, а часть рабочего процесса.
2. Учитесь на них. Каждая ошибка — это шанс понять, что пошло не так, и сделать выводы для будущего.
3. Не бойтесь пробовать. Программирование — это эксперименты. Если что-то не получилось, это не провал, а шаг вперёд.
Напоминание❗️
Ошибки — это то, что делает вас важным специалистом. Исправление багов помогает вам развиваться, улучшает проект и повышает вашу ценность на рынке.
Так что, если сегодня вы застряли на проблеме, помните: если бы всё работало идеально, вашей работы просто не существовало бы🧑💻
#Продуктивность #BestPractices
Эта фраза идеально отражает реальность работы разработчика. Каждый день мы ищем проблемы и решаем их. Давайте разберем, почему ошибки — это нормально и даже полезно.
Если в проекте всё работает идеально, это может означать:
— Вы просто ещё не нашли проблемы.
— Проект больше не развивается и требует обновлений.
В первом случае у вас точно есть задачи. Во втором — проект устарел и, скорее всего, требует доработок или новых решений.
Почему ошибки — это хорошо?
1. Ошибки помогают расти. Каждая исправленная проблема улучшает ваше понимание кода и систем.
2. Программирование — это решение задач. Даже самые опытные разработчики сталкиваются с проблемами, и это нормально.
3. Ваша ценность в умении решать. Неважно, сколько багов появляется. Главное, как быстро и качественно вы их устраняете.
Как правильно относиться к ошибкам?
1. Не принимайте их на личный счёт. Ошибки — это не показатель вашей некомпетентности, а часть рабочего процесса.
2. Учитесь на них. Каждая ошибка — это шанс понять, что пошло не так, и сделать выводы для будущего.
3. Не бойтесь пробовать. Программирование — это эксперименты. Если что-то не получилось, это не провал, а шаг вперёд.
Напоминание
Ошибки — это то, что делает вас важным специалистом. Исправление багов помогает вам развиваться, улучшает проект и повышает вашу ценность на рынке.
Так что, если сегодня вы застряли на проблеме, помните: если бы всё работало идеально, вашей работы просто не существовало бы
#Продуктивность #BestPractices
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4👏2
Привет! Снова начнем неделю с чего-то простого? 🕺
Я хочу признаться, что часто путаюсь, когда слышу "параметры" и "аргументы". Что из этого что? Почему одни названия в одном месте, а другие в другом? Именно поэтому я хочу вместе с вами разобраться в этом вопросе и поставить жирную точку.
Параметры — это имена переменных, которые вы указываете в круглых скобках при объявлении функции. Они как "контейнеры", которые показывают, какие данные функция будет использовать.
Пример:
Здесь
Аргументы — это значения, которые вы передаёте функции при её вызове. Они «заполняют» параметры.
Пример:
Здесь
Если сложно запомнить, думайте так:
1. Параметры — это "пустые места", которые нужно заполнить.
2. Аргументы — это данные, которые заполняют эти места.
Итого
Параметры задают, какие данные нужны функции, а аргументы предоставляют эти данные. Я теперь всегда мысленно разделяю их, чтобы не путаться.
А вы когда-нибудь путали параметры и аргументы?
#JavaScript
Я хочу признаться, что часто путаюсь, когда слышу "параметры" и "аргументы". Что из этого что? Почему одни названия в одном месте, а другие в другом? Именно поэтому я хочу вместе с вами разобраться в этом вопросе и поставить жирную точку.
Параметры — это имена переменных, которые вы указываете в круглых скобках при объявлении функции. Они как "контейнеры", которые показывают, какие данные функция будет использовать.
Пример:
function greet(name) {
console.log(`Привет, ${name}!`);
}
Здесь
name — это параметр. Он задаёт, что функция greet ожидает какое-то значение, но пока не знает, какое именно.Аргументы — это значения, которые вы передаёте функции при её вызове. Они «заполняют» параметры.
Пример:
greet('TrueFrontender');
Здесь
TrueFrontender — это аргумент, который подставляется в параметр name. Теперь функция знает, с чем ей работать.Если сложно запомнить, думайте так:
1. Параметры — это "пустые места", которые нужно заполнить.
2. Аргументы — это данные, которые заполняют эти места.
Итого
Параметры задают, какие данные нужны функции, а аргументы предоставляют эти данные. Я теперь всегда мысленно разделяю их, чтобы не путаться.
А вы когда-нибудь путали параметры и аргументы?
#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥1
На всякий случай напоминаю, что у нас есть чат(тык). Присоединяйтесь 💪
Буду иногда напоминать про него😉
Буду иногда напоминать про него
Please open Telegram to view this post
VIEW IN TELEGRAM