微信小程序评论功能的实现(用的是假数据)

具体直接看代码

wxml:

<view>

<button bindtap='showTalks'>查看评论</button>

</view>

<!-- 整个评论区 -->

<view class='talks-layer' animation='{{talksAnimationData}}'>

<!-- 主要作用是点击后隐藏评论区 -->

<view class='layer-white-space' bindtap='hideTalks'>

</view>

<!-- 评论区 -->

<view class='talks' bindtouchstart='touchStart' bindtouchmove='touchMove'>

<!-- 评论头部 -->

<view class='talk-header'>

<view class='talk-count'>{{talks.length}} 条评论</view>

<image src='../../../images/close.png' class='talk-close' bindtap='hideTalks'></image>

</view>

<!-- 评论体 -->

<scroll-view class='talk-body' scroll-y="true" bindscrolltolower="onScrollLoad">

<view class='talk-item' wx:for="{{talks}}" wx:key="*this">

<view class='talk-item-left'>

<image class='talk-item-face' src='{{item.avatarUrl}}'></image>

</view>

<view class='talk-item-right'>

<view class='right-left'>

<text class='talk-item-nickname'>{{item.nickName}}</text>

<text class='talk-item-time'>{{item.talkTime}}</text>

</view>

<text class='talk-item-content'>{{item.content}}</text>

</view>

</view>

</scroll-view>

<!-- 评论底部 -->

<view class="cf-bg" catchtap="cemojiCfBg" style="display:{{cfBg ? 'block' : 'none'}}"></view>

<view class=" {{isShow ?'footer_boxmovein' : 'talk-footer'}}">

<view class='footer_box'>

<view class="emoji iconfont icon-emoji" catchtap="emojiShowHide"></view>

<input class='talk-input' type='text' value='{{inputValue}}' bindblur="bindInputBlur" placeholder='有爱评论,说点儿好听的~'></input>

<button class='fabu-input' bindtap='faBu'>发布</button>

</view>

<view wx:if='{{isShow}}' class="emoji-box {{isShow ? 'emoji-move-in' : 'emoji-move-out'}} {{isLoad ? 'no-emoji-move' : ''}}">

<scroll-view scroll-y="true" bindscroll="emojiScroll" style="height:200px">

<block wx:for="{{emojis}}" wx:for-item="e" wx:key="">

<view class="emoji-cell">

<image class="touch-active" bindtap="emojiChoose" src="http://soupu.oss-cn-shanghai.aliyuncs.com/emoji/{{e.emoji}}.png" data-emoji="{{e.char}}" data-oxf="{{e.emoji}}"></image>

</view>

</block>

</scroll-view>

</view>

</view>

</view>

</view>

.wxss

page {

height: 100%;

overflow: hidden;

}

/* 框架 */

.talks-layer {

position: absolute;

bottom: -100%;

height: 0;

width: 100%;

overflow: hidden;

/* background-color: blue; */

}

.layer-white-space {

height: 100%;

width: 100%;

background-color: #ccc;

opacity: 0.5;

/* background-color: green; */

}

.talks {

position: absolute;

height: 900rpx;

width: 100%;

bottom: 0rpx;

background-color: #2f2d2e;

border-top-left-radius: 3%;

border-top-right-radius: 3%;

/* background-color: red; */

}

.talk-header {

width: 100%;

height: 70rpx;

padding-top: 30rpx;

text-align: center;

}

.talk-body {

height: 700rpx;

}

.talk-footer {

position: absolute;

bottom: 0rpx;

width: 100%;

height: 100rpx;

background-color: #151515;

display: flex;

justify-content: space-between;

align-items: center;

padding: 0 30rpx;

box-sizing: border-box;

}

.footer_boxmovein{

position: absolute;

bottom: 400rpx;

width: 100%;

height: 100rpx;

z-index:1000;

background-color: #151515;

display: flex;

justify-content: space-between;

align-items: center;

padding: 0 30rpx;

box-sizing: border-box;

transition:all 0.6s;

}

.footer_box {

display: flex;

justify-content: space-between;

align-items: center;

width: 100%;

}

/* 顶部元素 */

.talk-count {

font-size: 26rpx;

height: 40rpx;

color: #6b696a;

}

.talk-close {

position: absolute;

top: 30rpx;

right: 40rpx;

width: 40rpx;

height: 40rpx;

}

/* 中部元素 */

