perf: 优化消息移动端打开动画效果

This commit is contained in:
kuaifan 2022-05-19 12:16:35 +08:00
parent c0ead0b891
commit 88163499fe
7 changed files with 37 additions and 18 deletions

2
public/css/app.css vendored

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
82de89ee83a1f523 57edae6a053a5119

View File

@ -2,7 +2,7 @@
<div class="page-messenger"> <div class="page-messenger">
<PageTitle :title="$L(tabActive==='dialog' ? '消息' : '通讯录')"/> <PageTitle :title="$L(tabActive==='dialog' ? '消息' : '通讯录')"/>
<div class="messenger-wrapper"> <div class="messenger-wrapper">
<div class="messenger-select" :class="{'show768-menu':dialogId == 0}"> <div class="messenger-select">
<div class="messenger-search"> <div class="messenger-search">
<div class="search-wrapper"> <div class="search-wrapper">
<Input v-if="tabActive==='dialog'" prefix="ios-search" v-model="dialogKey" :placeholder="$L('搜索...')" clearable /> <Input v-if="tabActive==='dialog'" prefix="ios-search" v-model="dialogKey" :placeholder="$L('搜索...')" clearable />
@ -114,12 +114,12 @@
</div> </div>
</div> </div>
<div class="messenger-msg"> <div class="messenger-msg" :class="{'show768':dialogId > 0}">
<div class="msg-dialog-bg"> <div class="msg-dialog-bg">
<div class="msg-dialog-bg-icon"><Icon type="ios-chatbubbles" /></div> <div class="msg-dialog-bg-icon"><Icon type="ios-chatbubbles" /></div>
<div class="msg-dialog-bg-text">{{$L('选择一个会话开始聊天')}}</div> <div class="msg-dialog-bg-text">{{$L('选择一个会话开始聊天')}}</div>
</div> </div>
<DialogWrapper v-if="dialogId > 0" :dialogId="dialogId" @on-active="scrollIntoActive"/> <DialogWrapper v-if="dialogTmpId > 0" :dialogId="dialogTmpId" @on-active="scrollIntoActive"/>
</div> </div>
</div> </div>
</div> </div>
@ -144,6 +144,7 @@ export default {
], ],
dialogActive: '', dialogActive: '',
dialogKey: '', dialogKey: '',
dialogTmpId: 0,
contactsKey: '', contactsKey: '',
contactsLoad: 0, contactsLoad: 0,
@ -258,12 +259,6 @@ export default {
this.getContactsList(1); this.getContactsList(1);
} }
}, },
dialogId(id) {
if (id > 0) {
$A.setStorage("messenger::dialogId", id);
this.scrollIntoActive()
}
},
contactsKey(val) { contactsKey(val) {
setTimeout(() => { setTimeout(() => {
if (this.contactsKey == val) { if (this.contactsKey == val) {
@ -271,7 +266,24 @@ export default {
this.getContactsList(1); this.getContactsList(1);
} }
}, 600); }, 600);
} },
dialogId: {
handler(id) {
if (id > 0) {
this.dialogTmpId = id;
$A.setStorage("messenger::dialogId", id);
this.scrollIntoActive()
} else {
this.timerA && clearTimeout(this.timerA);
this.timerA = setTimeout(_ => {
if (this.dialogId == 0) {
this.dialogTmpId = 0;
}
}, 300)
}
},
immediate: true
},
}, },
methods: { methods: {

View File

@ -387,6 +387,7 @@
@media (max-width: 768px) { @media (max-width: 768px) {
.page-messenger { .page-messenger {
.messenger-wrapper { .messenger-wrapper {
overflow-x: hidden;
.messenger-select { .messenger-select {
position: fixed; position: fixed;
top: 0; top: 0;
@ -396,9 +397,15 @@
max-width: none; max-width: none;
background-color: #ffffff; background-color: #ffffff;
z-index: 48; z-index: 48;
transition: all 0.2s; }
transform: translateX(-120%); .messenger-msg {
&.show768-menu { z-index: 49;
transition: transform 0.2s;
transform: translateX(120%);
.msg-dialog-bg {
display: none;
}
&.show768 {
transform: translateX(0); transform: translateX(0);
} }
} }