Вёрстка сайтов | HTML, CSS, JS
4.8K subscribers
650 photos
2 videos
4 files
1.1K links
👋 Привет, друг!

В этом канале я выкладываю структурированные, обучающие уроки и материалы по вёрстке сайтов и фронтенду.
Присоединяйся и начинай учиться!

Связь: @Tigran1963
Download Telegram
Спойлеры с помощью <details>

Смотреть на codepen 👨‍💻

#практика
👍2
Макет для тренировки (ДонецкОкна)

Перейти к макету 🧑‍💻

#практика | #макет
👎8👍2
JS Вопрос:

Какой метод объединяет все элементы массива в строку?
Anonymous Quiz
24%
split()
54%
join()
7%
slice()
8%
connect()
7%
Посмотреть ответы
👍51
Пример использования StyleObserver
(Эта библиотека позволяет привязывать обратные колбэки JavaScript к изменениям вычисляемых значений свойств CSS)

Смотреть на codepen 👨‍💻

#практика
👍2
Макет для тренировки (Империум Лофт)

Перейти к макету 🧑‍💻

#практика | #макет
👍1
HTML5 Drag and Drop API — перетаскивание без библиотек

Если тебе нужно реализовать функциональность, похожую на Trello, канбан-доски, визуальные редакторы или просто перемещение блоков — тебе не нужен фреймворк. HTML5 Drag & Drop API позволяет всё это сделать на чистом JavaScript.

Базовый пример
HTML:
<div id="box" draggable="true">Перетащи меня</div>

Атрибут draggable="true" говорит браузеру: этот элемент можно тащить.

JS:
const box = document.getElementById("box");
box.addEventListener("dragstart", () => {
box.style.opacity = "0.5";
});

box.addEventListener("dragend", () => {
box.style.opacity = "1";
});


Что ты можешь делать с Drag and Drop API:
- Перетаскивать элементы между разными контейнерами
- Сортировать блоки внутри одной области
- Строить визуальные drag’n’drop редакторы
- Загружать файлы через перетаскивание
- Работать с dataTransfer для передачи информации

Важно помнить:
- Drag & Drop работает только для элементов DOM, не для всего подряд.
- Некоторые события (dragover, drop) требуют e.preventDefault(), иначе браузер блокирует действие.
- Если хочешь поддерживать мобильные устройства — придётся использовать кастомные решения, т.к. HTML5 Drag&Drop плохо работает на touch-экранах.

Подробнее:
https://developer.mozilla.org/ru/docs/Web/API/HTML_Drag_and_Drop_API

#html | #полезности
👍5
Как браузер рисует сайт: что такое layout, paint и reflow

Когда ты открываешь любую страницу в браузере, начинается цепочка процессов. Чтобы ты понимал, производительность вёрстки — это не только «как красиво», но и насколько быстро всё рендерится. Вот что происходит «под капотом»:

Этапы рендеринга сайта
1. HTML → DOM (Document Object Model)
Браузер читает HTML и строит древовидную структуру. Всё, что ты написал — <div>, <p>, <h1> — превращается в объекты, которые JS может изменять.
2. CSS → CSSOM (CSS Object Model)
Параллельно браузер анализирует CSS. Правила, селекторы, каскад, наследование — всё сводится в дерево стилей.
3. DOM + CSSOM = Render Tree
Из двух деревьев строится дерево отрисовки. Оно содержит только те элементы, которые реально отображаются (например, display: none сюда не попадают).

Layout (или reflow)
Браузер рассчитывает размеры, положение и геометрию всех элементов: где находится блок, какая у него ширина и высота, отступы, границы, вложенность и т.д.
Что может вызвать повторный layout (reflow):
- изменение размеров (width, height)
- изменение положения (top, left, margin, padding)
- изменение шрифта
- добавление/удаление элементов в DOM

❗️Это один из самых тяжёлых этапов — он может тормозить страницу.

Paint
Далее браузер «рисует» пиксели — цвет фона, бордеры, тени, изображения и т.д. Это проще, чем layout, но всё равно требует ресурсов.

Composite
Если на странице есть слои (например, position: fixed, transform, opacity) — они объединяются на этом этапе. Это последний шаг перед выводом на экран.

Как избежать лишних затрат
Не меняй width, top, margin, padding — это вызывает reflow.

Лучше используй transform: translate() и opacity — это затрагивает только composite, и работает быстрее.

Если используешь анимации — делай их через transform, а не left/right.

Как проверить
Открой DevTools → вкладка Performance
→ нажми «Record»
→ соверши действия на странице
→ посмотри, где происходит Layout, Paint, Composite.

#полезности
👍7
Toast Notifications на чистом css

Смотреть на codepen 👨‍💻

#практика
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача на TypeScript

Дан массив задач:
type Task = { id: number; title: string; priority: 'low' | 'medium' | 'high' };

const tasks: Task[] = [
{ id: 1, title: 'Do laundry', priority: 'low' },
{ id: 2, title: 'Finish project', priority: 'high' },
{ id: 3, title: 'Buy groceries', priority: 'medium' },
];

Отсортируй задачи по приоритету: сначала high, потом medium, потом low.

#домашка
👍2👎1