草庐IT

【Vant Weapp】van-tab 标签页

宾果的救星 2024-01-01 原文

目录

激活条颜色

自定义右侧内容

tab切换列表回到顶部

使用sticky粘性布局导致遮挡

tab标题角标为0不展示

tab页中按钮固定在页面底部


激活条颜色

 

.van-tabs__line {
  background-color: #3552E3 !important;
}

自定义右侧内容

<van-tabs active="{{ active }}" swipeable bind:click='handleTab' ellipsis="{{false}}">
  <!-- 右侧筛选 -->
  <view class="filter" slot="nav-right" bindtap="onOpenChange">
    <image class="img" src="@/assets/images/filter.png" mode="aspectFit"></image>
  </view>
  
  <van-tab wx:for-items="{{tabs}}" wx:key='id' title='{{item.day}}' name="{{item.id}}">
      //......
  </van-tab>
</van-tabs>
.filter {
  background: #fff;
  display: flex;
  align-items: center;
}

.img {
  height: 32rpx;
  width: 32rpx;
  padding:26rpx 20rpx;
}

.van-tabs__line {
  background-color: #4c66da !important;
}
data:{
  tabs: [
    {
      day: '购入',
      id: 1
    },
    {
      day: '销售',
      id: 2
    },
  ],
  activeTab: 1,

}
handleTab(e) {
  this.setData({
    activeTab: e.detail.name
  })

  this.getList()
},

onOpenChange() {
  // 筛选操作
},

tab切换列表回到顶部

tab页中内容上下滚动后, 再切换tab页签时滚动位置总是同步一致。

 期待效果:

解决方法:切换tab后,利用wx.pageScrollTo跑到顶部。 

<van-tabs active="{{ active }}" bind:change="onChange"  sticky>
  <van-tab title="标签 1"><view wx:for="{{50}}" wx:key="item"> {{item}} </view></van-tab>
  <van-tab title="标签 2"><view wx:for="{{208}}" wx:key="item"> {{item}} </view></van-tab>
  <van-tab title="标签 3"></van-tab>
</van-tabs>
data: {
    active: 1,
    page: 1,
},
 onChange: function (e) {
    // 初始化
    let idx = e.detail.index
    this.setData({
      active: idx,
      page: 1
    })
    
    // 回到顶部
    wx.pageScrollTo({
      duration: 0,
      scrollTop: 0,
    })
    
    // 获取数据
    this.getList(page);
},

使用sticky粘性布局导致遮挡

往上滑动,标题要浮动上去。若是滚动到最顶部,没法复原,致使遮挡。

期待效果:

 

解决方案:使用 createSelectorQuery 方法获取到dom元素的距离顶部的 top 值,如果top 值小于等于0,就说明已经固定到顶部了,这个时候就可以在列表页添加一个距离顶部的边距。

<view wx:for="{{arr}}" wx:key="item"> {{item}} </view>

<van-tabs id="activetab" active="{{ active }}" bind:change="onChange"  sticky >
  <van-tab title="标签 1">
    <view class="{{scrollTop ? 'scrollTop' : ''}}">
      <view wx:for="{{50}}" wx:key="item"> {{item}} </view>
    </view>
  </van-tab>
  <van-tab title="标签 2"></van-tab>
</van-tabs>
data: {
  arr:['a','b','c','a','b','c','a','b','c','a','b','c'],
  scrollTop:false
},
//监听页面滚动
onPageScroll(event) {
  let that = this;
  const query = that.createSelectorQuery();
  query.select('#activetab').boundingClientRect();
  query.selectViewport().scrollOffset();
  query.exec(function(res){
    console.log(res[0])
    that.setData({
      scrollTop: res[0].top <= 0
    })
  })
}

tab标题角标为0不展示

 

info="{{arr.length > 0 ? arr.length : Boolean(false)}}"

<van-tabs active="{{ active }}" bind:change="onChange">
  <van-tab title="标签 1" info="{{arr.length > 0 ? arr.length : Boolean(false)}}">
    <view wx:for="{{arr}}" wx:key="item"> {{item}} </view>
  </van-tab>
  <van-tab title="标签 2" info="{{arr2.length > 0 ? arr2.length : Boolean(false)}}">内容 2</van-tab>
</van-tabs>
data: {
  active:1,
  arr:[1,2,3,4,5,6,7],
  arr2:[]
},

tab页中按钮固定在页面底部

