Как с помощью клика переместить элемент в блоке вверх?

Как реализовать перемещение блоков div в контейнере container-slaid вверх по клику на соответствующие кнопки? Например, чтобы по клику на кнопку "Слайд 2" блок div с ref="slaid-2" поднимался вверх. Вопрос актуален для Vue 3 с использованием Composition API.
  • 24 февраля 2024 г. 12:28
Ответы на вопрос 2
Для реализации данной функциональности в Vue 3 с использованием Composition API вам понадобится следующий код:

```html
<template>
  <div class="container-slaid">
    <div ref="slaid-1">Слайд 1</div>
    <div ref="slaid-2">Слайд 2</div>
    <div ref="slaid-3">Слайд 3</div>
    
    <button @click="moveSlaid('slaid-1')">Слайд 1</button>
    <button @click="moveSlaid('slaid-2')">Слайд 2</button>
    <button @click="moveSlaid('slaid-3')">Слайд 3</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const container = ref(null);

    const moveSlaid = (slaidRef) => {
      const slaid = container.value.querySelector(`[ref="${slaidRef}"]`);
      container.value.insertBefore(slaid, container.value.firstChild);
    }

    return {
      container,
      moveSlaid
    }
  }
}
</script>

<style>
.container-slaid {
  display: flex;
  flex-direction: column;
}
</style>
```

В данном примере у нас есть контейнер `div` с классом `container-slaid`, в котором содержатся блоки div с разными ref-ами. При клике на кнопку вызывается функция `moveSlaid`, которая перемещает соответствующий блок div вверх в контейнере. Кнопки связаны со слайдами по их ref атрибуту.

Надеюсь, этот код поможет вам реализовать нужную функциональность!
Данные слайдов сложить в массив. Сделать вычисляемое свойство - данные всех слайдов кроме верхнего. Создать верхний слайд, создать остальные слайды на основе вычисляемого свойства. Если нужна анимация перемещения, завернуть слайды в transition-group . Вот так всё просто .
Похожие вопросы