weex slider实现滑动底部导航功能

先看效果图

这里主要是使用了weex 的 slider 实现了可以滑动的底部导航框架

这里最主要的几个方法,如果光是看weex的官方文档,可能很痛苦,因为有一些功能虽然代码里已经写好,但是他并没有写出来,希望官方的文档能够尽快的完善起来

实现这样的功能,首先是一个slider的用法,这个官方文档是用这个来给大家做轮播图的。

首先我们不能设置自动播放ok了(直接不复制就ok了)
第二我们需要能够捕获到滚动到哪一页的索引,这个值需要用来设置下面的当前tab(监听slider的change 方法)
第三我们需要通过外部js去设置slider的当前页面,譬如我们点击第二个tab,我们需要把显示的index 设置为1(index是从0开始的)官方文档目前并没有给出这块的解释

那么下面我们通过源码挖掘,我们知道slider其实可以有一个属性 :index
这个就是当前的索引了,那么我们需要设置这个索引,只要去改变这个对应得index 的值就可以了

那么这里就上代码了(文中所有的图片是去assets 文件夹取得图片,并非本地图片,所以需要自己放一些图片到assets目录)

<template>
 <div :style="{height:`${totalheight}px`}">
  <slider style="flex:1;" @change="onchange" :index="page">
   <div class="frame" v-for="img in imageList">
    <image class="image" resize="cover" :src="img.src"></image>
    <text class="contenttext">这是第{{page+1}}页</text>
   </div>
  </slider>
  <text style="background-color:gray;height:2px;bottom:100px;"/>
  <div class="nav">
   <div class="link" @click="changepage(0)">
    <image id="image1" v-bind:src="src1" class="logo"></image>
    <text class="title" :style="{color:page === 0?'#00BBE4':'gray'}">首页{{pathchanged}}</text>
   </div>
   <div class="link" @click="changepage(1)">
    <image v-bind:src="src2" class="logo"></image>
    <text class="title" :style="{color:page === 1?'#00BBE4':'gray'}">分类</text>
   </div>
   <div class="link" @click="changepage(2)">
    <image v-bind:src="src3" class="logo"></image>
    <text class="title" :style="{color:page === 2?'#00BBE4':'gray'}">我的</text>
   </div>
  </div>
 </div>
</template>
<style scoped>
 .image {
  width: 750px;
  height: 700px;
 }
 .slider {
  width: 750px;
  height: 700px;
  border-width: 2px;
  border-style: solid;
  border-color: #41B883;
 }
 .frame {
  width: 750px;
  height: 700px;
  position: relative;
 }
 .logo {
  position: relative;
  width: 45px;
  height: 45px;
 }
 .nav {
  position: absolute;
  width: 750px;
  bottom: 0px;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
 }
 .link {
  width: 162.5px;
  flex-shrink: 1;
  text-align: center;
  margin:0 auto;
  padding: 3px;
  align-items: center;
 }
 .title {
  font-size: 25px;
  line-height: 35px;
  text-align: center;
  top: 5px;
 }
 .contenttext {
  font-size: 32px;
  line-height: 35px;
  text-align: center;
  top: 25px;
  color: 38px;
  color: red;
 }
</style>
<script>
 export default {
  data () {
   return {
    page:0,
    imageList: [
     { src: 'https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg'},
     { src: 'https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg'},
     { src: 'https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg'}
    ],
    src1: "../../../assets/home_btn_home_s.png",
    src2: "../../../assets/home_btn_rent.png",
    src3: "../../../assets/cut.png"
   }
  },
  methods:{
   onchange(evtValue){
     this.page=evtValue.index
   },
   changepage(page){
    this.page=page
   }
  },
  computed: {
   totalheight(){
    const height = 750/weex.config.env.deviceWidth*weex.config.env.deviceHeight
    return height-180
   },
   pathchanged(){
      var self = this
      if(self.page === 0){
       self.src1 = "../../../assets/home_btn_home_s.png"
       self.src2 = "../../../assets/home_btn_rent.png"
       self.src3 = "../../../assets/cut.png"
      }else if(self.page === 1){
       self.src1 = "../../../assets/home_btn_home.png"
       self.src2 = "../../../assets/home_btn_rent_s.png"
       self.src3 = "../../../assets/cut.png"
      }else if(this.page === 2){
       self.src1 = "../../../assets/home_btn_home.png"
       self.src2 = "../../../assets/home_btn_rent.png"
       self.src3 = "../../../assets/cut_on.png"
      }
    return ''
   }
  }
 }
</script>

