uniapp顶部提示栏实现

效果:

用途:用于展示较短系统通知

实现逻辑:

1.通过请求获取该显示的通知内容,目前所考虑的字段有:

复制代码
{
    id: 200,     // 通知标识,后续会用其阻止用户关闭后无休止开启
    message: "请勿以系统规定的其它方式获取相关道具,一旦发现,将给予封号处罚!", 
    force: false,     // 是否强制,true--不可关闭,false--可关闭
    open: true        // 用于管理通知的开关,最多只有一条消息处于开启状态,后台只返回开启的通知
}

2.通过占位与fixed使显示内容位置固定

html 复制代码
<view style="height: 30px;" v-if="!isClose">
		<view class="p-tb-5" style="white-space: nowrap; overflow: hidden; width: 90%; font-size: 12px; background-color: beige; position: fixed; z-index: 20;">
			<view style="display: flex;">
				<view class="scroll-text"  style="width: 90%;">
					{{notice.message}}
				</view>
				<view @click="toCloseNotice" v-if="!notice.force" style="z-index: 10; width: 10%; background-color: beige;" class="center-hor">
					<image src="../../static/icon/error.png" class="iconImage-20"></image>
				</view>
			</view>
		</view>
	</view>

并给予文字显示滚动效果

css 复制代码
.scroll-text {
	  display: inline-block;
	  will-change: transform; /* 提高性能 */
	  animation: scroll-left 10s linear infinite; /* 动画效果 */
	}
	
	/* 定义动画 */
	@keyframes scroll-left {
	  from {
	    transform: translateX(100%);
	  }
	  to {
	    transform: translateX(-100%);
	  }
	}

3.设置显示效果与关闭

javascript 复制代码
export default {
		name:"topNotice",
		data() {
			return {
				notice: commonApi.getNotice(),
				isClose: false
			};
		},
		methods: {
			isClosed() {
				const ids = uni.getStorageSync("closedids")
				if(ids && ids === this.notice.id) {
					return true
					// return ids.includes(this.notice.id)
				}
				return false
			},
			
			toCloseNotice() {
				// const ids = uni.getStorageSync("closedids") || []
				// ids.push(this.notice.id)
				uni.setStorageSync("closedids", this.notice.id)
				this.isClose = this.isClosed()
			}
		},
		mounted() {
			this.isClose = this.isClosed()
		}
	}
相关推荐
2501_9159090618 小时前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063220 小时前
App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
android·macos·ios·小程序·uni-app·iphone·webview
行走的陀螺仪1 天前
uni-app + Vue3 实现折叠文本(超出省略 + 展开收起)
前端·javascript·css·uni-app·vue3
小禾青青1 天前
uniapp安卓打包遇到报错:Uncaught SyntaxError: Invalid regular expression: /[\p{L}\p{N}]/
android·uni-app
环信即时通讯云1 天前
实现小程序 uniApp 输入框展示自定义表情包
小程序·uni-app
2501_915921431 天前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump
黄交大彭于晏1 天前
UniApp 全局通知功能实现
前端·vue.js·uni-app
abigale031 天前
开发实战 - ego商城 - 7 地址管理模块
前端·uni-app·node.js
笨笨狗吞噬者1 天前
【uniapp】解决小程序分包下的json文件编译后生成到主包的问题
前端·uni-app
2501_915918411 天前
Fiddler抓包工具详解,HTTP/HTTPS抓包、代理设置与调试技巧一站式教程(含实战案例)
http·ios·小程序·https·fiddler·uni-app·webview