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

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

Связь: @Tigran1963
Download Telegram
Макет для тренировки (ООО ИСТ)

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

#практика | #макет
👍1🔥1
Задача: Ленивый бесконечный генератор простых чисел

Напиши генератор primeGenerator(), который при каждом вызове next() будет возвращать следующее простое число.

Пример:
const gen = primeGenerator();
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
console.log(gen.next().value); // 5
console.log(gen.next().value); // 7
console.log(gen.next().value); // 11


Подсказка:
Можно реализовать простую проверку на простое число (через деление на числа до √n), и в генераторе перебирать числа от 2 и выше, возвращая только простые

#домашка
👍4
Фреймворк foundation

Читать 👨‍💻

#css | #теория
👍1
Задача: Сверстать и запрограммировать интерактивный светофор, который:

Имеет три круга (красный, жёлтый, зелёный).
При клике на кнопку «Старт» начинает переключать цвета в цикле:
Красный → Жёлтый → Зелёный → Жёлтый → Красный …
Каждый цвет горит заданное время:
Красный — 3 секунды
Жёлтый — 1 секунда
Зелёный — 3 секунды
После нажатия кнопки «Стоп» светофор останавливается на текущем цвете.
Перезапуск с кнопки «Старт» продолжает с текущего цвета, а не с начала.

Усложнение:
Сделать, чтобы при изменении размера окна светофор автоматически масштабировался и занимал 30% от ширины экрана, сохраняя правильные пропорции кругов и расстояния между ними.

#домашка
👍6
HTML <template> и <slot> — динамический контент без фреймворков

Раньше, чтобы повторно вставлять куски HTML, приходилось дублировать код или генерировать его в JS строками.
Но есть два тега, которые сильно упрощают задачу: <template> и <slot>.

1. <template> — заготовка для HTML
Этот тег не отображается на странице, пока вы явно не вставите его содержимое через JavaScript.
Пример:
<template id="card-template">
<div class="card">
<h3></h3>
<p></p>
</div>
</template>

<div id="container"></div>

<script>
const template = document.getElementById('card-template');
const container = document.getElementById('container');

const data = [
{ title: "Карточка 1", text: "Первое описание" },
{ title: "Карточка 2", text: "Второе описание" }
];

data.forEach(item => {
const clone = template.content.cloneNode(true);
clone.querySelector('h3').textContent = item.title;
clone.querySelector('p').textContent = item.text;
container.appendChild(clone);
});
</script>


Что происходит:
template.content — это "невидимый" фрагмент HTML.
cloneNode(true) копирует весь его контент.
Мы изменяем текст и вставляем в DOM.

2. <slot> — динамическое содержимое в Web Components
<slot> используется внутри кастомных элементов, чтобы вставлять туда любой HTML снаружи.
Пример:
<template id="user-card">
<div class="user-card">
<slot name="avatar"></slot>
<slot name="info"></slot>
</div>
</template>
<script>
class UserCard extends HTMLElement {
constructor() {
super();
const shadow = this.attachShadow({ mode: 'open' });
const template = document.getElementById('user-card');
shadow.appendChild(template.content.cloneNode(true));
}
}
customElements.define('user-card', UserCard);
</script>

<user-card>
<img slot="avatar" src="avatar.png" width="50">
<div slot="info">Имя: Тигран</div>
</user-card>


Что происходит:
Создаём кастомный элемент <user-card>.
Внутри шаблона <slot> указывает, куда вставлять содержимое.
Атрибут slot у дочерних элементов определяет, в какой слот они попадут.
Когда применять
Генерация повторяющихся блоков (карточки, списки, таблицы).
Создание переиспользуемых UI-компонентов без библиотек.
В связке с Web Components для сложных интерфейсов.

#полезности #html
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM