vue自定义横向滚动条css导航两行排列布局实现示例
更新时间:2023年08月11日 09:56:55 作者:DDD7
这篇文章主要为大家介绍了vue自定义横向滚动条css导航两行排列布局实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
vue自定义横向滚动条,导航两行排列布局
需求说明
需求点主要有两个
- 接口返回的导航数组,要从上到下,从左到右排列,导航的个数是可配置的。
- 滚动条的长度跟滚动容器长度不一样,需要自己手动模拟滚动条。
效果
代码实现
html:
<div class="home-nav-container"> <ul class="home-nav nav-container" :style="floorStyle" @scroll="getLeft" > <li v-for="(item, index) in floors" :key="index" > <img class="nav-icon" :src="item.headImg" alt="" /> </li> </ul> <div v-if="slideShow" class="slide"> <div class="slide-bar"> <div class="slide-show" :style="`width:${slideWidth}px;margin-left:${slideLeft<=1 ? 0 : slideLeft}px`"></div> </div> </div> </div>
js:
export default { data() { return { slideWidth: 0, // 滑块宽 slideLeft: 0, // 滑块位置 slideShow: false, // 是否显示滑块 slideRatio: 0, // 滑块比例 lengthRatio: 0, // 列表长度与屏幕长度比例(每个Item占20%屏幕长度) }; }, created() { this.getRatio(); }, mounted() { window.addEventListener('scroll', this.getLeft); }, methods: { getRatio() { if (this.floor.rooms.length <= 10) { this.slideShow = false; } else { this.lengthRatio = Math.floor(this.floor.rooms.length / 2) / 5; // 列表长度与屏幕长度比例(每个Item占20%屏幕长度) this.slideRatio = 40 / (375 * this.lengthRatio); // 滚动列表长度与滑条长度比例 this.slideWidth = 40 / this.lengthRatio; // 当前显示蓝色滑条的长度(保留两位小数) this.slideShow = true; } }, // slideLeft动态变化 getLeft(e) { this.slideLeft = e.target.scrollLeft * this.slideRatio; }, }, };
css:
.home-nav-container { background-color: #fff; position: relative; background-size: 100% 100%; margin: 0.05rem 0.24rem; border-radius: 0.2rem; .home-nav { display: flex; flex-wrap: wrap; &.nav-container { display: flex; flex-wrap: wrap; flex-direction: column; max-height: 3.48rem; overflow-x: scroll; overflow-y: hidden; position: relative; &::-webkit-scrollbar { display: none; } } li { width: 20%; text-align: center; box-sizing: border-box; } } .slide{ height: .08rem; background:#fff; width:100%; padding: 0.04rem 0 0.08rem 0; } .slide .slide-bar{ width: 40px; bottom: 2px; margin: 0 auto; height: .08rem; background:#f0f0f0; border-radius: .08rem; } .slide .slide-bar .slide-show{ height:100%; border-radius: .08rem; background-color: #d2d2d2; } }
以上就是vue自定义横向滚动条css导航两行排列布局的详细内容,更多关于vue横向滚动条css导航布局的资料请关注脚本之家其它相关文章!
相关文章
Vue.extend和VueComponent的关系源码解析
这篇文章主要为大家详解了Vue.extend和VueComponent的关系源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-02-02vue项目中的遇错:Invalid Host header问题
这篇文章主要介绍了vue项目中的遇错:Invalid Host header问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-07-07element el-input directive数字进行控制
本文介绍了vue使用directive 进行控制的方法,使用element开发的过程中遇到循环的数据只能输入数字,并且有不要小数点,有需要小数点的,就有一定的参考价值,有兴趣的可以了解一下2018-10-10vue中全局路由守卫中替代this操作(this.$store/this.$vux)
这篇文章主要介绍了vue中全局路由守卫中替代this操作(this.$store/this.$vux),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07
最新评论