Изменение позиционирования элемента

Тренажер по работе с HTML DOM на JavaScript для пользователей с начальным и средним уровнем подготовки.

Тренажер JavaScript: Покоряем HTML DOM

В этом тренажере вы попрактикуетесь изменять позиционирование HTML-элементов с помощью JavaScript. Вам будут представлены задачи, где нужно будет манипулировать свойствами CSS, такими как `position`, `top`, `left`, `right`, `bottom`, `transform`, `z-index` и другими, чтобы добиться желаемого расположения элементов на странице. Каждое задание содержит готовый HTML-код, CSS (если необходимо) и JavaScript-код с пропусками, которые вам нужно заполнить. После ввода кода вы сможете сразу увидеть результат.

Список тем

Изменение position на static

Задан элемент div с идентификатором "block". Изначально у него установлено абсолютное позиционирование. Измените его позиционирование на статическое, используя JavaScript.

CSS
#block {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 100px;
  height: 100px;
  background-color: red;
}
HTML
Восстановить HTML
<div id="block"></div>
JavaScript
document.getElementById("block").style.position = input__1;
Используйте свойство `style.position` элемента, чтобы изменить его позиционирование. Установите значение `static`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Изменение position на relative

Имеется элемент div с id "relative-block". Измените его позиционирование на относительное (relative) с помощью JavaScript.

CSS
#relative-block {
  width: 150px;
  height: 150px;
  background-color: blue;
}
HTML
Восстановить HTML
<div id="relative-block"></div>
JavaScript
document.getElementById(input__1).style.input__2 = "relative";
Используйте свойство `style.position`, чтобы установить для элемента относительное позиционирование.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Смещение элемента с relative позиционированием

Элемент с id "offset-block" имеет относительное позиционирование. Сместите его на 20 пикселей вниз и на 30 пикселей вправо, используя JavaScript.

CSS
#offset-block {
  position: relative;
  width: 100px;
  height: 100px;
  background-color: green;
}
HTML
Восстановить HTML
<div id="offset-block"></div>
JavaScript
const block = document.getElementById("offset-block");
block.style.top = input__1;
block.style.left = input__2;
Используйте свойства `style.top` и `style.left` для смещения элемента с относительным позиционированием.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Изменение position на absolute

Задан элемент div с id "absolute-block". Измените его позиционирование на абсолютное, используя JavaScript, и установите его в верхний левый угол родительского элемента.

CSS
.container {
  position: relative;
  width: 300px;
  height: 200px;
  border: 1px solid black;
}

#absolute-block {
  width: 50px;
  height: 50px;
  background-color: orange;
}
HTML
Восстановить HTML
<div class="container">
  <div id="absolute-block"></div>
</div>
JavaScript
document.getElementById("absolute-block").style.position = "absolute";
document.getElementById("absolute-block").style.top = input__1;
document.getElementById("absolute-block").style.left = input__2;
Используйте `style.position = "absolute"`, а затем `style.top = "0"` и `style.left = "0"`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Абсолютное позиционирование относительно родителя

Есть контейнер (div с классом "container") и внутри него элемент (div с id "inner-block"). Сделайте так, чтобы "inner-block" был абсолютно спозиционирован в правом нижнем углу "container".

CSS
.container {
  position: relative;
  width: 400px;
  height: 300px;
  border: 1px solid black;
}

#inner-block {
  width: 80px;
  height: 80px;
  background-color: purple;
}
HTML
Восстановить HTML
<div class="container">
  <div id="inner-block"></div>
</div>
JavaScript
const innerBlock = document.getElementById("inner-block");
innerBlock.style.position = "absolute";
innerBlock.style.bottom = input__1;
innerBlock.style.right = input__2;
Установите для "container" `position: relative;`, а для "inner-block" `position: absolute;`, `bottom: 0;` и `right: 0;`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Изменение z-index

Имеются два перекрывающихся блока (div с id "block1" и "block2"). Изначально "block2" находится поверх "block1". С помощью JavaScript измените z-index так, чтобы "block1" оказался поверх "block2".

CSS
#block1 {
  position: absolute;
  top: 20px;
  left: 20px;
  width: 100px;
  height: 100px;
  background-color: red;
  z-index: 1;
}

#block2 {
  position: absolute;
  top: 40px;
  left: 40px;
  width: 100px;
  height: 100px;
  background-color: blue;
  z-index: 2;
}
HTML
Восстановить HTML
<div id="block1"></div>
<div id="block2"></div>
JavaScript
document.getElementById("block1").style.zIndex = input__1;
Используйте свойство `style.zIndex`. Установите для "block1" z-index больше, чем у "block2".
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Использование transform: translate()

Сместите элемент с id "translate-block" на 50 пикселей вправо и на 20 пикселей вниз, используя функцию `translate()` свойства `transform`.

CSS
#translate-block {
 width: 120px;
 height: 80px;
 background-color: yellow;
}
HTML
Восстановить HTML
<div id="translate-block"></div>
JavaScript
document.getElementById("translate-block").style.transform = input__1;
Используйте `style.transform = "translate(50px, 20px)"`. Не забудьте про кавычки и единицы измерения (px).
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Отрицательные значения в translate()

Сместите элемент с id "negative-translate-block" на 30 пикселей влево и на 10 пикселей вверх, используя `transform: translate()`.

