• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序开发中关于选项卡高度自适应和选项卡内按钮位置固定的实现 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先大家都知道小程序自带的swiper工具是有默认高度的,所以在实际开发中高度自适应的实现是必修课,比较简单的实现高度自适应的方法是利用scroll-view工具。

选项卡工具swiper高度自适应和按钮位置固定的时候,会导致按钮即便设置了fixed属性也会跟随scroll-view的滑动改变位置;

解决思路:让按钮既在swiper-item中,又不能随scroll-view变化,同时让选项卡标题fixed在页面顶部
方法:在swiper-item中嵌套一个scroll-view
改进:单纯的嵌套一个scroll-view会导致选项卡内容无无法显示,在scroll-view和他上层的swiper中添加style="height: {{clientHeight?clientHeight+\'px\':\'auto\'}}"高度属性

1、wxml部分:

<view class=\'ticket-container\'>
<!--选项卡Tab布局-->
<view class=\'title\'>
      <view class="{{0 == currentIndex ? \'title-sel-selected\' : \'title-sel\'}}" bindtap=\'titleClick\' data-idx=\'0\'>
      <text>tab1</text>
      <hr class="line-style" />
      </view>
      <view class="{{1 == currentIndex ? \'title-sel-selected\' : \'title-sel\'}}" bindtap=\'titleClick\' data-idx=\'1\'>
      <text>tab2</text>
      <hr class="line-style" />
      </view>
</view>
<!--内容布局-->
<swiper style="height: {{clientHeight?clientHeight+\'px\':\'auto\'}}"   class=\'swiper\' bindchange=\'pagechange\' current=\'{{currentIndex}}\'>
    <swiper-item class=\'swiper\'>
    <scroll-view scroll-y style="height: {{clientHeight?clientHeight+\'px\':\'auto\'}}" >
    <view style="text-align:center">tab1内容</view>
    <image src="/pages/index/1.jpg" mode="aspectFit"></image>
    <image src="/pages/index/1.jpg" mode="aspectFit"></image>
    <image src="/pages/index/1.jpg" mode="aspectFit"></image>
    </scroll-view>
<view class="image_detail">
    <button class="btn">
    <text>tab1的按钮</text>
    </button>
</view>
</swiper-item>
<swiper-item class=\'swiper\'>
<scroll-view scroll-y style="height: {{clientHeight?clientHeight+\'px\':\'auto\'}}" >
    <view>tab2内容</view>
</scroll-view>
<view class="image_detail">
    <button  class="btn">
    <text>tab2的按钮</text>
    </button>
</view>
</swiper-item>
</swiper>
</view>

2.wxss部分:

.table {
  border: 0px solid darkgray;
  padding-bottom: 230rpx;
}

.title {
  width: 100%;
  height: 88rpx;
  background: white;
  display: flex;
  align-items: center;
  justify-content: space-around;
  margin-top: 20rpx;
}
.title-sel {
  color: #24272c;
  font-size: 32rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.title-sel  .line-style {
  background: #fff;
  height: 6rpx;
  width: 40rpx;
  position: relative;
  margin-top: 10rpx;
}
.title-sel-selected {
  color: #006bff;
  font-size: 32rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.title-sel-selected .line-style {
  background: #006bff;
  height: 6rpx;
  width: 90rpx;
  position: relative;
  margin-top: 10rpx;
}
.swiper {
  width: 100%;
  height: 100%;
  flex: 1;
  overflow: scroll;
  margin: 0 auto;
  /* position: relative; */
}
.ticket-container{
  position:fixed;
  top:0;
  width:100%;
}
.image_detail {
  display: flex;
  flex-direction: column;
  width: 100%;
  text-align: center;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  margin-top: 10rpx;
  margin-bottom: 10rpx;
  background-color: #f1f1f1;
}
/*按钮设计*/
.btn {
  margin-top: 25px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100px;
  border-radius: 30px;
  background: #006bff;
  color: white;
  padding: 20rpx 50rpx;
  position: fixed;
  bottom: 130rpx;
}

3.js部分:

//logs.js
// const app = getApp()
// const util = require(\'../../utils/util.js\')

Page({
  data: {
  currentIndex:0
},
//swiper切换时会调用
pagechange: function(e) {
  // console.log(e)
  this.setData({
    currentIndex: e.detail.current
  })
},

//用户点击tab时调用
titleClick: function(e) {
  this.setData({
    //拿到当前索引并动态改变
    currentIndex: e.currentTarget.dataset.idx
  })
},
onLoad: function(options) {
  var that=this
  //获取高度
  wx.getSystemInfo({ 
    success: function (res) { 
        that.setData({ 
            clientHeight: res.windowHeight 
        }); 
    } 
}) 
wx.showShareMenu({
  withShareTicket: true
})
wx.setNavigationBarTitle({ title: \'选项卡制作\' })  

}
})

4.成果展示:

好啦,到此就差不多完成啦,大家还有别的好方法的话欢迎来提~~~~


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于微信小程序获取view的动态高度填坑发布时间:2022-07-18
下一篇:
微信小程序:自定义导航栏发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap