ホームページ > WeChat アプレット > ミニプログラム開発 > ミニ プログラム コンポーネント: チャット セッション コンポーネントの概要 (コード付き)

ミニ プログラム コンポーネント: チャット セッション コンポーネントの概要 (コード付き)

不言
リリース: 2018-08-10 15:40:34
オリジナル
3688 人が閲覧しました

この記事の内容は、ミニ プログラム コンポーネントに関するものです。チャット セッション コンポーネントの概要 (コード付き) を必要とする友人が参考になれば幸いです。

シナリオ

オンラインカスタマーサービスのチャット会話などに使用します

1. 円をレイアウトします

1. 三角矢印

26rpx*26rpx の長方形を描画し、45 度回転して非表示にします半分、バブル上に直角三角形を形成します。

<!-- 画三角箭头 -->
 <view class="triangle" style="{{item.myself == 1 ? &#39;right: 140rpx; background: #7ECB4B&#39; : &#39;left: 140rpx;&#39;}}"></view>
 
/* 三角箭头 */
.body .triangle {
 background: white;
 width: 20rpx;
 height: 20rpx;
 margin-top: 26rpx;
 transform: rotate(45deg);
 position: absolute;
}
ログイン後にコピー

2. Flex-flow は、フローの方向を変更し、それぞれ ['row' | 'row-reverse'] を取り、相手が送信したメッセージのアバターが左側にくるようにします。自分が送ったメッセージのアバターが右側にあります。

<view class="body" style="flex-flow: {{item.myself == 0 ? &#39;row&#39; : &#39;row-reverse&#39;}}">
ログイン後にコピー

3. 押して話しかけると、フローティングレイヤーが水平方向と垂直方向に中央に配置されます

オプション1、JS手動計算

data: {
 hud_top: (wx.getSystemInfoSync().windowHeight - 150) / 2,
 hud_left: (wx.getSystemInfoSync().windowWidth - 150) / 2,
}
<view class="hud-container" wx:if="{{status != state.normal}}" style="top: {{hud_top}}px; left: {{hud_left}}px;">
ログイン後にコピー

オプション2、純粋なCSS

/*悬浮提示框*/
.hud-container {
 position: fixed;
 width: 150px;
 height: 150px;
 left: 50%;
 top: 50%;
 margin-left: -75px;
 margin-top: -75px;
}
ログイン後にコピー

比較後、オプション2の方がオプション1より優れています

JS句読点

1. タッチイベントを使用すると、上にスワイプして音声入力をキャンセルできます

押すと保留状態になり、一定の距離を超えて上にスワイプするとキャンセルプロンプトが表示されます。それを超えないように上にスワイプして、放して送信します。

touchStart: function (e) {
 // 触摸开始
 var startY = e.touches[0].clientY;
 // 记录初始Y值
 this.setData({
 startY: startY,
 status: this.data.state.pressed
 });
 },
 touchMove: function (e) {
 // 触摸移动
 var movedY = e.touches[0].clientY;
 var distance = this.data.startY - movedY;
 // console.log(distance);
 // 距离超过50,取消发送
 this.setData({
 status: distance > 50 ? this.data.state.cancel : this.data.state.pressed
 });
 },
 touchEnd: function (e) {
 // 触摸结束
 var endY = e.changedTouches[0].clientY;
 var distance = this.data.startY - endY;
 // console.log(distance);
 // 距离超过50,取消发送
 this.setData({
 cancel: distance > 50 ? true : false,
 status: this.data.state.normal
 });
 // 不论如何,都结束录音
 this.stop();
 },
ログイン後にコピー

2. メッセージを送信した後、ページの最後までスクロールします

data: {
 toView: &#39;&#39;
}
reply: {
// ...
this.scrollToBottom()
},
scrollToBottom: function () {
 this.setData({
 toView: &#39;row_&#39; + (this.data.message_list.length - 1)
 });
 },
ログイン後にコピー
<!--每一行消息条-->
<view class="row" wx:for="{{message_list}}" wx:key="" id="row_{{index}}">
ログイン後にコピー

関連する推奨事項:

ミニ プログラムとバックグラウンドの間のインタラクションの実装 (コード付き)

ミニ プログラムの自動読み込み用の完全なコード

以上がミニ プログラム コンポーネント: チャット セッション コンポーネントの概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート