uniapp+vue仿微信App界面|uni-app仿微信聊天/朋友圈

news/2025/1/16 3:36:10/

基于uni-app技术开发的仿微信界面聊天室uniapp-chatroom实例项目|uniapp仿微信朋友圈,实现了发送图文消息、表情(gif动图),图片预览、地图位置、长按菜单、红包/钱包、仿微信朋友圈等功能。

在H5 / 小程序 / App端测试效果如下,实测多端效果均为一致。(后续大图均展示App端)

技术实现

  • 编辑器:HBuilder X
  • 技术框架:uni-app + vue
  • 状态管理:Vuex
  • iconfont图标:阿里字体图标库
  • 自定义导航栏 + 底部Tabbar
  • 弹窗组件:uniPop(基于uni-app封装模态弹窗)
  • 测试环境:H5端 + 小程序 + App端(三端均兼容)
  • 高德地图:vue-amap

uniapp自定义顶部导航栏headerBar

顶部导航栏采用的是自定义模式,具体可参看这篇文章:uni-app自定义导航栏按钮|uniapp仿微信顶部导航条

在pages.json里面配置globalStyle,将navigationStyle设为custom时,原生顶部导航栏不显示,这时就能自定义导航栏

uniapp自定义模态弹窗组件

项目中用到的各种弹窗组件是基于uni-app实现的自定义Modal对话框|alert弹窗|Toast弱提示

具体参看:uni-app自定义Modal弹窗组件|仿ios、微信弹窗效果

在main.js里面引入全局uniPop弹窗组件,通过this.$refs.uniPop.show({...})调用即可

import uniPop from './components/uniPop/uniPop.vue'
Vue.component('uni-pop', uniPop)
<template>	<view class="uni__container flexbox flex_col bg_fbfbfb">...<!-- 引入弹窗模板 --><uni-pop ref="uniPop"></uni-pop></view>
</template>
this.$refs.uniPop.show({content: '手机号不能为空', time: 2})

引入公共样式及组件main.js

项目中用到的字体图标:阿里巴巴iconfont图标库,将下载的文件放到assets目录下,然后引入iconfont.css即可。

  

import Vue from 'vue'
import App from './App'// >>>引入css
import './assets/fonts/iconfont.css'
import './assets/css/reset.css'
import './assets/css/layout.css'// >>>引入状态管理
import store from './store'
Vue.prototype.$store = store// >>>引入公共组件
import headerBar from './components/header/header.vue'
import tabBar from './components/tabbar/tabbar.vue'
import popupWindow from './components/popupWindow.vue'
Vue.component('header-bar', headerBar)
Vue.component('tab-bar', tabBar)
Vue.component('popup-window', popupWindow)// >>>引入uniPop弹窗组件
import uniPop from './components/uniPop/uniPop.vue'
Vue.component('uni-pop', uniPop)Vue.config.productionTip = false
App.mpType = 'app'const app = new Vue({...App
})
app.$mount()

仿微信朋友圈透明导航栏

通过onPageScroll函数实现自定义导航上下滑动自动调整导航栏的透明度,滑动到距离顶部200 效果如下图二

  

