
В этом наборе упражнений вы попрактикуетесь в динамическом изменении классов HTML элементов с помощью JavaScript. Вы научитесь добавлять, удалять и переключать классы, что является фундаментальным навыком для создания интерактивных веб-страниц. Каждое задание предоставит вам готовый HTML и частично написанный JavaScript код, где вам нужно будет заполнить пропуски, чтобы добиться желаемого результата.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Задание 1. Простое переключение класса
Добавьте JavaScript код, чтобы при клике на кнопку, к параграфу добавлялся класс "highlight". При повторном клике класс должен удаляться.
.highlight {
background-color: yellow;
}
<button id="myButton">Переключить класс</button>
<p id="myParagraph">Это параграф для переключения класса.</p>
const button = document.input__1("#myButton");
const paragraph = document.input__2("myParagraph");
button.addEventListener("click", () => {
paragraph.input__3.toggle("highlight");
});
Задание 2. Переключение класса на нескольких элементах
Измените код так, чтобы при клике на кнопку, класс "active" переключался у всех элементов списка.
.active {
font-weight: bold;
color: blue;
}
<button id="activateButton">Активировать список</button>
<ul id="myList">
<li class="list-item">Пункт 1</li>
<li class="list-item">Пункт 2</li>
<li class="list-item">Пункт 3</li>
</ul>
const activateButton = document.input__1("#activateButton");
const listItems = document.input__2(".list-item");
activateButton.addEventListener("click", () => {
listItems.forEach(item => {
item.input__3.toggle("active");
});
});
Задание 3. Условное переключение класса
Добавьте условие, чтобы класс "special" добавлялся только к четным элементам списка при клике на кнопку.
.special {
background-color: lightgreen;
}
<button id="specialButton">Сделать четные элементы особенными</button>
<ul id="itemList">
<li class="item">Элемент 1</li>
<li class="item">Элемент 2</li>
<li class="item">Элемент 3</li>
<li class="item">Элемент 4</li>
</ul>
const specialButton = document.input__1("specialButton");
const items = document.input__2(".item");
specialButton.addEventListener("click", () => {
items.forEach((item, index) => {
if (input__3 % 2 === 0) { // Проверяем, что индекс четный
item.input__4.toggle("special");
}
});
});
Задание 4. Добавление класса при наведении мыши
Реализуйте добавление класса "hovered" к кнопке при наведении курсора мыши и удаление этого класса при уходе курсора с кнопки.
.hovered {
background-color: lightblue;
border: 2px solid blue;
}
<button id="hoverButton">Наведи на меня</button>
const hoverButton = document.input__1("hoverButton");
hoverButton.addEventListener("mouseenter", () => {
hoverButton.input__2.add("hovered");
});
hoverButton.addEventListener("mouseleave", () => {
hoverButton.input__3.remove("hovered");
});
Задание 5. Удаление класса по клику
Сделайте так, чтобы при клике на текстовое поле, с него удалялся класс "error", если он есть.
.error {
border: 2px solid red;
}
<input type="text" id="inputField" class="error" value="Ошибка">
<p>Кликните по текстовому полю, чтобы убрать ошибку.</p>
const inputField = document.input__1("inputField");
inputField.addEventListener("click", () => {
inputField.input__2.remove("error");
});
Задание 6. Переключение класса в зависимости от класса другого элемента
Реализуйте переключение класса "dark-theme" у элемента body, если кнопка имеет класс "light-mode". Если у кнопки нет класса "light-mode", то класс "dark-theme" у body должен быть удален.
.dark-theme {
background-color: #333;
color: white;
}
.light-mode {
background-color: lightgray;
}
<button id="themeButton" class="light-mode">Светлая тема</button>
<div id="content">Содержимое страницы</div>
const themeButton = document.input__1("themeButton");
const body = document.input__2("body");
themeButton.addEventListener("click", () => {
if (themeButton.input__3.contains("light-mode")) {
body.input__4.toggle("dark-theme");
} else {
body.input__5.remove("dark-theme");
}
});
Задание 7. Переключение между двумя классами
Сделайте так, чтобы при клике на кнопку, div переключался между классами "class-a" и "class-b". Изначально у div должен быть класс "class-a".
.class-a {
background-color: orange;
padding: 20px;
}
.class-b {
background-color: purple;
color: white;
padding: 20px;
}
<button id="switchClassButton">Переключить классы</button>
<div id="myDiv" class="class-a">Этот div имеет класс class-a</div>
const switchClassButton = document.input__1("switchClassButton");
const myDiv = document.input__2("#myDiv");
switchClassButton.addEventListener("click", () => {
if (myDiv.input__3.contains("class-a")) {
myDiv.input__4.remove("class-a");
myDiv.input__5.add("class-b");
} else {
myDiv.input__6.remove("class-b");
myDiv.input__7.add("class-a");
}
});
Задание 8. Переключение нескольких классов с помощью `classList.toggle()`
Используйте метод `classList.toggle()` для одновременного переключения классов "bold" и "italic" у параграфа при клике на кнопку.
.bold {
font-weight: bold;
}
.italic {
font-style: italic;
}
<button id="styleButton">Переключить стили</button>
<p id="textParagraph">Этот текст может стать жирным и курсивным.</p>
const styleButton = document.input__1("styleButton");
const textParagraph = document.input__2("#textParagraph");
styleButton.addEventListener("click", () => {
textParagraph.input__3.toggle("bold");
textParagraph.input__4.toggle("italic");
});