在对于uni-app框架了解之后,今天就实现一个滚动切换tab效果,这个很常见的一个效果,最后封装成一个组件,便于以后使用,写这个需要引入uni官方提供的uni.css样式,用到了写好的样式,就不需要自己写了

这种切换无论是在app端还是小程序或者H5页面都是很常见的功能。对于这种功能,为单独封装成功组件,方便每个页面都能用到,

tab顶部导航栏

页面布局,使用uni-app提供的scroll-view组件。

  1. <template>
  2. <view class="uni-tab-bar">
  3. <scroll-view class="uni-swiper-tab" scroll-x>
  4. <block v-for="(tab,index) in tabBars" :key="tab.id" :style="scrollStyle">
  5. <view
  6. class="swiper-tab-list"
  7. :class="{'active' : tabIndex==index}"
  8. @tap="tabtap(index)"
  9. :style="scrollItemStyle"
  10. >
  11. {{tab.name}} {{tab.num?tab.num:""}}
  12. <view class="swiper-tab-line"></view>
  13. </view>
  14. </block>
  15. </scroll-view>
  16. </view>
  17. </template>

这个页面相当于封装一个组件,便于其他他们调用使用,tabIndex这个是tab内容,tabIndex对应的索引值,表示第几个。scrollStyle父级样式设置,scrollItemStyle每一个tab内容样式设置

  1. <script>
  2. export default {
  3. props:{
  4. tabBars:Array,
  5. tabIndex:Number,
  6. scrollStyle:{
  7. type:String,
  8. default:""
  9. },
  10. scrollItemStyle:{
  11. type:String,
  12. default:""
  13. }
  14. },
  15. methods:{
  16. //点击切换导航
  17. tabtap(index){
  18. // this.tabIndex = index;
  19. this.$emit('tabtap',index)
  20. }
  21. }
  22. }
  23. </script> 

样式

  1. <style scoped >
  2. .uni-swiper-tab{
  3. border-bottom: 1upx solid #EEEEEE;
  4. }
  5. .swiper-tab-list{
  6. color: #969696;
  7. font-weight: bold;
  8. }
  9. .uni-tab-bar .active{
  10. color: #343434;
  11. }
  12. .active .swiper-tab-line{
  13. border-bottom: 6upx solid #FEDE33;
  14. width: 70upx;
  15. margin: auto;
  16. border-top: 6upx solid #FEDE33;
  17. border-radius: 20upx;
  18. }
  19. </style>

tabtap点击切换效果,自定义一个tabtap事件,传递给父级,和vue语法一样

在父级组件

1.第一步先引入上面封装好的组件,

  1. import swiperTabHead from "../../components/index/swiper-tab-head.vue";
  2. 注册组件
  3. components:{
  4. swiperTabHead,
  5. }

2.使用组件

  1. <swiperTabHead :tabBars="tabBars" :tabIndex="tabIndex" @tabtap="tabtap"></swiperTabHead>

3.在data定义好数据

  1. export default {
  2. data(){
  3. tabIndex:0,// 选中的
  4. tabBars:[
  5. { name:"关注",id:"guanzhu" },
  6. { name:"推荐",id:"tuijian" },
  7. { name:"体育",id:"tiyu" },
  8. { name:"热点",id:"redian" },
  9. { name:"财经",id:"caijing" },
  10. { name:"娱乐",id:"yule" },
  11. ]
  12. }
  13. }

4.在方法中使用传过来的事件

  1. //接受子组件传过来的值点击切换导航
  2. tabtap(index){
  3. this.tabIndex = index;
  4. },

切换内容,直接在父组件写

  1. <view class="uni-tab-bar">
  2. <swiper class="swiper-box" :style="{height:swiperheight+'px'}" :current="tabIndex" @change="tabChange">
  3. <swiper-item v-for="(items,index) in newslist" :key="index">
  4. <scroll-view scroll-y class="list">
  5. <template v-if="items.list.length > 0">
  6. <!-- 图文列表 -->
  7. <block v-for="(item,index1) in items.list" :key="index1">
  8. <view>{{item}}</view>
  9. </block>
  10. </template>
  11. </scroll-view>
  12. </swiper-item>
  13. </swiper>
  14. </view>

5.也是需要在data定义一下内容,newslist是循环遍历的tab内容的内容,大概数据结构就是这样的,swiperheight这个是需要动态计算可视区域内容的高度

  1. swiperheight:,//高度
  2. newslist:[
  3. {
  4. list:[
  5. 数据内天
  6. ]
  7. },
  8. {},
  9. {},
  10. {},
  11. {},
  12. {}
  13. ]

6.在methods方法中写手动切换的效果

  1. //滑动切换导航
  2. tabChange(e){
  3. this.tabIndex = e.detail.current;
    },

 7.动态计算高度,upx2x是吧px转换成upx,调用这个api,需要在onLoad生命周期写

  1. onLoad() {
  2. uni.getSystemInfo({
  3. success:(res)=>{
  4. let height = res.windowHeight-uni.upx2px(100)
  5. this.swiperheight = height;
  6. }
  7. })
    },

  以上就是用uni-app实现的一个tab切换的效果,可以使用任何平台,已经测试几个平台,都没有问题,