CSS
#negative-translate-block {
  width: 100px;
  height: 100px;
  background-color: lightblue;
}
HTML
Восстановить HTML
<div id="negative-translate-block"></div>
JavaScript
const block = document.getElementById("negative-translate-block");
block.style.input__1 = "translate(input__2)";
Используйте отрицательные значения в `translate()`: `style.transform = "translate(-30px, -10px)"`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Изменение position на fixed

Задан элемент div с идентификатором "fixed-block". Измените его позиционирование на фиксированное (fixed), используя JavaScript, и установите его в правый нижний угол экрана.

CSS
#fixed-block {
  width: 70px;
  height: 70px;
  background-color: #f0f;
}
HTML
Восстановить HTML
<div id="fixed-block"></div>
JavaScript
const fixedBlock = document.getElementById(input__1);
fixedBlock.style.position = input__2;
fixedBlock.style.bottom = "0";
fixedBlock.style.right = "0";
Используйте `style.position = "fixed"`, а затем `style.bottom = "0"` и `style.right = "0"`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Комбинирование translate() и rotate()

Поверните элемент с id "rotate-block" на 45 градусов по часовой стрелке и сместите его на 100 пикселей вправо, используя свойство `transform`.

CSS
#rotate-block {
  width: 100px;
  height: 50px;
  background-color: coral;
}
HTML
Восстановить HTML
<div id="rotate-block"></div>
JavaScript
document.getElementById("rotate-block").style.input__1 = "rotate(input__2) translate(input__3)";
Используйте `style.transform = "rotate(45deg) translate(100px)"`. Функции можно комбинировать.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Центрирование элемента с помощью absolute и transform

Спозиционируйте элемент с id "center-block" строго по центру родительского контейнера, используя комбинацию `position: absolute` и `transform: translate()`. Родительский контейнер имеет класс "parent-container".

CSS
.parent-container {
 position: relative;
 width: 300px;
 height: 200px;
 border: 1px solid black;
}

#center-block {
 width: 50px;
 height: 50px;
 background-color: limegreen;
}
HTML
Восстановить HTML
<div class="parent-container">
 <div id="center-block"></div>
</div>
JavaScript
const centerBlock = document.getElementById("center-block");
centerBlock.style.position = "absolute";
centerBlock.style.top = "50%";
centerBlock.style.left = "50%";
centerBlock.style.transform = input__1;
Установите для родителя `position: relative;`. Для "center-block": `position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);`
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Изменение размеров элемента

Задан элемент с id "resizable-block". Увеличьте его ширину до 200px, а высоту до 150px с помощью JavaScript.

CSS
#resizable-block {
  width: 100px;
  height: 100px;
  background-color: teal;
}
HTML
Восстановить HTML
<div id="resizable-block"></div>
JavaScript
const resizableBlock = document.getElementById("resizable-block");
resizableBlock.style.width = input__1;
resizableBlock.style.height = input__2;
Используйте свойства `style.width` и `style.height`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Смена изображения при наведении

Имеется изображение с id "myImage". При наведении курсора мыши на изображение (событие `mouseover`), измените его `src` на другую картинку. При убирании курсора (событие `mouseout`) верните исходное изображение.

HTML
Восстановить HTML
<img id="myImage" src="https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png" width="150" height="150">
JavaScript
const image = document.getElementById("myImage");
image.onmouseover = function() {
 image.src = input__1;
};
image.onmouseout = function() {
 image.src = input__2;
};
Используйте обработчики событий `onmouseover` и `onmouseout` у элемента image. Внутри обработчиков меняйте свойство `src`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Плавное перемещение элемента

Сделайте так, чтобы при клике на кнопку с id "moveButton", элемент с id "smooth-block" плавно перемещался вправо на 200 пикселей. Используйте CSS transition.

CSS
#smooth-block {
 width: 100px;
 height: 100px;
 background-color: crimson;
 transition: transform 0.5s ease;
}
HTML
Восстановить HTML
<button id="moveButton">Переместить</button>
<div id="smooth-block"></div>
JavaScript
document.getElementById("moveButton").addEventListener("click", function() {
 document.getElementById("smooth-block").style.transform = input__1;
});
Добавьте CSS-свойство `transition: transform 0.5s ease;` к элементу "smooth-block". При клике на кнопку меняйте `style.transform` элемента на `translateX(200px)`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку

Появление и скрытие элемента

Создайте кнопку с id "toggleButton". При нажатии на кнопку элемент с id "fade-block" должен плавно появляться, если он был скрыт, и плавно исчезать, если он был видим. Используйте CSS transition и opacity.

CSS
#fade-block {
  width: 150px;
  height: 100px;
  background-color: darkseagreen;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s ease, visibility 0.5s ease;
}
HTML
Восстановить HTML
<button id="toggleButton">Показать/Скрыть</button>
<div id="fade-block"></div>
JavaScript
const toggleButton = document.getElementById("toggleButton");
const fadeBlock = document.getElementById("fade-block");

toggleButton.addEventListener("click", function() {
 if (fadeBlock.style.opacity === "0") {
 fadeBlock.style.opacity = "1";
 fadeBlock.style.visibility = input__1;
 } else {
 fadeBlock.style.opacity = "0";
 fadeBlock.style.visibility = input__2;
 }
});
Добавьте `transition: opacity 0.5s ease;` к "fade-block". Изначально установите `opacity: 0;` и `visibility: hidden;`. При клике на кнопку переключайте `opacity` между 0 и 1, а `visibility` между `hidden` и `visible`.
Заполнить ответами все поля
Результат
Лог
Выполнить
Отметить решенным
Показать подсказку
НайтиКурс.Ру
Добавить комментарий