小程序中实现多个页面中顶部固定高为50px,底部固定高为50px,中间列表为所在页面剩余高度,且列表内容超出高度时可以滑动。

news/2024/7/20 3:06:32 标签: 小程序, 前端, javascript

多个页面中实现相同的布局形式,可以单个页面分别布局,也可采用代码共享的形式实现,要实现代码共享就需要用到混入了,在vue中使用的是mixin,小程序中当然也有,只是名称有些不同,使用的是behavior。首先在项目根目录下创建behavior文件夹,再创建my-behavior.js文件。

javascript">// my-behavior.js
let systemInfo = {}
module.exports = Behavior({
  data: {
    mainHeight: 0
  },
  created(){
  	// 获取系统设置
    wx.getSystemInfo({
      success: res => systemInfo = res,
      fail: err => console.log(err)
    })
  },
  methods: {
    /**
     * 获取选择器的高度,两个参数:1、选择器数组 2、是否减去全屏手机底部导航指引的高度(仅IOS时需要设置)
     */
    getRect(){
      let seletor = [...arguments]
      var that = this;
    //我这里需要获取多个元素的高度,所以用的是selectAll
      wx.createSelectorQuery().selectAll(seletor[0].join()).boundingClientRect().exec(function(res){
        let allRectH = []
        const { screenHeight, screenWidth, windowHeight } = systemInfo
        console.log(screenHeight);
        for (let i = 0; i < seletor[0].length; i++) {
          allRectH.push(res[0][i].height)
        }
        const totalH = allRectH.reduce((prev,curr) => {
          return prev + (curr)
        }, 0)
        // let mainHeight = screenHeight - totalH   //自定义头部导航栏时使用屏幕高度
        let mainHeight = windowHeight - totalH  //未使用自定义头部导航栏时使用窗口高度
        if (seletor[1]) {
          const rpx = screenWidth / 750
          mainHeight -= (42 * rpx)
        }
        that.setData({
          mainHeight
        })
      })
    },
  }
})

创建三个页面:my-behavior、my-behavior1、my-behavior2
以my-behavior页面为例

javascript"><!--pages/my-behavior/index.wxml-->
<view class="container">
  <view class="common c-nav-bar">顶部</view>
  <scroll-view class="scroll-class" style="height: {{mainHeight}}px;" scroll-y>
    <view class="ul">
      <view class="li" wx:for="{{100}}" wx:key="index">{{item}}</view>
    </view>
  </scroll-view>
  <view class="common bottom">底部</view>
</view>


/* pages/my-behavior/index.wxss */
.common{
  width: 100%;
  height: 100rpx;
  text-align: center;
  line-height: 100rpx;
}
.c-nav-bar{
  background-color: pink;
}
.bottom{
  background-color: green;
}
.scroll-class{
  background-color: aqua;
}
.li{
  text-align: center;
  line-height: 60rpx;
}


// pages/my-behavior/index.js
var myBehavior = require('../../behavior/my-behavior')
Page({

  behaviors: [myBehavior],
  /**
   * 页面的初始数据
   */
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 选择器数组  是否减去控制高
    this.getRect(['.c-nav-bar','.bottom'], true)
  },
})

my-behavior1、my-behavior2页面同my-behavior。
更多关于behavior的使用可参考官方文档:
behavior参考文档
页面及组件中使用behaviors参考文档

上述功能实现效果:

多页面顶部固定高为50px,底部固定高为50px,中间滚动


http://www.niftyadmin.cn/n/5276633.html

相关文章

Android Studio 加载依赖卡在Download maven-metadata.xml解决方法

目录 前言&#xff1a; 一、下载 maven-metadata.xml 文件的方法 1.手动下载&#xff1a; 2.使用 Gradle 自动下载&#xff1a; 二、使用Gradle 自动下载 三、源码获取 前言&#xff1a; 在开发 Android 应用程序时&#xff0c;我们经常需要引入第三方库来满足特…

log4js-node在nodejs项目中的使用示例

在Node.js项目中使用log4js-node模块可以帮助你记录日志。以下是一个简单的示例&#xff0c;演示了如何在Node.js项目中使用log4js-node模块&#xff1a; 首先&#xff0c;你需要安装log4js-node模块。在终端中执行以下命令&#xff1a; npm install log4js 接下来&#xff…

ElasticSearch插件手动安装

./plugin install file:///home/es2.4/es/elasticsearch-kopf-master.zipElasticSearch插件手动安装_如何下载elasticsearch-kopf-master.zip-CSDN博客

Diss一下ApiPost国产软件

如图所示&#xff0c;我用ApiPost和PostMan调用同一个接口同样的参数。 后端返回的数字是20231204183521830&#xff0c;在ApiPost中却变成了20231204183521832。不能理解为什么数字会2 。 而PostMan这边返回的值是正确的。 看来ApiPost确实是遥遥领先了

JS - 设计模式持续学习中

通过例子持续学习JS设计模式中&#xff0c;接下来请跟随我的步伐走进我的学习笔记世界~ 什么是设计模式&#xff1f;我们为什么需要学习设计模式&#xff1f; 设计模式是可以更好解决问题的一种方案。 这意味着什么&#xff1f;如果你开发的项目的功能是固定的&#xff0c;永…

《Spring Cloud Gateway 技术要点》

中文文档&#xff1f; Spring Cloud Gateway 中文文档 他是如何工作的? 它是如何工作的 路由谓词 12种路由谓词 Route Predicate&#xff08;路由谓词&#xff09;工厂 常见问题 1、深入解析spring cloud gateway】09 巨坑&#xff01;GlobalFilter的执行顺序 2、Sprin…

vivado 关于时钟

关于时钟 在数字设计中&#xff0c;时钟代表了从寄存器可靠传输数据的时间基准注册。AMD Vivado™集成设计环境&#xff08;IDE&#xff09;计时引擎使用时钟计算时序路径要求并通过以下方式报告设计时序裕度的特性松弛计算的方法有关更多信息&#xff0c;请参阅Vivado Design…

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用

前面一直在讲 Requests 模块如何使用&#xff0c;那都是在请求阶段要做的事情&#xff0c;相信很多网友都在等一个能够开始爬网站信息的教程&#xff0c;今天它来了&#xff0c;今天我要给大家讲一个很简单易懂的库&#xff1a;BeautifulSoup4。 一、概述&安装 Beautiful…