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

news2024/11/15 13:55:00

 效果如图:

实现思路:

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 H5
			this.imgHeight = 100;
			// #endif
			
			let 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.coloradmin.cn/o/2163426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

List几种遍历方法速度

准备数据 ArrayList<Integer> list new ArrayList<Integer>();for (int i 0; i < 100000000; i) {list.add(i); }1.for循环 for (int i 0; i < list.size(); i) {Integer str list.get(i); }2.for-each循环 for (Integer vo:list) {}3.Lambda list.forEa…

XXl-SSO分布式单点登录框架

概述 下载地址&#xff1a;https://gitee.com/xuxueli0323/xxl-sso 文档地址&#xff1a;https://www.xuxueli.com/xxl-sso/ 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、CookieToken均支持…

工业数据采集系统

一、网页部分代码 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

中国蚁剑(antSword)安装使用

antSword下载 antSword-Loader下载 作者&#xff1a;程序那点事儿 日期&#xff1a;2024/09/12 19:35 中国蚁剑&#xff08;AntSword&#xff09;是一款跨平台的开源网站管理工具&#xff0c;旨在满足渗透测试人员的需求。它是一个功能强大的工具&#xff0c;可以帮助用户管理…

这样做PPT也太酷了吧,27.9kstar,适合开发者的ppt工具推荐

1 slidev简介 slidev 是一个基于 Vue 开发的网页演示文稿工具,主要功能是将 Markdown 文档转换为演示幻灯片。 为开发者打造的演示文稿工具 Slidev最大的优势在于整个演示文稿内容的编写采用简单的Markdown格式,这极大降低了创作门槛。我们可以使用VS Code等编辑器高效编写Mar…

Linux centerOS 服务器搭建NTP服务

1&#xff0c;安装 NTP软件 sudo yum -y install ntp2&#xff0c;编辑配置文件 sudo vim /etc/ntp.conf 3&#xff0c;修改配置 在ntp.conf文件中&#xff0c;可以配置服务器从哪些上游时间源同步时间。如果你想让你的服务器对外同步时间&#xff0c;可以去掉restrict d…

js中Fucntion的意义

在js中&#xff0c;我们常常如下方式写函数&#xff1a; function fn(){console.log("这是一个函数."); }; fn(); 在js中&#xff0c;函数本质就是一个对象。 那么&#xff0c;结合我的上一篇文章&#xff1a;通俗讲解javascript的实例对象、原型对象和构造函数以及…

C盘空间不足--WizTree(管理空间)

WizTree&#xff1a;高效的磁盘空间分析工具 在日常使用电脑的过程中&#xff0c;磁盘空间的管理常常成为一个棘手的问题。随着文件的不断增加&#xff0c;我们的硬盘空间逐渐被占满&#xff0c;而这些文件中有很多其实并不重要。为了帮助用户更好地管理磁盘空间&#xff0c;Wi…

CNS-WRFID-01地标卡读写器|写卡器DEMO软件读、写操作说明

CNS-WRFID-01地标卡读写器|写卡器是一款高频读写设备&#xff0c;支持ISO15693协议芯片卡&#xff0c;地标标签读写&#xff0c;支持兴颂系列抗金属|非抗金属RFID标签&#xff0c;如&#xff1a;CNS-CRFID-01、CNS-CRFID-02、CNS-CRFID-03、CNS-CRFID-04、CNS-CRFID-05、CNS-CR…

Vue3 中集成海康 H5 监控视频播放功能

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:Vue-集成海康 H5 监控视频播放功能 目录 一、引言 二、环境搭建 三、代码解析 子组件部分 1.…

Spring项目报错:Public Key Retrieval is not allowed

报错原因&#xff1a; 如图 在你项目的数据库下可以找到该文件 解决方案&#xff1a; 在service-oa模块的application-dev.yml文件中 在红框中改成下面代码&#xff0c;数据库与具体项目保持一致&#xff0c;不一定是我这个&#xff0c;改allowPublicKeyRetrievaltrue String…

支持K歌音箱方案应用的高性能 32 位蓝牙音频应用处理器-BP1048B2

DSP是一类嵌入式通用可编程微处理器&#xff0c;主要用于实现对信号的采集、识别、变换、增强、控制等算法处理&#xff0c;是各类嵌入式系统的“大脑”应用十分广泛。BP1048B2是一款高性能DSP音频数字信号处理器芯片&#xff0c;能实现多种音频功能如混响、均衡、滤波、反馈抑…

Python邮件发送附件:怎么配置SMTP服务器?

Python邮件发送附件如何实现&#xff1f;Python发送带附件邮件&#xff1f; 在自动化和脚本编写中&#xff0c;使用Python发送带有附件的邮件是一个非常实用的功能。AokSend将详细介绍如何配置SMTP服务器&#xff0c;以便在Python中实现邮件发送附件的功能。 Python邮件发送附…

Postman/Jmeter接口测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&#xff0c;比如你需要从别的系统来获取到或者同步资源与信息&#xff0c;他们会提供给你一个写好…

独立站烧钱背后:Facebook 广告转化率策略的神秘“致胜法则”

Facebook广告作为大部分零售独立站的主要“烧钱”渠道&#xff0c;投放策略的决策往往比日常操作技巧更为重要。 之前出海笔记分享过关于在我们烧了一年广告预算后&#xff0c;对人群定位的总结 这次在另外一个项目上再次印证了我们的推断。 省流&#xff1a;直接告诉你们结论…

全国糖酒会全域采购商选品会前瞻-见证零售新势力的崛起与变革

消费市场正经历着前所未有的变革。新兴零售渠道如雨后春笋般迅速崛起&#xff0c;对传统大卖场和电商模式提出了严峻挑战。在这一变革浪潮中&#xff0c;仓储会员店、零食折扣店、即时零售、内容电商以及私域团购等新兴模式脱颖而出&#xff0c;零售商与供应商关系被重构&#…

2024最新Linux发行版,Kali Linux迎来劲敌,零基础入门到精通,收藏这一篇就够了

概念简介 Parrot OS 是一款基于 Debian 的 Linux 发行版&#xff0c;专门为安全研究、渗透测试、开发以及隐私保护而设计。由 Frozenbox 团队开发的 Parrot OS&#xff0c;结合了现代安全工具、用户友好的环境以及出色的隐私保护特性&#xff0c;成为网络安全从业者、开发人员…

EasyExcel 多个不同对象集合,导入同一个sheet中

需求&#xff1a;将两块数据&#xff0c;写入要一个excel里面。 根据项目&#xff0c;导入依赖版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> <…

旷视 ShuffleNetV2

目录 前言 一、ShuffleNetV2带来的创新点四条轻量化网络设计原则 1.1 准则一&#xff1a;相同的输入输出通道数能够减少内存访问成本(MAC) 1.2 准则二: 过多的分组卷积会增加 MAC 1.3 准则三: 网络的碎片化程度会减少并行化程度&#xff08;碎片化操作对并行加速不友好&am…

用计算器学习float、输入输出函数的格式化

上一篇介绍了C语言的一部分基础知识&#xff0c;今天我们来继续深入一点讲。 引入浮点数——float 做一个加减法计算器显然不能满足其他计算需求&#xff0c;比如我们生活中的东西并不总是用整数来衡量。我们有五毛钱&#xff0c;有半杯水&#xff0c;有随时都在变的速度&…