.talk-item {

display: flex;

flex-direction: row;

align-items: flex-start;

width: 100%;

color: white;

}

.talk-item-left {

display: flex;

flex-direction: row;

margin: 20rpx 30rpx;

}

.talk-item-face {

width: 80rpx;

height: 80rpx;

border-radius: 50%;

}

.talk-item-right {

width: 100%;

border-bottom: solid 1rpx #6a6869;

margin-right: 30rpx;

/* margin-bottom: 30rpx; */

padding-bottom: 20rpx;

}

.right-left {

display: flex;

justify-content: space-between;

align-items: center;

margin: 10px 0;

}

.talk-item-nickname {

font-size: 28rpx;

color: #aaa8a9;

}

.talk-item-time {

font-size: 24rpx;

color: #6a6869;

}

.talk-item-content {

display: block;

font-size: 30rpx;

margin-right: 30rpx;

width: 92%;

white-space: pre-line;

word-break: break-all;

word-wrap: break-word;;

}

/* 底部元素 */

.talk-input {

width: 100%;

font-size: 30rpx;

padding: 20rpx 0;

padding-left: 30rpx;

/* box-sizing: border-box; */

color: white;

border-top-left-radius: 5%;

border-top-right-radius: 5%;

}

.fabu-input {

background: red;

font-size: 26rpx;

color: #fff;

width: 127rpx;

height: 60rpx;

line-height: 60rpx;

text-align: center;

border-radius: 30rpx;

padding: 0;

}

.emoji {

background-color: #fff;

width: 30px;

height: 30px;

text-align: center;

padding-top: 2px;

box-sizing: border-box;

font-size: 20px;

}

.emoji-box {

position: absolute;

bottom:-390rpx;

left:0rpx;

height: 200px;

padding: 5px 16rpx;

box-sizing: border-box;

background:#000;

}

.emoji-cell {

width: 9.09%;

height: 33px;

display: inline-block;

}

.emoji-cell image {

width: 23px;

height: 23px;

padding: 5px;

border-radius: 3px;

}

.emoji-move-in {

-webkit-animation: emoji-move-in 0.3s forwards;

animation: emoji-move-in 0.3s forwards;

}

.emoji-move-out {

-webkit-animation: emoji-move-out 0.3s forwards;

animation: emoji-move-out 0.3s forwards;

}

.no-emoji-move {

-webkit-animation: none;

animation: none;

}

@-webkit-keyframes emoji-move-in {

0% {

margin-bottom: -200px;

}

100% {

margin-bottom: 0;

}

}

@keyframes emoji-move-in {

0% {

margin-bottom: -200px;

}

100% {

margin-bottom: 0;

}

}

@-webkit-keyframes emoji-move-out {

0% {

margin-bottom: 0;

}

100% {

margin-bottom: -200px;

}

}

@keyframes emoji-move-out {

0% {

margin-bottom: 0;

}

100% {

margin-bottom: -200px;

}

}

@-webkit-keyframes pd-left-move {

0% {

padding-left: 5px;

}

100% {

padding-left: 15px;

}

}

@keyframes pd-left-move {

0% {

padding-left: 5px;

}

100% {

padding-left: 15px;

}

}

.cf-bg {

position: fixed;

top: 0;

left: 0;

bottom: 0;

right: 0;

background-color: transparent;

z-index: 99;

}

.js

Page({

data: {

talks: [],

touchStart: 0,

inputValue: '',

inputBiaoqing: '',

faces: ['https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535727304160&di=0cc9d01a4ae2deca5634c3136d5c01f6&imgtype=0&src=http%3A%2F%2Fimg5q.duitang.com%2Fuploads%2Fitem%2F201406%2F12%2F20140612202753_u4nG5.jpeg', 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535727304159&di=da2c1c4e868ee95f3cd65ffc6e24a456&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201505%2F01%2F20150501083603_yuTQc.jpeg', 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535727304156&di=7d46a1482a8e798a70d8d52320285b02&imgtype=0&src=http%3A%2F%2Fup.enterdesk.com%2Fedpic_source%2F7b%2Ff9%2F01%2F7bf901db9091dff00a20d474c83afc45.jpg'],

names: ['贝贝', '晶晶', '欢欢', '妮妮'],

isShow: false, //控制emoji表情是否显示

isLoad: true, //解决初试加载时emoji动画执行一次

cfBg: false,

emojiChar: "☺-

猜你喜欢

转载自blog.csdn.net/dwb123456123456/article/details/82285850