Transporter -- Weex 踩坑日记 (三)

Tab页切换

完成固定footer布局后,我想要在footer中添加几个按钮,来控制中间部分显示的页面,相似微信。所以我须要实现一个tab切换的功能,我这里用到了Weex提供的<slider>组件。vue

<template>
  <div class="wrapper">
    <slider class="tab-container" auto-play="false" v-bind:index="sel" v-on:change="slideChange">
      <div class="tab tab1">
        <text>sel={{sel}}</text>
      </div>
      <div class="tab tab2"><text>sel={{sel}}</text></div>
      <div class="tab tab3"><text>sel={{sel}}</text></div>
    </slider>
    <div class="footer">
      <a class="button" v-on:click="sel=0"><text>t1</text></a>
      <a class="button" v-on:click="sel=1"><text>t2</text></a>
      <a class="button" v-on:click="sel=2"><text>t3</text></a>
    </div>
    </div>
</template>

<script>
import Files from "@/components/Files";
export default {
  name: "App",
  components: {
    Files
  },
  data() {
    return {
      sel: 0
    };
  },
  methods: {
    slideChange: function(nindex) {
      // console.log(nindex)
      this.sel = nindex.index
    }
  }
}
</script>

<style scoped>
.wrapper {
  /* justify-content: center; */
  background-color: azure;
  flex-direction: column;
  width: 750px;
  /* align-items: center; */
}

.tab-container {
  background-color: beige;
  width: 750px;
  flex: 1;
}

.slide {
  width: 750px;
}

.tab {
  width: 750px;
  flex: 1;
}

.tab1 {
  background-color: darkcyan;
}

.tab2 {
  background-color: darkgoldenrod;
}

.tab3 {
  background-color: darkgreen;
}

.footer {
  background-color: rgba(255, 255, 0, 1);
  width: 750px;
  height: 100px;
  flex: 0;
  border-radius: 10px 10px 0 0;
  padding: 5px 5px 5px 5px;
  flex-direction: row;
}

.button {
  border-width: 2px;
  width: 250px;
}
</style>

最终实现效果包括经过左右滑动切换tab页,也能够经过下方按钮点击来切换tab页面。微信

总结

实现tab页切换,一开始个人思路是多个div包含页面,隐藏不须要显示的div。并经过一个参数来选择须要显示的div。CSDN的一篇文章总结了经常使用的隐藏方式,其中我尝试过前面三种,均无效。app

  • Weex中,display:flex是默认值,没法修改。所以不能使用display:none的方式隐藏元素。
  • Weex支持overflow:hidden。但一个问题是它貌似对vue的class绑定支持有问题。<div v-bind:class="hide: sel !=2" class="tab tab2"><text>sel={{sel}}</text></div>来选择时,能够在调试器中看到div包含了hide类,可是hide类中的overflow:hidden样式并未生效(firefox调试器中没法看到该样式)。使用长宽设为0的方案存在一样的问题。暂未在文档中找到相关状况的说明。
  • <slider>change事件,文档中写包含index参数的意思是它的参数是一个object,index是这个object的一个对象。而不是以index做为函数参数。
相关文章
相关标签/搜索