/*** @tpl 朋友圈模板*/<template><view class="flexbox flex_col"><header-bar :isBack="true" title="朋友圈" :bgColor="{background: headerBarBackground}" transparent><text slot="back" class="uni_btnIco iconfont icon-arrL"></text><text slot="iconfont" class="uni_btnIco iconfont icon-publish mr_5" @tap="handlePublish"></text></header-bar><view class="uni__scrollview flex1"><view class="uni-friendZone">...</view></view></view>
</template><script>export default {data() {return {headerBarBackground: 'transparent'}},onPageScroll : function(e) {// console.log("滚动距离为:" + e.scrollTop);this.headerBarBackground = 'rgba(65,168,99,'+e.scrollTop / 200+')'},methods: {...}}
</script><style scoped></style>

uniapp实现聊天页面滚动至底部

在uni-app里面怎么将聊天信息滚动至底部呢?设置scroll-view属性scroll-into-view的值只能第一次滚动底部,并不能动态设置。

只能通过改变scroll-top的值来动态实现

<scroll-view id="scrollview" scroll-y="true" :scroll-top="scrollTop" style="height: 100%;"><view class="uni-chatMsgCnt" id="msglistview"><view class="msgitem">xxx</view><view class="msgitem">xxx</view><view class="msgitem">xxx</view>...</view>
</scroll-view>
export default {data() {return {scrollTop: 0,...}},mounted() {this.scrollToBottom()},updated() {this.scrollToBottom()},methods: {// 滚动至聊天底部scrollToBottom(t) {let that = thislet query = uni.createSelectorQuery()query.select('#scrollview').boundingClientRect()query.select('#msglistview').boundingClientRect()query.exec((res) => {// console.log(res)if(res[1].height > res[0].height){that.scrollTop = res[1].height - res[0].height}})},...}
}

到这里 基于uniapp开发仿微信聊天室就分享完了,希望大家能喜欢??~~

◆ 最后附上基于uni-app开发的自定义底部TabBar及模态弹窗组件

uniapp自定义Tabbar:https://blog.csdn.net/yanxinyun1990/article/details/101219095

uniapp自定义Modal:https://blog.csdn.net/yanxinyun1990/article/details/101594213

 


http://www.ppmy.cn/news/970660.html

相关文章

chatgpt赋能python:Python打折消费程序:为您节省钱的最佳选择

Python打折消费程序&#xff1a;为您节省钱的最佳选择 大家都知道&#xff0c;购物总是让我们心情愉悦&#xff0c;但钱包却不一定同意。然而在这个数字时代&#xff0c;我们可以利用技术来帮助我们节省我们的财务。Python打折消费程序就是一种优秀的选择。 什么是Python打折…

苹果悄悄推出了一个改变一切的新银行杀手储蓄账户

一个像苹果一样轻松的新储蓄账户 苹果刚刚宣布他们将推出一个新的储蓄账户。 Apple 表示,Apple Card 用户将能够直接在钱包中的 Apple Card 中无缝设置和管理储蓄,并具有一些主要优势: 不再收费 五彩缤纷的高产 没有最低余额 没有最低存款 这些好处无疑将迫使大多数面向消…

携带token请求返回500的坑

今天项目遇到一个棘手的问题&#xff0c;uniapp携带token请求返回500&#xff0c;但是postman测试没问题&#xff0c;其实postman就是内鬼&#xff01; 经过漫长的对比&#xff0c;知道下面的结果&#xff0c;原来是postman测试时自动给token携带了前缀&#xff0c;我靠&#…

如何重塑Web3游戏营销?Web2的优秀游戏能否完成继承?

未来Web3游戏的赢家将是那些首先专注于出色的游戏玩法&#xff0c;然后引入标记化或其他分散元素的游戏。Vice在最近一份关于Web3游戏的报告中写道&#xff1a;“目前Web3游戏的趣味性和功能性并不多。例如由于通证供应量膨胀&#xff0c;无法吸引新用户为老用户提供退出流动性…

3.13//微信小程序能用支付宝数币钱包了//又鸽了!世界首枚3D打印火箭发射再推迟:点火都没成功//说人话自动处理表格,且免费

///微信小程序能用支付宝数币钱包了 数字人民币App(试点版)“钱包快付管理”中新增“微信支付”&#xff0c;这意味着&#xff0c;用户在微信小程序等场景支付时&#xff0c;可以选择用数币钱包支付&#xff0c;包括使用支付宝数币钱包支付 ///珠海横琴杧洲隧道左线顺利贯通 …

运行Trezor 钱包suite项目+firmware(包含onekey)项目

一些流程 文章目录 目录 文章目录 前言 一、trezor钱包 一、firmware的安装步骤 二、suite官方操作 步骤 1.git 1.5 以下才是核心&#xff0c;尝试运行onekey的firmware 需要在ubuntu的终端中进行nix操作 ​编辑 2.接着 三、代码分析 1.doc的分析 Repository Structure 总结 前…

平头哥 BeagleV-Ahead TH1520 RISC-V 高性能开发板开箱硬件评测

BeagleV-Ahead开箱硬件讲解 BeagleV-Ahead开箱介绍 非常感谢 中国杭州平头哥半导体优先公司 和 Beagle社区给予我们 全球首款高性能 TH1520 RISC-V SBC开发板 BeagleV-Ahead评测工作&#xff0c;我们将围绕 开发板 外观 &#xff0c;板载功能接口&#xff0c;系统启动系统初体…

科大星云诗社动态20210822

【每日一诗】 来自{uin:1157698158,nick:冻结星} 的投稿 夜中迷雾的眼睛 行雨 你伸出风扇的手 用紊流爱抚我 我的背离开你的空气 化作平坦道路铺在大地上 情欲的车轮滚滚&#xff0c;压过它 压过一节节脊骨&#xff0c;就像 连绵的群山&#xff0c;你的指尖 作为一种闪电 直…