uni-app实现滑动切换效果的更多相关文章

  1. 一分钟搞定触手app主页酷炫滑动切换效果

    代码地址如下:http://www.demodashi.com/demo/12826.html 前言: 前几天在看手机直播的时候,自己就用上了触手app.一进到主页就看上了里面页面切换的效果,自己想这 ...

  2. animate 实现滑动切换效果

    今天和大家分享一下用 animate 实现滑动切换效果的小例子 ------- 来自<一只有梦想的前端小白> 大家都知道jQuery 提供的有一下几种方法能够实现滑动效果: slideDo ...

  3. 原生H5页面模拟APP左侧滑动删除效果

    话不多说,往左侧滑动,显示删除,我们先来看一下效果图:如下: 这个布局我就不多说,反正就是一行ul,li, class名“item” js代码如下: $(".item").on(& ...

  4. 【Android UI】案例03滑动切换效果的实现(ViewPager)

    本例使用ViewPager实现滑动切换的效果.本例涉及的ViewPager.为android.support.v4.view.ViewPager.所以须要在android项目中导入android-su ...

  5. Flexslider图片轮播、文字图片相结合滑动切换效果

    Flexslider是一款基于的jQuery内容滚动插件.它能让你轻松的创建内容滚动的效果,具有非常高的可定制性.开发者可以使用Flexslider轻松创建各种图片轮播效果.焦点图效果.图文混排滚动效 ...

  6. 《JavaScript 实战》:JavaScript 图片滑动切换效果

    看到alibaba的一个图片切换效果,感觉不错,想拿来用用.但代码一大堆的,看着昏,还是自己来吧.由于有了做图片滑动展示效果的经验,做这个就容易得多了. 效果预览 仿淘宝/alibaba图片切换: 默 ...

  7. 个人学习JQ插件编写成果:little酷炫的图片滑动切换效果

    工作一个多月了,好久没来冒冒泡了,看了@wayong的JQ插件教程,自己编写了一个模仿拉勾网首页广告栏滑动特效的JQ插件,现在跟朋友们分享分享! 先上demo链接:http://runjs.cn/de ...

  8. 一款实现滑动切换效果的插件---swiper

    Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单. ...

  9. Flexslider插件实现图片轮播、文字图片相结合滑动切换效果

    插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...

随机推荐

  1. eruda.js 实现线上调出控制台

    <script src="//cdn.bootcss.com/eruda/1.3.0/eruda.min.js"></script> 调用 eruda.in ...

  2. Condition控制线程通信

    Condition控制线程通信 一.前言 java.util.concurrent.locks.Condition 接口描述了可能会与锁有关联的条件变量.这些变量在用法上与使用Object.wait ...

  3. 域渗透-LSA Protection

    简介: 微软在 2014 年 3 月 12 日添加了 LSA 保护策略,用来防止对进程 lsass.exe 的代码注入,这样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作 ...

  4. JSON转换方法解析

    JSON.parse() 与 JSON.stringify() 的区别 JSON.parse() :是从一个字符串中解析出 json 对象 JSON.stringify():是从一个对象中解析出字符串 ...

  5. vue.js如何根据后台返回来的图片url进行图片下载

    最近在做一个前端vue.js对接的功能模块时,需要实现一个下载图片的功能,后台返回来的是一串图片url,试了很多种方法,发现点击下载时出来的效果都是跳着到一个新的图片网页,后来经过一番琢磨,终于解决了 ...

  6. DEVOPS基础

    转自:http://www.scrumcn.com/agile/scrum-knowledge-library/agile-development.html#tab-id-7 DevOps是一组过程. ...

  7. BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 +CDQ分治

    1935: [Shoi2007]Tree 园丁的烦恼 参考与学习:https://www.cnblogs.com/mlystdcall/p/6219421.html 题意 在一个二维平面中有n颗树,有 ...

  8. CodeForces 85D Sum of Medians Splay | 线段树

    Sum of Medians 题解: 对于这个题目,先想到是建立5棵Splay,然后每次更新把后面一段区间的树切下来,然后再转圈圈把切下来的树和别的树合并. 但是感觉写起来太麻烦就放弃了. 建立5棵线 ...

  9. codeforces 572 D. Minimization(dp+ 思维)

    题目链接:http://codeforces.com/contest/572/problem/D 题意:给出一个序列,可以任意调整序列的顺序,使得给出的式子的值最小 题解:显然要先排一下序,然后取相邻 ...

  10. mysql 主主从配置

    配置主服务器:主服务器1 Ip:  192.168.0.1 主服务器2 Ip:  192.168.0.2 主服务器1配置 2.1.修改mysql配置文件 vim /etc/my.conf Server ...