• Как устроен Next.js: разбираем ключевые особенности фреймворка на примере небольшого pet-проекта
• Всего несколько строк CSS для плавных переходов между страницами
• 5 полезных фреймворков и библиотек для начинающего фронтенд-разработчика на конец 2024 года. Часть 2
• Проектная работа «Оно тебе надо» от Яндекс практикума
• Готовимся к вопросам по вёрстке на интервью Frontend-разработчика: «Какие знаешь псевдо-классы?»
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Статья знакомит с фреймворком Next.js, рекомендованным командой React для новых проектов. На примере pet-проекта рассматриваются базовые возможности и преимущества использования Next.js.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте кнопку, при нажатии на которую появляется анимация загрузочного индикатора (спиннера) на 3 секунды. После завершения загрузки спиннер исчезает, а на кнопке отображается текст "Готово!".
Решение задачи
<button id="loadButton">Начать загрузку</button>
<div id="spinner" class="spinner" style="display: none;"></div>
button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}
.spinner {
margin-top: 10px;
width: 30px;
height: 30px;
border: 4px solid#ccc ;
border-top: 4px solid#007bff ;
border-radius: 50%;
animation: spin 1s linear infinite;
}@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
const button = document.getElementById('loadButton');
const spinner = document.getElementById('spinner');
button.addEventListener('click', () => {
button.disabled = true;
button.textContent = 'Загрузка...';
spinner.style.display = 'block';
setTimeout(() => {
button.textContent = 'Готово!';
spinner.style.display = 'none';
button.disabled = false;
}, 3000);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
Начинающий Typescript Fullstack разработчик (NestJS, React)
Frontend-разработчик
Frontend-разработчик React, Canvas, WebGL, Pixi.js, Skia
JavaScript-разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Кнопка с вылетающими конфетти при нажатии. Сделана на CSS и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Event delegation — это техника, позволяющая обрабатывать события на родительском элементе вместо установки обработчиков на каждый дочерний элемент. Это особенно полезно, если дочерние элементы динамически добавляются или их много.// Родительский элемент
const parent = document.querySelector('#parent');
// Используем делегирование
parent.addEventListener('click', (event) => {
if (event.target.matches('.child')) {
console.log(`Клик по элементу: ${event.target.textContent}`);
}
});
// Динамическое добавление дочерних элементов
const newChild = document.createElement('div');
newChild.className = 'child';
newChild.textContent = 'Новый элемент';
parent.appendChild(newChild);
🗣️ В этом примере обработчик событий на родительском элементе обрабатывает клики по дочерним элементам, включая добавленные динамически. Это упрощает код и повышает производительность.
Please open Telegram to view this post
VIEW IN TELEGRAM
Middle Frontend Developer
• React, JavaScript, TypeScript, Webpack, Git, Jira, Confluence• Уровень дохода не указан | 1–3 годаReact Native Developer
• React Native, JavaScript, TypeScript, Redux, Git, CI/CD, GraphQL, REST API• до 300 000 ₽ на руки | 3–6 летФронтенд-разработчик (Vue.js / React)
• JavaScript, TypeScript, Vue.js, React, Sass, Less, Git, Vite, Docker, CI/CD• от 190 000 ₽ на руки | 3–6 летPlease open Telegram to view this post
VIEW IN TELEGRAM
Обсуждаем миграцию с jQuery на React. В статье — реальный опыт, причины перехода, основные шаги и способы преодоления сложностей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте поле ввода и список элементов. При вводе текста в поле должны отображаться только те элементы списка, которые содержат введённый текст. Игнорируйте регистр символов.
Требования:
• При вводе текста выполняется фильтрация: сравниваем введённую строку с каждым элементом списка.• Элементы, соответствующие фильтру, остаются видимыми, остальные скрываются.Решение задачи
<input type="text" id="filterInput" placeholder="Фильтр...">
<ul id="items">
<li>Яблоко</li>
<li>Банан</li>
<li>Апельсин</li>
<li>Груша</li>
</ul>
const input = document.getElementById('filterInput');
const listItems = document.querySelectorAll('#items li');
input.addEventListener('input', () => {
const filter = input.value.toLowerCase();
listItems.forEach(li => {
li.style.display = li.textContent.toLowerCase().includes(filter) ? '' : 'none';
});
});
Please open Telegram to view this post
VIEW IN TELEGRAM
Центрирование без боли, улучшенный тёмный режим, анимация скрытых элементов и даже решения математических задач — меньше сложностей, больше возможностей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Сцена с эффектом сломанного стекла в месте клика. Сделана на CSS и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
Senior Frontend разработчик
Senior Frontend Developer
Frontend-разработчик
Senior Frontend-разработчик JavaScript/React
Please open Telegram to view this post
VIEW IN TELEGRAM
Новая мажорная версия Vite от 26 ноября 2024 года — первый релиз после анонса VoidZero. Рассмотрим ключевые изменения и будущие векторы развития инструмента для сборки приложений.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Shadow DOM — это ключевая часть технологии Web Components, которая позволяет создавать инкапсулированные области DOM с собственным стилем и поведением. Теневые DOM-деревья изолированы от остального документа, что предотвращает конфликты стилей и упрощает создание переиспользуемых компонентов.
// Создание элемента с Shadow DOM
const host = document.createElement('div');
const shadowRoot = host.attachShadow({ mode: 'open' });
// Добавление стилей и контента
shadowRoot.innerHTML = `
<style>
p {
color: blue;
}
</style>
<p>Это текст внутри Shadow DOM</p>
`;
document.body.appendChild(host);
console.log(document.querySelector('p')); // null (элемент скрыт из глобального DOM)
🗣️ В этом примере текст внутри Shadow DOM изолирован. Стили из Shadow DOM не влияют на остальную страницу, и наоборот. Shadow DOM полезен для создания самодостаточных UI-компонентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Lead React Native Developer
Lead Frontend Developer (React)
Ведущий Motion 3D / Front End Разработчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨 8 лучших коллекций ресурсов для фронтендеров
Лучшие наборы инструментов, которые содержат все необходимое для современной фронтенд-разработки.
Читать...
Лучшие наборы инструментов, которые содержат все необходимое для современной фронтенд-разработки.
Читать...
Фронтенд-разработчик
Frontend-разработчик
Frontend-разработчик сайтов на WordPress / Верстальщик сайтов / PHP программист
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет ограничения TypeScript 5.7 в работе с расширением типов, демонстрирует проблему интерсекции с одинаковыми свойствами и предлагает утилиту Extend для корректной обработки таких случаев.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает массив и возвращает новый массив, содержащий только уникальные значения из исходного массива.
Пример:
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = getUniqueValues(numbers);
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
Решение задачи
function getUniqueValues(arr) {
return [...new Set(arr)];
}
// Пример использования
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = getUniqueValues(numbers);
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
Please open Telegram to view this post
VIEW IN TELEGRAM
• RUINSWORLD: Многопользовательский шутер с открытым миром для браузера на js/ts, Three и Vue. Бета-версия
• Рецепты TypeScript: простое тестирование типов
• Как я создала приложение, которое решает, что мне есть
• Vite 6.0: Новые возможности и будущее веб-разработки
• Наиболее эффективные методы улучшения Core Web Vitals
Please open Telegram to view this post
VIEW IN TELEGRAM