<van-tabs active="{{ active }}" sticky bind:change="onChange">
  <van-tab title="标签 1" name="1">
    <view wx:for="{{50}}" wx:key="item"> {{item}} </view>
    
    <!-- 按钮 -->
    <view class="btn" wx:if="{{active == 1}}">提交</view>
     
  </van-tab>
  <van-tab title="标签 2" name="2">内容 2</van-tab>
</van-tabs>
.btn {
  position:fixed;
  bottom: 0;
  left:0;
  height: 80rpx;
  line-height: 80rpx;
  width: 100vw;
  text-align:center;
  background: red;
}
data: {
    active: '1',
}
onChange(event) {
  this.setData({
    active: event.detail.name
  })
},

有关【Vant Weapp】van-tab 标签页的更多相关文章

  1. ruby - 在院子里用@param 标签警告 - 2

    我试图使用yard记录一些Ruby代码,尽管我所做的正是所描述的here或here#@param[Integer]thenumberoftrials(>=0)#@param[Float]successprobabilityineachtrialdefinitialize(n,p)#initialize...end虽然我仍然得到这个奇怪的错误@paramtaghasunknownparametername:the@paramtaghasunknownparametername:success然后生成的html看起来很奇怪。我称yard为:$yarddoc-mmarkdown我做错了什么?

  2. ruby CSV : How can I read a tab-delimited file? - 2

    CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|

  3. css - 用 watir 检查标签类? - 2

    我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes

  4. ruby - 如何用 Nokogiri 解析连续的标签? - 2

    我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(

  5. ruby-on-rails - 在 Label 标签中嵌套 Ruby on Rails HAML 复选框 - 2

    我有以下不起作用的代码:=form_for(resource,:as=>resource_name,:url=>session_path(resource_name),:html=>{:class=>"well"})do|f|=f.label:email=f.email_field:email=f.label:password=f.password_field:password-ifdevise_mapping.rememberable?%p=f.label:remember_me,:class=>"checkbox"=f.check_box:remember_me,:class=>"

  6. ruby - 如何使用 Nokogiri::XML::Builder 生成动态标签? - 2

    我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi

  7. ruby-on-rails - 如何将变量值插入 ERB 模板中的 HTML 标签? - 2

    我有一个偏爱:如何将像o.office这样的值插入到属性中?value="#{o.office}"无效。 最佳答案 'type='text'/>或者你可以使用表单助手 关于ruby-on-rails-如何将变量值插入ERB模板中的HTML标签?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6172174/

  8. ruby-on-rails - 在 Ruby 中提取 IMG 标签 - 2

    是否可以从Ruby中的HTMLblock中提取IMG标签(或只是IMG标签的src属性)?例如,如果我有一个HTMLblock,例如:Loremipsumdolorsitamet,laboreetdoloremagnaaliqua.Duisauteiruredolorinreprehenderitinvoluptatevelitessecillumdoloreeufugiatnullapariatur.我可以通过正则表达式或其他方法只提取IMG标签或该IMG标签的src吗?提前感谢您的任何建议! 最佳答案 使用Nokogiri:re

  9. ruby-on-rails - 使用 stock_quote gem 中的股票报价作为 acts_as_taggable gem 中的标签? - 2

    所以我正在使用acts_as_taggablegem提供的标签。这些帖子是我正在标记的内容。我怎么能说类似=>的东西(这里是伪代码)ifacollectionofPostshasatagwithacorrespondingStockQuote,displaythestockquote所以现在我有一个acts_as_taggable的Post资源。这是我的帖子索引操作现在的样子:defindex@stock=StockQuote::Stock.quote("symbol")ifparams[:tag]@posts=Post.tagged_with(params[:tag])else@po

  10. ruby-on-rails - 如何在 ruby​​ on rails 中为表单字段使用 span 标签? - 2

    在我的表单中,我使用了如下的span标签:在我选择值后,它在HTML中看起来像下面这样:Antony问题是当我们创建表单时,id没有获取到数据库的值。我不知道确切的问题是。我想使用此内容标签而不是text_field来获取值。谢谢。 最佳答案 当您提交HTML表单时,唯一被POST的值是输入字段中的值,例如文本字段、选择、复选框、按钮等。页面上的内容——无论是否在跨度内--不会发回服务器。这不是Rails的问题,这只是HTML的工作方式。我不太确定你在这里想做什么,但是当你想显示一个值(而不是在输入框中)并将值与表单一起发回时,一种

随机推荐