因为常常会遇到有同学问这块的东西,所以就索性写一个,给大家参考使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • IOS仿今日头条滑动导航栏

    之前在我们平台给大家分享了网易首页导航封装类.网易首页导航封装类优化,今天在前两个的基础上仿下今日头条. 1.网易首页导航封装类中主要解决了上面导航的ScrollView和下面的页面的ScrollView联动的问题,以及上面导航栏的便宜量. 2.网易首页导航封装类优化中主要解决iOS7以上滑动返回功能中UIScreenEdgePanGestureRecognizer与ScrollView的滑动的手势冲突问题. 今天仿今日头条滑动导航和网易首页导航封装类优化相似,这个也是解决手势冲突,UIPanG

  • weex slider实现滑动底部导航功能

    先看效果图 这里主要是使用了weex 的 slider 实现了可以滑动的底部导航框架 这里最主要的几个方法,如果光是看weex的官方文档,可能很痛苦,因为有一些功能虽然代码里已经写好,但是他并没有写出来,希望官方的文档能够尽快的完善起来 实现这样的功能,首先是一个slider的用法,这个官方文档是用这个来给大家做轮播图的. 首先我们不能设置自动播放ok了(直接不复制就ok了) 第二我们需要能够捕获到滚动到哪一页的索引,这个值需要用来设置下面的当前tab(监听slider的change 方法) 第

  • vue.js实现会动的简历(包含底部导航功能,编辑功能)

    在网上看到一个这样的网站,STRML它的效果看着十分有趣,如下图所示: 这个网站是用 react.js 来写的,于是,我就想着用 vue.js 也来写一版,开始撸代码. 首先要分析打字的原理实现,假设我们定义一个字符串 str ,它等于一长串注释加 CSS 代码,并且我们看到,当 css 代码写完一个分号的时候,它写的样式就会生效.我们知道要想让一段 CSS 代码在页面生效,只需要将其放在一对 <style> 标签对中即可.比如: <!DOCTYPE html> <html&

  • react card slider实现滑动卡片教程示例

    目录 效果 实现 card-slider.tsx card-item.tsx App.tsx 效果 实现 通过zIndex控制层级,opacity控制透明度,transform 控制卡片缩放程度,marginLeft控制位置,剩下的就是计算的事了 card-slider.tsx import React from 'react' export type CardProps = { opacity: number scale: number loop?: boolean width: number

  • 微信小程序实战之仿android fragment可滑动底部导航栏(4)

    底部3-5个选项的底部导航栏,目前在移动端上是主流布局之一,因此腾讯官方特地做了,可以通过设置,就可以做出了一个底部的导航栏. 相关教程:微信小程序教程系列之设置标题栏和导航栏(7) 但是通过设置的这个底部的导航栏,功能上比较固定,它必须要设置与它对应的一个页面,而且并不能滑动. 在业务上,有时候会比较限制,并不能完全满足所需. 又例如早前有人拿着UI稿问我,这种广告轮播图的样式,在小程序能不能实现呢? 我当时没有想了下,还不是很确定,因为小程序的轮播图的那几个小点点实在比较普通,样式单一. 因

  • Android搜索结果显示高亮实例(有数据滑动底部自动刷新)

    首先的效果图 搜索到结果(这里我只是模拟数据,真正和服务器走得时候,返回来的数据都应该包含关键字的) 模拟的没有搜索结果的界面 具体实现 在这插一句哈,就是做一件事情,拆分成多个小结,不至于在开发的时候摸不着头脑而且还能把控开发的进度. 思路其实很简单,我们监听输入框的变化,然后在文字变化之后去请求服务器,然后取到我们需要的结果,进行数据展示即可. 第一步:搜索框的监听 et_search.addTextChangedListener(new TextWatcher() { @Override

  • 漂亮的Slider效果类终于封装成功

    Slider类的功能说明: 1.可以控制任何一个页面上存在的div 2.slider在滑动的同时还可以实现透明度的变化,整个过程更平滑.更美观 3.可控性强,通过多个参数实现不同大小的div不同方向.不同速度的滑动 4.调用方便,一句话即可初始化,slider的隐现控制更为简单,详情参见代码例子 关于Slider类实现过程的说明: 有感于现在的网站经常使用所谓Web2.0模式的div隐现效果,前一段自己在网页上要实现一个,尝试成功后又想封装一个类方便以后使用,也可以开放给大家使用,刚好还可以学习

  • Vue实现双向滑动输入条

    本文实例为大家分享了Vue实现双向滑动输入条的具体代码,供大家参考,具体内容如下 效果图如下: 组件支持传入最小值(min)最大值(max)的范围,并可设置初始最小值(initialMin)和初始最大值(initialMax) 拖动滑块调整最大最小值,并可点击输入条位置,切换数值 ①创建滑动输入条组件Slider.vue <template>   <div class="m-slider" ref="slider">     <div

  • iOS中视频播放器的简单封装详解

    前言 如果仅仅是播放视频两者的使用都非常简单,但是相比MediaPlayer,AVPlayer对于视频播放的可控制性更强一些,可以通过自定义的一些控件来实现视频的播放暂停等等.因此这里使用AVPlayer的视频播放. 视频播放器布局 首先使用xib创建CLAVPlayerView继承UIView用来承载播放器,这样我们在外部使用的时候,直接在控制器View或者Cell上添加CLAVPlayerView即可,至于播放器播放或者暂停等操作交给CLAVPlayerView来管理.下面来看一下CLAVP

  • jQuery EasyUI基础教程之EasyUI常用组件(推荐)

    本文主要内容是介绍EasyUI的一些常用组件的使用,都是一些非常基础的知识,适合入门者学习,主要包括Base(基础).Layout(布局).菜单和按钮.表单.窗口.表格和树等的使用.要求完全掌握这些内容,学会查阅文档,了解开发基本思想.如果想进一步深入学习,可以直接去官网进行学习,查阅文档等http://www.jeasyui.com/. 一.简介 EasyUI是一种第三方组织开发的,开源的,功能强大的,基于jquery的插件库. 主要可以用于web的后台前端.jQuery EasyUI 提供易

  • Android仿微信之界面导航篇(1)

    微信是现在比较流行的应用了,在各大安卓市场几乎都是名列前茅了. 说实话不得不羡慕腾讯庞大的用户群体,只要腾讯敢做,就会有很多人去用. 废话不多说,下面就开始说一下如何实现微信的第一次启动程序的用户导航,ViewPager相信大家都不陌生了,是google放出的一个安卓低版本的兼容包android-support-v4.jar,里面有很多类我们可以去使用.那这个导航就是使用这个类来辅助完成的,在每一个View里放置一个图片,当我们使用ViewPager滑动界面的时候,就会看到一张张图片,从而实现这

随机推荐