Добро пожаловать на сайт SEDBY

Адаптивный переброс элемента

Главная / Форумы / Форумы сообщества / Темы оформления / Адаптивный переброс элемента

Как адаптивно переносить выбранный элемент из доного контейнера в другой и обратно

Автор Сообщение
Джанго
Аватар

Участник
Сообщения: 10

Адаптивный переброс элемента
  • #1
  • 05.01.2026 21:22

Чет не могу сообразить, как адаптивно (например при превышении ширины в 991px) переносить элемент в другое место HTML-документа. А при уменьшении ширины вовращать его назад.

Благодарности отсутствуют
spectre
Аватар

Участник
Сообщения: 12

Re: Адаптивный переброс элемента

Было такое когда карточка товара была сложно сверстана. Решается все связкой Javascript / jQuery плюс 4 момента:

  1. Проверяем с помощью JS $(window).width() и определяем порог(и) переброса.
  2. Привязываемся к событию $(window).resize() чтобы учитывались возможные ситуации с изменением ширины экрана (например, клиент перевернул устройство).
  3. Используем jQuery-метод detach() для удаления элемента из DOM с сохранением связанных с ним данных и обработчиков событий (в отличие от remove()).
  4. Используем jQuery-метод append() или appendTo() для переброса элемента в новое местоположение.

Реализация примерно такая:

jQuery(function($) {

  var element = $('span#element_id'),
  target = $('div#target_id'),
  source = $('div#source_id'),
  breakpoint = 768;

  function moveElement() {
    // var element_clone = element.clone(true);
    if (($(window).width() >= breakpoint)) {
      // Screen out of limits
      if (element.parent() !== target) {
        element.detach().appendTo(target);
      }
    } else {
      // Screen within limits
      if (element.parent() !== source) {
        element.detach().appendTo(source);
      }
    }
  };

  // Run on load & resize
  $(window).resize(moveElement);
  // Initial call to check element location on load
  moveElement();
});

Надо просто проверку делать каждый раз на присутствие элемента в контейнере чтобы они не плодились. И в моем варианте кроме проверки $(window).width() была еще проверка на наличие в DOM общего родительского элемента, поскольку функция должна была работать только на определенной странице.

Поблагодарили: 2
admin
Аватар

Администратор
Сообщения: 97

Re: Адаптивный переброс элемента
  • #3
  • 06.01.2026 09:56

За кейс отдельное спасибо!

Если вся история происходит внутри одного контейнера, можно ограничиться медиа-запросами и использованием flex-модели:

<div id="parent">
	<span class="elem1">element 1</span>
	<span class="elem2">element 2</span>
</div>

... и стили:

div#parent  { display: flex; gap: .5rem; }
  div#parent span.elem1 { order: 1; }
  div#parent span.elem2 { order: 2; }

@media (min-width: 768px) {
  div#parent span.elem1 { order: 2; }
  div#parent span.elem2 { order: 1; }
}

Как-то так)

Благодарности отсутствуют
Джанго
Аватар

Участник
Сообщения: 10

Re: Адаптивный переброс элемента
  • #4
  • 08.01.2026 15:19

Благодарю за помощь! Функция это то, что и требовалось. Один вопрос: читал что если обрабатывается resize, то load уже не требуется. Это так?

Благодарности отсутствуют
Аристарх
Аватар

Участник
Сообщения: 14

Re: Адаптивный переброс элемента
  • #5
  • 09.01.2026 15:02

При классическом подходе рекомендуется обрабатывать оба события и для плавности запускать функцию на исполнение. Я тоже слышал про то, что load можно не обрабатывать. Надо просто проверить.

Благодарности отсутствуют
admin
Аватар

Администратор
Сообщения: 97

Re: Адаптивный переброс элемента
  • #6
  • 11.01.2026 14:22

Главное в этой ситуации - не оказаться в глупом положении и доказывать заказчику или самому себе что ты все делал правильно, а на выходе получилось не очень.

Благодарности отсутствуют
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость