Компонент Backtop используется для быстрого возврата пользователя к началу страницы или контейнера с прокруткой. Он особенно полезен на страницах с большим количеством контента, где ручная прокрутка вверх неудобна. В Element Plus компонент реализован с гибкой кастомизацией внешнего вида и поведения.
Для использования компонента необходимо импортировать его из библиотеки Element Plus и зарегистрировать в приложении Vue:
import { ElBacktop } from 'element-plus';
import 'element-plus/dist/index.css';
export default {
components: {
ElBacktop
}
};
Если используется Vue 3 с Composition API,
регистрация может быть глобальной через
app.use(ElementPlus).
<template>
<el-backtop />
</template>
По умолчанию кнопка Backtop появляется в правом
нижнем углу страницы, когда пользователь прокручивает страницу вниз
более чем на 200 пикселей (значение по умолчанию для свойства
visibility-height).
Положение кнопки на странице можно задавать с помощью свойств
right и bottom:
<el-backtop :right="50" :bottom="100" />
Эти свойства принимают значения в пикселях.
Свойство visibility-height определяет, после какой
высоты прокрутки кнопка станет видимой:
<el-backtop :visibility-height="300" />
Компонент поддерживает слот по умолчанию, который позволяет заменять стандартную иконку на кастомный элемент:
<el-backtop :right="50" :bottom="50">
<template #default>
<div style="background-color: #409EFF; color: white; padding: 10px; border-radius: 50%;">
Вверх
</div>
</template>
</el-backtop>
С помощью слота можно использовать текст, SVG-иконки или любой Vue-компонент.
Backtop поддерживает одно основное событие:
Пример использования:
<el-backtop @click="handleBacktopClick" />
<script>
export default {
methods: {
handleBacktopClick() {
console.log('Кнопка Backtop нажата');
}
}
};
</script>
Компонент можно привязать не только к window, но и к
определенному элементу с прокруткой. Для этого используется свойство
target:
<template>
<div ref="scrollContainer" style="height: 400px; overflow: auto;">
<div style="height: 1500px;">Длинный контент</div>
<el-backtop :target="scrollContainer" :right="20" :bottom="20" />
</div>
</template>
<script>
import { ref, onMounted } from 'vue';
export default {
setup() {
const scrollContainer = ref(null);
return { scrollContainer };
}
};
</script>
Компонент автоматически скроллит к верху при клике. Внутри Vue можно
управлять поведением с помощью стандартного метода scrollTo
на контейнере. Например, если нужно добавить плавное замедление:
const scrollToTop = (el) => {
el.scrollTo({
top: 0,
beh * avior: 'smooth'
});
};
Эта детальная настройка позволяет интегрировать Backtop в любые Vue-приложения с максимальным контролем над поведением, внешним видом и контекстом прокрутки.