当前位置: 首页 > news >正文

网站制作器软件下载/最新的疫情情况

网站制作器软件下载,最新的疫情情况,网址注册平台,企业网站开发项目策划书基本框架效果&#xff1a;红色位置代码 实现功能描述&#xff1a; 左侧内容滚动的时候&#xff0c;右侧首字母会变换选中&#xff0c;右侧选中指定首字母&#xff0c;左侧内容滚到指定位置。 组件game_list <template><div><div class"game_list"><d…

 效果:红色位置代码

 

 

实现功能描述:

左侧内容滚动的时候,右侧首字母会变换选中,右侧选中指定首字母,左侧内容滚到指定位置。

组件game_list

<template><div><div class="game_list"><div class="left_list_box" ref="scrollBox" @scroll="contentScroll"><divv-for="(key, index) in Object.keys(gamesObject).sort()":key="index":id="key":ref="key"><div class="title_name">{{ key }}</div><div class="left_list_game"><divclass="game_item"v-for="(item, _index) in gamesObject[key]":key="_index":class="$attrs['letter-hidden'] ? 'letter_hidden' : ''"><van-image :src="item.Icon" width="1.12rem" height="1.12rem"></van-image><p :class="$attrs['letter-hidden'] ? 'show_oneline' : ''">{{ item.Name }}</p></div></div></div></div><div class="right_word_box" v-if="!$attrs['letter-hidden']" @scroll="menuScroll"><div ref="rightBox" :style="{ top: rightScrollTop + 'px' }"><divclass="letter add_margin_top":class="isChoose == '热' ? 'is_choose' : ''"@click="toLetter('热')">热</div><divclass="letter"v-for="(letter, index) in firstLetter.split('')":key="index":class="isChoose == letter ? 'is_choose' : ''"@click="toLetter(letter)":ref="'menu_' + letter">{{ letter }}</div></div></div></div><!-- <empty-page></empty-page> --></div>
</template><script>
import { nextTick } from 'vue'
import EmptyPage from '../../components/Empty/EmptyPage.vue'
export default {name: '',props: {gameList: {type: Array}},data() {return {// 处理后的游戏列表gamesObject: {},firstLetter: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ#',isChoose: '热',clickMenu: false, //点击菜单时候rightScrollTop: 200 //右侧菜单的滚动距离}},components: { EmptyPage },watch: {gameList(newVal) {let arr = newVal.concat()arr.reverse()let tempName = ''//重构列表结构arr.forEach((game, index) => {if (index == 0) {this.$set(this.gamesObject, game.NameInitials.toUpperCase(), [])tempName = game.NameInitials.toUpperCase()}if (tempName != game.NameInitials.toUpperCase()) {this.$set(this.gamesObject, game.NameInitials.toUpperCase(), [])}this.gamesObject[game.NameInitials.toUpperCase()].push(game)})},// 选中的首字母监听用于右侧首字母栏的滚动isChoose(newVal) {// 获取内容盒子到头部的距离let headerHeight = this.$refs['rightBox'].offsetTop// 当前点击字母的距离右侧菜单框的距离let chooseTop = this.$refs['menu_' + newVal][0].offsetTop - headerHeight// 获取右侧菜单盒子可见高度let rightMenuHeight = this.$refs['scrollBox'].offsetHeight// 右侧菜单内容实际高度let rightRealHeight = this.$refs['rightBox'].offsetHeight// 如果当前点击的字母的位置占据了rightMenuHeight高后四分之一的位置。就让右侧菜单网上滚一个二分之一rightMenuHeight的高度if (chooseTop >= rightMenuHeight * (3 / 4)) {//让右侧菜单往上滚动1/2rightMenuHeight后没有到达右侧菜单的实际高度if (this.rightScrollTop + rightMenuHeight * (3 / 2) < rightRealHeight) {console.log('执行')// 继续向上滚动nextTick(() => {this.rightScrollTop = this.rightScrollTop + rightMenuHeight * (3 / 2)})} else {//让右侧菜单往上滚动1/2rightMenuHeight过程中会打到达右侧菜单的实际高度,为最后一下的滚动// debuggernextTick(() => {this.rightScrollTop =this.rightScrollTop + rightRealHeight - this.rightScrollTop - rightMenuHeight})}}}},created() {},mounted() {},methods: {toLetter(letter) {this.isChoose = letterthis.clickMenu = trueconst point = document.getElementById(letter)point &&point.scrollIntoView({block: 'start',behavior: 'smooth'})// 设置滚动之后过一段时间恢复clickMenu字段,避免自定义滚动操作和点击后滚动同时出现setTimeout(() => {this.clickMenu = false}, 1000)},// 监听内容盒子的滚动事件contentScroll(e) {// 判断是不是鼠标点击菜单导致滚动if (!this.clickMenu) {// 记录内容滚动距离let scrollTop = e.srcElement.scrollTop// 获取内容盒子到头部的距离let headerHeight = this.$refs['scrollBox'].offsetTop//  根据滚动值,查询在哪两个字母的区间内for (let i = 0; i < this.firstLetter.length - 1; i++) {// 首个字母出现的位置let letter_before = 0// 第二个字母出现的位置let letter_after = nullif (this.$refs[this.firstLetter.split('')[i]]) {letter_before = this.$refs[this.firstLetter.split('')[i]][0].offsetTop - headerHeight}if (i != this.firstLetter.length - 1 && this.$refs[this.firstLetter.split('')[i + 1]]) {letter_after = this.$refs[this.firstLetter.split('')[i + 1]][0].offsetTop - headerHeight}// 鼠标滚动一次是100if (scrollTop + 100 >= letter_before && scrollTop + 100 < letter_after) {this.isChoose = this.firstLetter.split('')[i]break}}}},// 监听右侧菜单盒子滚动事件menuScroll(e) {this.rightScrollTop = e.srcElement.scrollTop}}
}
</script><style lang="scss" scoped>
.game_list {width: 100%;display: flex;justify-content: space-between;
}
// 左侧游戏列表
.left_list_box {flex: 1;height: calc(100vh - 0.92rem);overflow-y: scroll;padding: 0 0.14rem;padding-bottom: 1.08rem;box-sizing: border-box;.title_name {font-size: 0.28rem;color: #111;font-weight: bold;padding: 0.32rem 0.3rem;}.left_list_game {overflow: hidden;display: flex;flex-wrap: wrap;justify-content: flex-start;align-content: flex-start;border-bottom: 0.02rem solid #edeef1;padding-bottom: 0.34rem;.game_item {width: 1.48rem;display: flex;flex-direction: column;align-items: center;margin: 0 0.06rem 0.2rem;height: max-content;p {width: 1.48rem;font-size: 0.24rem;color: #555555;margin-top: 0.22rem;white-space: pre-wrap;text-align: center;}// 只显示一行.show_oneline {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}}// 当右侧首字母列隐藏时候.letter_hidden {margin: 0 0.16rem 0.2rem;}}
}/* 右侧首字母选择 */
.right_word_box {width: 0.8rem;box-sizing: border-box;height: calc(100vh - 0.92rem);overflow-y: scroll;padding-bottom: 1.08rem;padding-top: 0.5rem;.letter {height: 0.7rem;line-height: 0.7rem;text-align: center;font-size: 0.28rem;color: #111;}.is_choose {width: 0.8rem;height: 0.4rem;line-height: 0.4rem;text-align: center;font-size: 0.28rem;background: linear-gradient(90deg, #ff650d, #ffa40d);color: #fff;border-radius: 0.3rem 0 0 0.3rem;padding: 0.04rem 0;box-sizing: content-box;}
}
</style>

使用组件

 

http://www.lbrq.cn/news/930673.html

相关文章:

  • ppt做的模板下载网站有哪些内容/蜜雪冰城推广软文
  • 济南做网站找大标/全网搜索
  • 人力资源网站建设/许昌网络推广公司
  • 二级域名做城市分网站/广东seo推广方案
  • wordpress板块大小/上海百度推广优化排名
  • 有关做美食的网站/湖南长沙关键词推广电话
  • 建设网站的企业有哪些/soso搜搜
  • 网站类产品怎么做竞品分析/优化课程体系
  • 做彩票网站犯法/香港疫情最新情况
  • 做网站要注册商标第几类/搜索引擎优化有哪些要点
  • 电子商务的网站建设要求步骤/app拉新渠道商
  • 电影网站如何建设/百度seo和sem
  • 什么网站有教做衣服视频的/临沂森拓网络科技有限公司
  • 城阳做网站公司/收录优美图片app
  • 培训视频网站/中国十大电商公司排名
  • 东庄水利建设公司网站/网络推广方案
  • 做香港台湾网站流量/谷歌商店安卓版下载
  • 网站开发的报价/百度快速收录3元一条
  • 建设网站 买了域名还要什么/b站推广引流最佳方法
  • 泉州网站建设价格/网络营销专业学什么课程
  • 一屏展示网站/武汉谷歌seo
  • 免费二维码制作/seo是付费还是免费推广
  • 网站的内链建设/域名注册费用
  • 南京500元做网站/如何开展网络营销活动
  • 在线文字图片生成器/百度爱采购优化软件
  • 个人网站建设需要备案吗/成人短期培训能学什么
  • 做网站找谁/刷关键词的平台
  • 小程序企业网站源码/北京seo排名服务
  • 专业网站建设设计装饰/保定网站建设方案优化
  • 国外哪些做问卷的网站/it培训学校
  • rsync+sersync实现文件实时同步
  • pytorch小记(三十三):PyTorch 使用 TensorBoard 可视化训练过程(含完整示例)
  • 机器学习-贝叶斯函数(理解版)
  • 磁悬浮轴承转子不平衡质量控制策略设计:原理、分析与智能实现
  • 【数据结构】二叉树初阶详解(二):实现逻辑与代码拆解(超详版)
  • Python - 100天从新手到大师 - Day6