本文主要介绍:利用Vue实现tab导航栏,并且通过flex布局实现左右滑动,计算按钮的位置,当点击第一屏展示的最后一个且还有元素未展示时,自动滑动显示出未显示的元素。

tab导航栏布局:

<section class="theme-list"><div class="fixed-nav" ref="fixednav"><div class="fixed-nav-content"><pv-for="(item, index) in theme":key="index":class="['tab-title', activeId === index && 'select-tab']"@click="changeTab(index, $event)">{{ item }}</p></div></div>
</section>
theme: ['CSDN博客', '博客园', '高考加油', '中考加油', '小欢喜', '七十周年'],
activeId: 0

导航栏样式代码:

.theme-list {margin-top: 12px;
}
.fixed-nav {overflow-x: scroll;-webkit-overflow-scrolling: touch;
}
.fixed-nav-content {display: flex;
}
.tab-title {padding: 0 13px;margin-right: 12px;color: #141414;border-radius: 13px;font-size: 12px;flex-shrink: 0;height: 0.52rem;line-height: 0.52rem;
}

此时我们可以实现下面的样式,并且可以左右滑动tab:

需要注意的是,在样式代码中需要添加flex-shrink : 0,这样才会当tab宽度大于外部容器宽度时不会收缩。

这样,我们基本的tab导航栏已经实现了,现在我们来实现:点击“中考加油”时,整个tab向左滑动,显示出剩下的tab元素。

changeTab(id, event) {// 如果选择的和当前激活的不同if (id !== this.activeId) {this.activeId = id;// 计算当前按钮的位置,看是否需要移动const spanLeft = event.clientX; // 当前点击的元素左边距离const divBox = document.querySelector(".select-tab").clientWidth / 2; // 点击的元素一半宽度const totalWidths = document.body.clientWidth; // 屏幕总宽度const widths = totalWidths / 2; // 一半的屏幕宽度const spanRight = totalWidths - spanLeft; // 元素的右边距离const scrollBox = document.querySelector(".fixed-nav"); // 获取最外层的元素const scrollL = scrollBox.scrollLeft; // 滚动条滚动的距离// 当元素左边距离 或者 右边距离小于100时进行滑动if (spanRight < 100 || spanLeft < 100) {scrollBox.scrollLeft = scrollL + (spanLeft - widths) + divBox;}}
}

通过这个方法可以实现tab的自动滚动了,但是此时还有一个问题是:在滑动的时候会显示出滚动条,显然是不太美观的。

/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar {width: 0.01rem;opacity: 0;display: none;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {background-color: #fff;opacity: 0;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {width: 0.01rem;border-radius: 0.01rem;opacity: 0;
}

这样,一个导航条就实现了,可以在结合公司的业务修改一下导航条的样式就可以啦!

Vue实现tab导航栏,支持左右滑动相关推荐

  1. vue制作导航栏html,vue实现nav导航栏的方法

    vue实现nav导航栏的方法 2019-01-07 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了vue实现nav导航栏的方法,编程之家小编觉得挺不错的,现在分 ...

  2. 微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏

    微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏 固定导航栏 可滑动导航栏 顶部导航栏的需求实现: 顶部导航栏由列表渲染,通过tabclick点击事件改变activeIndex变量的 ...

  3. 纯CSS导航栏下划线滑动效果

    纯CSS导航栏下划线滑动效果 问题描述 面向 C 端的产品嘛,总有一些动效想要提高用户体验,以下是用纯 css 实现导航栏选中下划线滑动效果 解决方案 以下是实现效果: 主要代码如下: <tem ...

  4. Tab导航栏切换的实现

    文章目录 前言 一.自定义属性 1.自定义属性的目的 2.自定义属性的操作 3.规范 二.导航栏的实现 1.静态样式 2.JS实现交互 总结 前言 Tab导航栏切换在网页场景中十分常见,本文将介绍如何 ...

  5. vue+elementui左侧导航栏

    vue+elementui左侧导航栏踩坑 最近接触前端vue+elementui,记录一下 1. element官网这里:default-active="***"前面没有冒号,直接 ...

  6. vue制作导航栏html,Vue如何实现导航栏菜单的方法

    Vue如何实现导航栏菜单的方法 发布时间:2020-08-20 09:42:45 来源:亿速云 阅读:235 作者:小新 这篇文章将为大家详细讲解有关Vue如何实现导航栏菜单的方法,小编觉得挺实用的, ...

  7. Vue实现侧边导航栏于Tab页关联

    技术栈 侧边栏用 Antd tab使用element 效果 <template><div class="main-card"><el-row>& ...

  8. vue中点击导航栏部分,页面切换

    写页面的时候都会用到一些导航栏.点击不同的部分切换不同的页面.并且点击的时候更换颜色 代码自己简单的写一下:(vue) <nav> <ul><li v-for=" ...

  9. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画

    很多时候在做tab导航的点击时我们都会要上一个过渡的动画,不然的话会显得生硬,用户没有达到比较佳的用户体验.如下图: 在开发者工具中预览效果 t3fyo-a07nj.gif 我们可以用两种方法实现这样 ...

  10. 原生JS实现点击导航栏鼠标左右滑动(适用于PC端和移动端)

    效果图: 点击导航栏左右拖动 代码: CSS: <style>.navBar {width: 1200px;margin-left: 25px;margin-top: 40px;margi ...

最新文章

  1. Navicat导出表结构导出成Excel
  2. VS2010与.NET4系列 5.代码优化的Web开发轮廓
  3. VC对话框全屏显示及相应控件位置改变(转)
  4. JS-DOM Element方法和属性
  5. RabbitMQ添加用户
  6. ABAP X类型 和 xstring类型
  7. win7计算机找不到脚本文件夹,win7系统TXT文件打开提示找不到脚本文件的解决方法...
  8. 一般的模式匹配算法(求子串位置)
  9. Oracle HA 之 OGG部署流水
  10. idea svn 的使用----转载,挺好的
  11. java与spss交互_典型相关分析及其适用范围和spss操作(转)
  12. php 编译指定libiconv,PHP升级编译出错 libiconv_open及 apache libiconv
  13. ERP常用词汇中英文对照
  14. dell R740secure boot_凯诺 10月11日 DELL 电脑报价
  15. RTX3070深度学习环境配置
  16. 欧姆龙服务器数码管不显示问题,数显仪表常见故障的原理分析以及解决方案
  17. Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
  18. 亚像素(Pixel)
  19. 【CTFshow】文件包含web78-web81
  20. 国内真正永久免费的OA办公系统

热门文章

  1. 数据结构——约瑟夫环(循环链表C语言版)
  2. ttl低电平接大电阻_FPGA中的上拉下拉电阻以及开漏推挽输出电路
  3. Eplan教程——项目检查错误 005013/005014:连接点类型不同
  4. 演示面阵激光雷达的工作原理
  5. AIS (船舶自动识别系统Automatic Identification System)数据解析
  6. 砂岩浮雕让雕刻更加美观
  7. 模拟电话簿提取名字显示
  8. 支付宝即时到账在线语音音效生成器html源码
  9. python numpy 矩阵运算_NumPy向量和矩阵的运算
  10. 20135202闫佳歆——信息安全系统设计基础第十三周学习总结