Вёрстка сайтов | HTML, CSS, JS
4.83K subscribers
636 photos
1 video
4 files
1.08K links
👋 Привет, друг!

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

Связь: @Tigran1963
Download Telegram
TypeScript – Типизация query-параметров

Условие:
Есть функция parseQuery, которая принимает строку вроде ?name=John&age=20&admin=true и возвращает объект.

Задача:
Напиши типизацию этой функции в TS так, чтобы результат автоматически имел корректные типы:

const result = parseQuery('?name=John&age=20&admin=true');
/*
typeof result должно быть:
{
name: string;
age: number;
admin: boolean;
}
*/


#домашка
👍2
Как сделать сравнение паролей на js

<form class="form" action="address.txt" method="get" >
<input id="password" name="password" type="password" placeholder="Пароль" >
<input id="password-check" name="password-check" type="password" placeholder="Подтверждение пароля" title="" >
<input id="submit" name="submit" type="submit" value="Создать аккаунт">
</form>
<script>
window.addEventListener('DOMContentLoaded', function() {
var form = document.querySelector('.form'),
pas = form.querySelectorAll('#password, #password-check');
form.addEventListener('submit', function(e) {
var err = !(pas[0].value && (pas[0].value == pas[1].value))
pas[1].setAttribute("title", err ? 'err' : '');
err && e.preventDefault();
}, false);
pas[1].addEventListener('input', function(e) {
var err = !(pas[0].value == pas[1].value)
pas[1].setAttribute("title", err ? 'err' : '');
}, false);
});
</script>

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

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

#практика | #макет
👎5👍3
CSS – Адаптивная сетка карточек с auto-fit

Условие
:
Сделай сетку карточек (например, .card), которая:
- вмещает как можно больше карточек в ряд,
- карточки имеют минимальную ширину 200px,
- автоматически переносятся на новую строку при нехватке места,
- равномерно распределяются по ширине контейнера.

Ограничения:
- Используй только CSS Grid.
- Без медиа-запросов.

Подсказка: Используй grid-template-columns: repeat(auto-fit, minmax(...)).

#домашка
👍4
5 причин, почему твоя вёрстка "плывёт"
(и как это быстро пофиксить)

1. Отсутствие box-sizing: border-box;
Контейнеры с паддингами становятся шире, чем ты думаешь. Добавь это в * { box-sizing: border-box; }.

2. Фиксированные ширины
width: 1200px — плохая идея. Лучше max-width и width: 100%.

3. Неиспользование Flex/Grid
Стилишь всё через margin, float, position? Забудь. Переходи на флекс или грид.

4. Нет ресета стилей
У каждого браузера свои отступы. Используй normalize.css или напиши свой ресет.

5. Работа без контейнера
Если у тебя нет центрального контейнера (.container { max-width; margin: 0 auto; padding: ... }) — верстка начнёт вести себя как попало.

#полезности
👍121
Как сделать спойлеры на чистом JS c возможностью включения/отключения при определенной ширине?

Стили меняйте на свои, а также не забываете про обнуляющие стили

Посмотреть код 🧑‍💻

#практика | #полезности
Макет для тренировки (male estate)

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

#практика | #макет
👍2