uniapp监听滚动实现顶部透明度变化

ops/2024/10/20 18:57:24/

 效果如图:

实现思路:

1、使用onPageScroll监听页面滚动,改变导航条的透明度;

2、关于顶部图片的高度:

如果是小程序:使用getMenuButtonBoundingClientRect获取胶囊顶部距离和胶囊高度;

如果是H5:给个自定义高度就行;

3、透明度opacity的计算公式:1 - (this.imgHeight - e.scrollTop) / this.imgHeight;

4、相关组件绑定行内样式,完活!

完整代码:

<template><view class=""><!-- 顶部导航 --><fa-navbar :title="vuex_table_title || '宝乐名车服务'" ref="navbar":style="[{opacity:opacity},{position:'fixed'},{'zIndex':'999'}]"></fa-navbar><!-- 顶部图片 --><view class="head_img" :style="[{overflow: 'hidden'},{height:imgHeight+'px'}]"><img :style="{width: '100%'}"src="https://sa.ffep.online:20093/uploads/20240907/590a5bb30e86dbbbe6a9172a41ba157a.png" alt="" /></view><!-- 搜索 --><view class="u-p-20 u-bg-white u-flex u-col-center" v-if="is_show"><view class="u-flex-1"><fa-search :mode="2"></fa-search></view><view class="u-p-l-15 u-p-r-5 u-flex u-col-center" v-if="is_order"><fa-orderby-select :filterList="filterList" :orderList="orderList" :multiple="true"@change="goOrderBy"></fa-orderby-select></view></view><!-- 分类 --><view class="u-border-top" v-if="isTab"><u-tabs :list="tabList" :active-color="theme.bgColor" :bar-width="tabwidth" name="title" :is-scroll="true":current="current" @change="change"></u-tabs></view><!-- 轮播图 --><view class="" v-if="is_show"><u-swiper :title="true" border-radius="0" height="320" :list="bannerList" @click="openPage"></u-swiper></view><!-- 列表 --><fa-article-item :archives-list="archivesList"></fa-article-item><!-- 为空 --><view class="u-m-t-60 u-p-t-60" v-if="is_empty"><u-empty text="暂无内容展示" mode="list"></u-empty></view><!-- 加载更多 --><view class="u-p-30" v-if="archivesList.length"><u-loadmore bg-color="#f4f6f8" :status="status" /></view><!-- 回到顶部 --><u-back-top :scroll-top="scrollTop" :icon-style="{ color: theme.bgColor }":custom-style="{ backgroundColor: lightColor }"></u-back-top><!-- 底部导航 --><fa-tabbar></fa-tabbar></view>
</template><script>import {archives} from '@/common/fa.mixin.js';export default {mixins: [archives],computed: {bannerList() {return this.vuex_config.bannerList || [];}},watch: {},onPageScroll(e) {let calc = 1 - (this.imgHeight - e.scrollTop) / this.imgHeight;this.opacity = calc},data() {return {imgHeight: 0,opacity: 0};},onLoad(e) {// #ifdef MP-WEIXIN || APP-PLUS// 获取状态栏和胶囊位置const {top,height} = uni.getMenuButtonBoundingClientRect()this.imgHeight = (top + height+10)*1.5;// #endif// #ifdef H5this.imgHeight = 100;// #endiflet query = e;if (JSON.stringify(query) == '{}') {query = e;}if (query && JSON.stringify(query) != '{}') {this.params = query;} else {this.params = {channel: -1,model: -1}}this.getCategory();this.getArchives();},methods: {},};
</script><style lang="scss">.head_img {// position: fixed;top: 0;left: 0;width: 100%;transition: opacity 0.2s ease;/* 平滑过渡 */}page {background-color: #f4f6f8;}
</style>


http://www.ppmy.cn/ops/118382.html

相关文章

C++版本更新历史

前言 C语言发展至今已经迭代了很多版本&#xff0c;而在不同环境中编写代码时经常看到C标准的设定&#xff0c;比如 Leetcode 中可以看到版本信息&#xff1a; 这说明Leetcode已经支持最新C23标准了&#xff0c;但某些环境并不一定支持这些语法&#xff0c;如果不清楚使用的语法…

Python pyusb 使用指南【windows+linux】

前言&#xff1a;USB(通用串行总线)作为一种高度通用性的硬件接口&#xff0c;在诸多领域均有应用。在C中可以直接使用libusb库即可完成USB设备信息查询、USB设备监听、与USB设备控制端点、数据&#xff08;同步、批量、中断&#xff09;端点进行指令、数据交互等功能。python中…

【智能大数据分析 | 实验二】Spark实验:部署Spark集群

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

极狐GitLab 17.4 重点功能解读【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

自动化运维工具 Ansible

Ansible 基础 Ansible 介绍 Ansible 是一个自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、cfengine、chef、 func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能。 Ansible 的…

Unity 设计模式 之 行为型模式-【命令模式】【责任链模式】

Unity 设计模式 之 行为型模式-【命令模式】【责任链模式】 目录 Unity 设计模式 之 行为型模式-【命令模式】【责任链模式】 一、简单介绍 二、命令模式&#xff08;Command Pattern&#xff09; 1、什么时候使用命令模式 2、使用命令模式的好处 3、使用时的注意事项 三…

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

低代码可视化-UniApp二维码可视化-代码生成器

市面上提供了各种各样的二维码组件&#xff0c;做了一简单的uniapp二维码组件&#xff0c;二维码实现依赖davidshimjs/qrcodejs。 组件特点 跨浏览器支持&#xff1a;利用Canvas元素实现二维码的跨浏览器兼容性&#xff0c;兼容微信小程序、h5、app。 无依赖性&#xff1a;QR…