先给大家上一个实战的效果图
这个是我们小组在开发的一个消息界面,用于实现简单的交流通信功能,只实现了简单的前端框架,下面献上代码供大家参考学习,若有不足,请多多指教。
wxml部分
<!--头部消息中心-->
<view class='title' style='height:{{navH}}px' catchtouchmove='true'>
<view class='title-text'>消息中心</view>
<!-- 私信、通知切换栏 -->
<view class="selectTab" style='margin-top:{{navH}}px' catchtouchmove='true'>
<view class="flex-row">
<view class="message {{currentTab==0?'active':''}}" data-current="0" bindtap="clickTab">
私信
<!--气泡提示-->
<view class='bubble'>
<view class='num'>3</view>
</view>
</view>
<view class="notify {{currentTab==1?'active':''}}" data-current="1" bindtap="clickTab">
通知
<!--气泡提示-->
<view class='bubble2'>
<view class='num'>21</view>
</view>
</view>
</view>
<view class='onTabLine' style="margin-left:{{175+currentTab*273}}rpx" catchtouchmove="ture"></view>
<view class='line'></view>
</view>
</view>
<!--私信消息列表-->
<scroll-view scroll-y="true" class="message-list" style="margin-top:{{navH+47}}px;height:1200rpx" wx:if="{{currentTab==0}}" >
<!--示例用户1-->
<view class='user' bindtap='goTocontactPage'>
<image class='header-icon' src='/images/icon1.jpeg'></image>
<view class='user-content'>
<view class='firstline'>
<view class='apart'>
<view class='username'>
<text>测试1</text>
</view>
<view class='cooperation'>
<image src='./images/6.png'></image>
</view>
</view>
<view class='time'>
<view class='time-num'>9:36</view>
</view>
</view>
<view class='secondline'>
<view class='dialog'>
<text>你想要怎么拍呢?</text>
</view>
<view class='dialog-nums'>
<view class='bubble3'>
<view class='num'>2</view>
</view>
</view>
</view>
</view>
</view>
<!--分割线-->
<view class='linecut'></view>
<!--示例用户2-->
<view class='user' bindtap='goTocontactPage'>
<image class='header-icon' src='https://b267.photo.store.qq.com/psb?/V13v0ZyH3zvYu7/9Ne*obpt0tAkfi3fZZij7.1VF4qT363gGq021zfYWQ0!/b/dAsBAAAAAAAA&bo=bgFuAQAAAAAFByQ!&rf=viewer_4'></image>
<view class='user-content'>
<view class='firstline'>
<view class='apart'>
<view class='username'>
<text>测试2</text>
</view>
<view class='cooperation'>
<!-- <image src='./images/6.png'></image> -->
</view>
</view>
<view class='time'>
<view class='time-num'>8:16</view>
</view>
</view>
<view class='secondline'>
<view class='dialog'>
<text>约拍时间是这周六下午的两点钟</text>
</view>
<view class='dialog-nums'>
<view class='bubble3'>
<view class='num'>1</view>
</view>
</view>
</view>
</view>
</view>
<!--分割线-->
<view class='linecut'></view>
</scroll-view>
<!--关注消息列表框-->
<scroll-view scroll-y class="notify-list" style="margin-top:{{navH+47}}px;height:1800rpx;" wx:if="{{currentTab==1}}">
<!--系统通知-->
<view class='notify-type' bindtap='goToSystemPage'>
<view class='notify-icon'>
<image src='./images/tongzhi.png'></image>
</view>
<view class='notify-name'>
系统通知
<view class='notify-num'>
<view class='nums'>11</view>
</view>
</view>
<view class='right'>
<!-- <image src=''></image> -->
</view>
</view>
<view class='liner'></view>
<!--点赞-->
<view class='thumbs-up-type' bindtap='goToDianzanPage'>
<view class='notify-icon'>
<image src='./images/dianzan.png'></image>
</view>
<view class='thumbs-up-name'>
点赞
<view class='thumbs-up-num'>
<view class='nums'>6</view>
</view>
</view>
<view class='right'>
<!-- <image src=''></image> -->
</view>
</view>
<view class='liner'></view>
<!--评论-->
<view class='dialog-type' bindtap='goToCommentPage'>
<view class='dialog-icon'>
<image src='./images/dialog.png'></image>
</view>
<view class='dialog-name'>
评论
<view class='dialog-num'>
<view class='nums'>2</view>
</view>
</view>
<view class='right'>
<!-- <image src=''></image> -->
</view>
</view>
<view class='liner'></view>
<!--我关注的-->
<view class='follow-type' bindtap='goToConcernPage'>
<view class='follow-icon'>
<image src='./images/guanzhu.png'></image>
</view>
<view class='follow-name'>
我关注的
<view class='follow-num'>
<view class='nums'>1</view>
</view>
</view>
<view class='right'>
<!-- <image src=''></image> -->
</view>
</view>
<view class='liner'></view>
<!--底部消息提示框-->
<view class="unread">
<text>您有21条未读通知</text>
</view>
</scroll-view>
<!--底部导航-->
<tabbar tabbar="{{tabbar}}"></tabbar>
wxss部分
/*头部标题*/
.title{
width: 100%;
/* overflow: hidden; */
position: fixed;
top: 0;
left: 0;
background: #fff;
z-index: 999;
}
.title-text{
width: 100%;
height: 45px;
line-height: 45px;
text-align: center;
position: absolute;
bottom: 0;
left: 0;
font-size: 40rpx;
font-weight: 500;
}
/*私信、通知*/
.flex-row{
flex-direction: row;
display: flex;
}
.onTabLine{
width: 120rpx;
height: 5rpx;
background-color:#4074DD;
margin-top:15rpx;
}
.line{
width: 750rpx;
height: 2rpx;
background-color: #F2F2F2;
margin: 0rpx auto 0 auto;
}
.message,.notify{
display: flex;
flex-direction: row;
font-size:36rpx;
margin-top: 20rpx;
width: 120rpx;
color:#CDCDCD;
}
.message{
margin-left: 200rpx;
}
.notify{
margin-left: 150rpx;
}
.active{
color:#4074DD;
}
.selectTab{
position: fixed;
background-color: #fff;
z-index: 100;
}
/*气泡框样式*/
.bubble{
background-color: #4074DD;
border-radius: 50rpx;
width: 30rpx;
height: 30rpx;
position: relative;
left: 10rpx;
bottom: 10rpx;
}
.bubble .num{
font-size: 24rpx;
color:#ffffff;
margin-left: 8rpx;
margin-top: -2rpx;
}
.bubble2{
background-color: #4074DD;
border-radius: 20rpx;
width: 40rpx;
height: 30rpx;
position: relative;
left: 10rpx;
bottom: 10rpx;
}
.bubble2 .num{
font-size: 24rpx;
color:#ffffff;
margin-left: 8rpx;
margin-top: -2rpx;
}
/*私信消息*/
.message-list{
/* background-color:#f2f2f2; */
display: flex;
flex-direction: column;
}
.user{
display: flex;
flex-direction: row;
}
.user-content{
display: flex;
flex-direction: column;
}
.header-icon{
width: 104rpx;
height: 104rpx;
border-radius: 80rpx;
margin-left: 20rpx;
margin-top: 26rpx;
}
.firstline{
display: flex;
flex-direction: row;
}
.apart{
margin-left: 20rpx;
display: flex;
flex-direction: row;
width: 400rpx;
}
.username{
font-size: 36rpx;
margin-top: 26rpx;
font-weight: 400;
}
.cooperation{
width: 40rpx;
}
.cooperation image{
width: 40rpx;
height: 34rpx;
margin-top: 34rpx;
margin-left: 10rpx;
}
.time{
display: flex;
width: 60rpx;
font-size: 24rpx;
margin-top: 36rpx;
color: #aeaeae;
margin-left: 140rpx;
}
.time-num{
/* margin-right: 200rpx; */
}
/*内容第二行*/
.secondline{
display: flex;
flex-direction: row;
}
/*对话框消息内容*/
.dialog{
width: 545rpx;
font-size: 28rpx;
color: #aeaeae;
margin-left: 20rpx;
margin-top: 15rpx;
}
/*对话框提示数目*/
.dialog-nums{
/* width: 100rpx; */
}
/*气泡样式*/
.bubble3{
background-color: #4074DD;
border-radius: 80rpx;
width: 40rpx;
height: 40rpx;
/* margin-left: 200rpx; */
margin-top: 20rpx;
}
.bubble3 .num{
font-size: 28rpx;
color: #ffffff;
font-weight: 500;
margin-left: 12rpx;
}
/*分割线*/
.linecut{
width: 100%;
height: 2rpx;
background-color: #F2F2F2;
margin-top: 26rpx;
}
/*通知界面*/
/*系统通知*/
.notify-type{
display: flex;
flex-direction: row;
}
.notify-icon{
margin-left: 20rpx;
margin-top: 20rpx;
}
.notify-icon image{
width: 80rpx;
height: 80rpx;
}
.notify-name{
font-size: 36rpx;
font-weight: 500;
margin-top: 35rpx;
margin-left: 36rpx;
}
.notify-num{
width: 40rpx;
height: 30rpx;
background-color: red;
border-radius: 40rpx;
display: flex;
flex-direction: row;
position: relative;
bottom: 60rpx;
left: 150rpx;
}
.notify-num .nums{
font-size: 24rpx;
color: #fff;
margin-left: 8rpx;
margin-bottom: 6rpx;
}
/*最帅的分割线*/
.liner{
width: 100%;
height: 2rpx;
background-color: #F2F2F2;
margin-top: 20rpx;
}
/*点赞*/
.thumbs-up-type{
display: flex;
flex-direction: row;
}
.thumbs-up-icon{
margin-left: 20rpx;
margin-top: 20rpx;
}
.thumbs-up-icon image{
width: 80rpx;
height: 80rpx;
}
.thumbs-up-name{
font-size: 36rpx;
font-weight: 500;
margin-top: 35rpx;
margin-left: 36rpx;
}
.thumbs-up-num{
width: 30rpx;
height: 30rpx;
background-color: #4074DD;
border-radius: 40rpx;
display: flex;
flex-direction: row;
position: relative;
bottom: 60rpx;
left: 80rpx;
}
.thumbs-up-num .nums{
font-size: 24rpx;
color: #fff;
margin-left: 8rpx;
margin-bottom: 6rpx;
}
/*评论*/
.dialog-type{
display: flex;
flex-direction: row;
}
.dialog-icon{
margin-left: 30rpx;
margin-top: 35rpx;
}
.dialog-icon image{
width: 65rpx;
height: 65rpx;
}
.dialog-name{
font-size: 36rpx;
font-weight: 500;
margin-top: 35rpx;
margin-left: 41rpx;
}
.dialog-num{
width: 30rpx;
height: 30rpx;
background-color: #4074DD;
border-radius: 40rpx;
display: flex;
flex-direction: row;
position: relative;
bottom: 60rpx;
left: 80rpx;
}
.dialog-num .nums{
font-size: 24rpx;
color: #fff;
margin-left: 8rpx;
margin-bottom: 6rpx;
}
/*我关注的*/
.follow-type{
display: flex;
flex-direction: row;
}
.follow-icon{
margin-left: 20rpx;
margin-top: 20rpx;
}
.follow-icon image{
width: 80rpx;
height: 80rpx;
}
.follow-name{
font-size: 36rpx;
font-weight: 500;
margin-top: 35rpx;
margin-left: 36rpx;
}
.follow-num{
width: 30rpx;
height: 30rpx;
background-color: #4074DD;
border-radius: 40rpx;
display: flex;
flex-direction: row;
position: relative;
bottom: 60rpx;
left: 150rpx;
}
.follow-num .nums{
font-size: 24rpx;
color: #fff;
margin-left: 8rpx;
margin-bottom: 6rpx;
}
/*未读消息框*/
.unread{
margin-top: 16rpx;
font-size: 26rpx;
color: #aeaeae;
text-align: center;
}
其中部分bindtap有跳转函数,较为简单,此处就不一一列出,我们使用的是自定义头部标题,所以在使用前,须将app.js中的"navigationStyle"设置为"custom",