新增横向滚动效果

This commit is contained in:
justin
2022-04-06 16:30:40 +08:00
parent b8feb1b47f
commit 297ee8f858

View File

@@ -7,29 +7,27 @@
</template> </template>
<el-tabs v-model="teamActiveName"> <el-tabs v-model="teamActiveName">
<el-tab-pane label="开发者「无回」" name="developer"> <el-tab-pane label="开发者「无回」" name="developer">
<div class="developer"> <div class="developer" ref="dev_wapper">
<ul class="developer__container"> <ul class="developer__container">
<li class="developer__item" v-for="(item,index) in developers"> <li class="developer__item" v-for="(item, index) in developers" :key="index">
<div class="developer__inner"> <div class="developer__inner">
<el-image <el-image
class="developer__img" class="developer__img"
:src="item.imgUrl" :src="item.imgUrl"
:preview-src-list="[item.imgUrl]"> :preview-src-list="[item.imgUrl]"
</el-image> ></el-image>
<div class="developer__info"> <div class="developer__info">
<span class="developer__nickname">{{ item.nickname }}</span> <span class="developer__nickname">{{ item.nickname }}</span>
<div class="developer__position"> <div class="developer__position">
<el-tag v-for="(position,i) in item.positions" <el-tag
v-for="(position, i) in item.positions"
:type="colors[i % colors.length]" :type="colors[i % colors.length]"
:class="i !== 0 ? 'f-ml' : ''" :class="i !== 0 ? 'f-ml' : ''"
size="small"> size="small"
{{ position }} >{{ position }}</el-tag>
</el-tag>
</div> </div>
<div class="developer__homepage"> <div class="developer__homepage">
<a :href="item.homepage" target="_blank"> <a :href="item.homepage" target="_blank">个人主页</a>
个人主页
</a>
</div> </div>
</div> </div>
</div> </div>
@@ -46,9 +44,7 @@
src="https://cdn.youlai.tech/youlaiqun.png" src="https://cdn.youlai.tech/youlaiqun.png"
:preview-src-list="['https://cdn.youlai.tech/youlaiqun.png']" :preview-src-list="['https://cdn.youlai.tech/youlaiqun.png']"
/> />
<div class="group-tip"> <div class="group-tip">群二维码过期可添加开发者微信由其拉入群备注有来即可</div>
群二维码过期可添加开发者微信由其拉入群备注有来即可
</div>
</div> </div>
</el-tab-pane> </el-tab-pane>
@@ -58,59 +54,58 @@
<p>2. 熟悉项目且至少给项目提交()一个PR</p> <p>2. 熟悉项目且至少给项目提交()一个PR</p>
<p>3. Git代码库活跃个人主页或博客完善者优先</p> <p>3. Git代码库活跃个人主页或博客完善者优先</p>
<p>4. 过分优秀者我们会主动联系您...</p> <p>4. 过分优秀者我们会主动联系您...</p>
<div class="join__desc"> <div class="join__desc">申请加入方式: 添加开发者微信申请即可</div>
申请加入方式: 添加开发者微信申请即可
</div>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {nextTick, onMounted, reactive, toRefs, watchEffect} from "vue"; import { nextTick, onMounted, reactive, ref, toRefs, watchEffect } from "vue";
import BScroll from "better-scroll"; import BScroll from "better-scroll";
const state = reactive({ const state = reactive({
teamActiveName: 'developer', teamActiveName: "developer",
developers: [ developers: [
{ {
imgUrl: 'https://cdn.youlai.tech/rui.jpg', imgUrl: "https://cdn.youlai.tech/rui.jpg",
nickname: '郝先瑞', nickname: "郝先瑞",
positions: ['Vue3','Java', '文档'], positions: ["Vue3", "Java", "文档"],
homepage: 'https://www.cnblogs.com/haoxianrui/' homepage: "https://www.cnblogs.com/haoxianrui/",
}, },
{ {
imgUrl: 'https://cdn.youlai.tech/chuan.jpg', imgUrl: "https://cdn.youlai.tech/chuan.jpg",
nickname: '张川', nickname: "张川",
positions: ['Vue3','Java' ], positions: ["Vue3", "Java"],
homepage: 'https://blog.csdn.net/qq_41595149' homepage: "https://blog.csdn.net/qq_41595149",
}, },
{ {
imgUrl: 'https://cdn.youlai.tech/lin.jpg', imgUrl: "https://cdn.youlai.tech/lin.jpg",
nickname: '张加林', nickname: "张加林",
positions: ['DevOps'], positions: ["DevOps"],
homepage: 'https://gitee.com/ximy' homepage: "https://gitee.com/ximy",
} },
], ],
colors: ['', 'success', 'warning', 'danger'], colors: ["", "success", "warning", "danger"],
indicatorImgUrl: new URL(`../../../../assets/index/indicator.png`, import.meta.url).href indicatorImgUrl: new URL(
}) `../../../../assets/index/indicator.png`,
import.meta.url
).href,
});
const {teamActiveName, developers, colors, indicatorImgUrl} = toRefs(state) const { teamActiveName, developers, colors, indicatorImgUrl } = toRefs(state);
/*let bScroll = reactive({}) let bScroll = reactive({})
const dev_wapper = ref<HTMLElement | any>(null)
onMounted(() => { onMounted(() => {
bScroll = new BScroll(document.querySelector('.developer-wrapper') as any, { bScroll = new BScroll(dev_wapper.value, {
startX: 0, mouseWheel: true,//开启鼠标滚轮
click: true, disableMouse: false,//启用鼠标拖动
scrollX: true, scrollX: true, //X轴滚动启用
scrollY: false,
eventPassthrough: "vertical" // 横向滚动,保留纵向原生滚动
}) })
}) })
@@ -118,8 +113,27 @@ watchEffect(() => {
nextTick(() => { nextTick(() => {
bScroll && (bScroll as any).refresh() bScroll && (bScroll as any).refresh()
}) })
})*/ })
// let bScroll = reactive({})
// onMounted(() => {
// bScroll = new BScroll(document.querySelector('.developer-wrapper') as any, {
// startX: 0,
// click: true,
// scrollX: true,
// scrollY: false,
// eventPassthrough: "vertical" // 横向滚动,保留纵向原生滚动
// })
// })
// watchEffect(() => {
// nextTick(() => {
// bScroll && (bScroll as any).refresh()
// })
// })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@@ -135,9 +149,11 @@ watchEffect(() => {
.developer { .developer {
width: 100%; width: 100%;
overflow: hidden;
&__container { &__container {
display: flex; display: inline-flex;
overflow: hidden;
justify-content: flex-start; justify-content: flex-start;
.developer__item { .developer__item {
@@ -153,7 +169,7 @@ watchEffect(() => {
.developer__inner { .developer__inner {
border: 1px solid #cccccc; border: 1px solid #cccccc;
border-radius: 5px; border-radius: 5px;
box-shadow: 6px 6px 6px #AAA; box-shadow: 6px 6px 6px #aaa;
padding: 8px; padding: 8px;
text-align: center; text-align: center;
@@ -176,14 +192,14 @@ watchEffect(() => {
a { a {
display: inline-block; display: inline-block;
padding: 4px 10px; padding: 4px 10px;
color: #409EFF; color: #409eff;
border: 1px solid #409EFF; border: 1px solid #409eff;
border-radius: 5px; border-radius: 5px;
background: #ecf5ff; background: #ecf5ff;
&:hover { &:hover {
background: #409EFF; background: #409eff;
color: #FFFFFF; color: #ffffff;
} }
} }
} }
@@ -210,7 +226,7 @@ watchEffect(() => {
&__desc { &__desc {
margin-top: 20px; margin-top: 20px;
color: #409EFF; color: #409eff;
font-weight: bold; font-weight: bold;
} }
} }
@@ -232,8 +248,5 @@ watchEffect(() => {
.f-ml { .f-ml {
margin-left: 5px; margin-left: 5px;
} }
} }
</style> </style>