
В этом разделе вы освоите ключевые навыки работы с DOM в Javascript, фокусируясь на динамическом изменении стилей элементов путем удаления CSS классов. Вы начнете с простых задач, где нужно будет удалить один класс у элемента, и постепенно перейдете к более сложным сценариям, включая удаление нескольких классов, удаление классов у нескольких элементов и условное удаление классов. Эти упражнения помогут вам понять, как Javascript взаимодействует с HTML и CSS, позволяя вам создавать интерактивные и динамичные веб-страницы. Внимательно читайте описания заданий и используйте подсказки, если столкнетесь с трудностями.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Задание 1: Простое удаление класса
Удалите класс "highlight" у параграфа с id "myParagraph". После выполнения кода параграф должен перестать быть выделенным.
.highlight {
background-color: yellow;
padding: 10px;
}
<p id="myParagraph" class="highlight">Этот параграф выделен желтым цветом.</p>
document.input__1("myParagraph").classList.input__2("highlight");
Задание 2: Удаление нескольких классов
Удалите классы "highlight" и "bold" у кнопки. Кнопка должна потерять и желтый фон, и жирный шрифт.
.highlight {
background-color: yellow;
}
.bold {
font-weight: bold;
}
<button id="myButton" class="highlight bold">Кнопка с двумя классами</button>
const button = document.input__1("myButton");
button.classList.input__2("highlight");
button.classList.input__3("bold");
Задание 3: Удаление класса у нескольких элементов
Удалите класс "active" у всех элементов списка `li`. Все элементы списка должны перестать быть подчеркнутыми.
.active {
text-decoration: underline;
}
<ul id="myList">
<li class="active">Пункт 1</li>
<li class="active">Пункт 2</li>
<li class="active">Пункт 3</li>
</ul>
const listItems = document.input__1("li.active");
listItems.forEach(function(item) {
item.classList.input__2("active");
});
Задание 4: Удаление класса по условию
Удалите класс "error" у элемента с id "message", только если у него также есть класс "visible". Сообщение об ошибке должно исчезнуть, только если оно видимо.
.error {
color: red;
}
.visible {
display: block;
}
<div id="message" class="error visible">Ошибка!</div>
const messageElement = document.input__1("message");
if (messageElement.classList.input__2("visible")) {
messageElement.classList.input__3("error");
}
Задание 5: Удаление класса при клике
Добавьте обработчик события на кнопку с id "removeClassButton". При клике на кнопку, класс "highlight" должен быть удален у параграфа с id "textBlock".
.highlight {
background-color: lightblue;
padding: 5px;
}
<button id="removeClassButton">Убрать выделение</button>
<p id="textBlock" class="highlight">Этот блок текста выделен.</p>
const button = document.input__1("removeClassButton");
const textBlock = document.input__2("textBlock");
button.addEventListener("click", function() {
textBlock.classList.input__3("highlight");
});
Задание 6: Удаление класса у родительского элемента
При клике на кнопку с id "childButton", удалите класс "parent-highlight" у родительского элемента этой кнопки.
.parent-highlight {
border: 2px solid red;
padding: 10px;
}
<div id="parentDiv" class="parent-highlight">
<button id="childButton">Удалить выделение родителя</button>
</div>
const childButton = document.input__1("childButton");
childButton.addEventListener("click", function() {
const parentElement = childButton.input__2;
parentElement.classList.input__3("parent-highlight");
});
Задание 7: Удаление класса у предыдущего элемента
При клике на кнопку с id "removePrevButton", удалите класс "prev-highlight" у предыдущего элемента параграфа с id "targetParagraph".
.prev-highlight {
background-color: lightgreen;
padding: 5px;
}
<div id="prevElement" class="prev-highlight">Предыдущий элемент</div>
<p id="targetParagraph">Целевой параграф</p>
<button id="removePrevButton">Убрать выделение предыдущего</button>
const button = document.input__1("removePrevButton");
const targetParagraph = document.input__2("targetParagraph");
button.addEventListener("click", function() {
const prevElement = targetParagraph.input__3;
prevElement.classList.input__4("prev-highlight");
});
Задание 8: Удаление класса с задержкой
При клике на кнопку с id "delayButton", удалите класс "delayed-highlight" у параграфа с id "delayParagraph" через 2 секунды.
.delayed-highlight {
background-color: orange;
transition: background-color 0.5s ease;
}
<button id="delayButton">Удалить выделение с задержкой</button>
<p id="delayParagraph" class="delayed-highlight">Этот параграф выделен оранжевым.</p>
const button = document.input__1("delayButton");
const delayParagraph = document.input__2("delayParagraph");
button.addEventListener("click", function() {
setTimeout(function() {
delayParagraph.classList.input__3("delayed-highlight");
}, input__4);
});