
Vue3 · 组件 · 纵向滚动控制横向滚动
简介
这个 Vue 3 组件实现了一个特殊的滚动效果,通过纵向滚动来控制横向滚动,从而实现了一种独特的展示方式。该组件包含了一个容器,内部包含了一个纵向滚动的区域,其中的内容会在横向方向上滚动。这种设计可以用于展示横向内容较多的情况,同时保持纵向滚动的便捷性。
组件结构
<template>
<div v-size-ob="handleSizeChange" class="scroll-container">
<div class="v-scroll">
<div class="content">
<slot></slot>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { reactive } from "vue"
const size = reactive({
w: 0,
h: 0
})
function handleSizeChange({width, height}){
console.log(width,height)
size.w = width
size.h = height
}
</script>
<style scoped>
.scroll-container{
width: 100%;
height: 100%;
position: relative;
}
.v-scroll{
--w: calc(v-bind(size.w) * 1px);
--h: calc(v-bind(size.h) * 1px);
width: var(--h);
height: var(--w);
transform-origin: left top;
transform:translateY(var(--h)) rotate(-90deg);
overflow:hidden scroll;
position: absolute;
}
.v-scroll::-webkit-scrollbar {
display: none;
}
.content{
width: var(--w);
height: var(--h);
position: absolute;
left: var(--h);
transform-origin: left top;
transform: rotate(90deg);
}
</style>
使用方法
安装
确保你已经在项目中安装了 Vue 3。
使用组件
在需要使用该组件的地方,引入并使用它:
<XScroll >
<div class="TeamBox">
<div style="display: flex;flex-direction: column;align-items: center;"
v-for="item in TeamImg.sort(randomSort)" :key="item">
</div>
</div>
</XScroll>
效果说明
scroll-container
类定义了整个容器的样式,占据整个父容器的宽高。v-scroll
类定义了纵向滚动区域的样式,通过旋转和位移实现了横向滚动的效果。content
类定义了内容区域的样式,通过旋转实现了内容的横向展示。
结语
通过这个组件,你可以实现一种特殊的滚动效果,将横向内容以纵向滚动的方式展示,为展示横向内容提供了一种新颖的解决方案
本文是原创文章,完整转载请注明来自 俞泊
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果