diff --git a/docs/NOTE.md b/docs/NOTE.md index 36181b0..25960f4 100644 --- a/docs/NOTE.md +++ b/docs/NOTE.md @@ -9,3 +9,4 @@ - 双指缩放 - AutoInput组件,在真机上无法输入 +- 真机上100vh显示异常的问题 diff --git a/env.d.ts b/env.d.ts index 122e4eb..3f2474a 100644 --- a/env.d.ts +++ b/env.d.ts @@ -3,6 +3,10 @@ declare const LATEST_COMMIT_HASH: string declare global { + interface Window { + isMoved: boolean + } + interface Navigator { control: any webkitGetUserMedia: any diff --git a/public/data/posts.json b/public/data/posts.json index ae32145..415acfe 100644 --- a/public/data/posts.json +++ b/public/data/posts.json @@ -137,6 +137,9 @@ }, "interact_info": { "liked_count": "2147", "liked": false }, "cover": { "url_default": "daZ662BX0lVMTq0Y6hIwR.png" }, + "image_list": [ + { "info_list": [{ "url": "daZ662BX0lVMTq0Y6hIwR.png" }] } + ], "type": "normal", "display_title": "无所谓了,互联网没有我在乎的人" }, @@ -176,7 +179,10 @@ "nickname": "芙•" }, "interact_info": { "liked": false, "liked_count": "1966" }, - "cover": { "url_default": "4a4TtExpq7RXnKK3hylKU.png" } + "cover": { "url_default": "4a4TtExpq7RXnKK3hylKU.png" }, + "image_list": [ + { "info_list": [{ "url": "4a4TtExpq7RXnKK3hylKU.png" }] } + ] }, "track_id": "2d0udv0xvhqne0t0nmd83", "ignore": false, @@ -233,6 +239,9 @@ }, "interact_info": { "liked": false, "liked_count": "1005" }, "cover": { "url_default": "dg16eh25m2SSI9Hc1fJuE.png" }, + "image_list": [ + { "info_list": [{ "url": "dg16eh25m2SSI9Hc1fJuE.png" }] } + ], "type": "normal", "display_title": "拍旗袍没人看 办公室随手拍就有流量是吧" }, @@ -321,7 +330,10 @@ "nick_name": "林木婷子" }, "interact_info": { "liked": false, "liked_count": "2700" }, - "cover": { "url_default": "z-XSh-g9MhKpYrFDHcxQT.png" } + "cover": { "url_default": "z-XSh-g9MhKpYrFDHcxQT.png" }, + "image_list": [ + { "info_list": [{ "url": "z-XSh-g9MhKpYrFDHcxQT.png" }] } + ] }, "track_id": "2d0udv0xvhqne0t0nmd83" }, @@ -629,7 +641,10 @@ "user_id": "5bf37f6651783a194c1e1da2" }, "interact_info": { "liked": false, "liked_count": "119" }, - "cover": { "url_default": "UaxqkI4aZ5LDu7k8KLw48.png" } + "cover": { "url_default": "UaxqkI4aZ5LDu7k8KLw48.png" }, + "image_list": [ + { "info_list": [{ "url": "UaxqkI4aZ5LDu7k8KLw48.png" }] } + ] } }, { @@ -888,6 +903,7 @@ }, "interact_info": { "liked": false, "liked_count": "1786" }, "cover": { "url_default": "n0SAcEY5gLucU7Ik7yP2P.png" }, + "image_list": [{ "info_list": [{ "url": "n0SAcEY5gLucU7Ik7yP2P.png" }] }], "type": "normal" }, "track_id": "2d0udv0xvhqne0t0nmd83", @@ -936,6 +952,9 @@ "model_type": "note", "note_card": { "cover": { "url_default": "Sf5mzf68e2GwZHZv7h1G2.png" }, + "image_list": [ + { "info_list": [{ "url": "Sf5mzf68e2GwZHZv7h1G2.png" }] } + ], "type": "normal", "display_title": "行吧,我重发 ", "user": { diff --git a/public/data/posts.md b/public/data/posts.md index 1eb7d97..b1f626e 100644 Binary files a/public/data/posts.md and b/public/data/posts.md differ diff --git a/src/components/dialog/FromBottomDialog.vue b/src/components/dialog/FromBottomDialog.vue index 0ef97a6..d31f347 100644 --- a/src/components/dialog/FromBottomDialog.vue +++ b/src/components/dialog/FromBottomDialog.vue @@ -28,8 +28,9 @@ diff --git a/src/pages/message/chat/Chat.vue b/src/pages/message/chat/Chat.vue index 554a159..ed98619 100644 --- a/src/pages/message/chat/Chat.vue +++ b/src/pages/message/chat/Chat.vue @@ -191,7 +191,6 @@ import { computed, inject, nextTick, onMounted, onUnmounted, reactive, ref } fro import Loading from '@/components/Loading.vue' import { useBaseStore } from '@/store/pinia' import { _checkImgUrl, _no, _sleep } from '@/utils' -import $ from 'jquery' import { useRouter } from 'vue-router' import { useNav } from '@/utils/hooks/useNav' @@ -238,6 +237,7 @@ const mitt = inject('mitt') const router = useRouter() const nav = useNav() const store = useBaseStore() +const msgWrapper = ref() const data = reactive({ previewImg: new URL('../../../assets/img/poster/3.jpg', import.meta.url).href, videoCall: [], @@ -488,12 +488,16 @@ const data = reactive({ }) onMounted(() => { - $('img').on('load', scrollBottom) + msgWrapper.value + .querySelectorAll('img') + .forEach((item) => item.addEventListener('load', scrollBottom)) scrollBottom() }) onUnmounted(() => { - $('img').off('load', scrollBottom) + msgWrapper.value + .querySelectorAll('img') + .forEach((item) => item.removeEventListener('load', scrollBottom)) }) const isExpand = computed(() => { @@ -505,8 +509,6 @@ function handleClick() { data.showOption = false } -const msgWrapper = ref() - function scrollBottom() { nextTick(() => { let wrapper = msgWrapper.value diff --git a/src/utils/dom.ts b/src/utils/dom.ts index 49ef771..57fbc33 100644 --- a/src/utils/dom.ts +++ b/src/utils/dom.ts @@ -142,3 +142,48 @@ export default class Dom { return parseInt(val) } } + +export function _css(el, key, value?) { + const reg = /^\d+(px|pt|em|rem|vw|vh|%|rpx)$/i + if (value === undefined) { + let val = null + if ('getComputedStyle' in window) { + val = window.getComputedStyle(el, null)[key] + } else { + val = el.currentStyle[key] + } + return reg.test(val) ? parseFloat(val) : val + // return parseFloat(val) + } else { + if ( + [ + 'top', + 'left', + 'bottom', + 'right', + 'width', + 'height', + 'font-size', + 'margin', + 'padding' + ].includes(key) + ) { + if (!reg.test(value)) { + value += 'px' + } + } + // console.log(value) + if (key === 'transform') { + //直接设置不生效 + el.style.webkitTransform = + el.style.MsTransform = + el.style.msTransform = + el.style.MozTransform = + el.style.OTransform = + el.style.transform = + value + } else { + el.style[key] = value + } + } +} diff --git a/src/utils/slide.ts b/src/utils/slide.ts index 227e980..8449186 100644 --- a/src/utils/slide.ts +++ b/src/utils/slide.ts @@ -79,8 +79,7 @@ function canNext(state, isNext) { * @param state */ export function slideTouchStart(e, el, state) { - console.log('e', e, state.name) - return + // console.log('e', e, state.name) if (!checkEvent(e)) return Utils.$setCss(el, 'transition-duration', `0ms`) //记录起点坐标,用于move事件计算移动距离 @@ -245,7 +244,7 @@ export function slideReset(e, el, state, emit = null) { //根据当前index,获取slide偏移距离 //如果每个页面的宽度是相同均为100%,只需要当前index * wrapper的宽(高)度即可: -state.localIndex * state.wrapper.width -export function getSlideOffset(state, el) { +export function getSlideOffset(state: any, el: HTMLDivElement) { //横竖判断逻辑基本同理 if (state.type === SlideType.HORIZONTAL) { let widths = [] @@ -262,7 +261,10 @@ export function getSlideOffset(state, el) { return 0 // return -state.localIndex * state.wrapper.width } else { + //VERTICAL_INFINITE 列表只需要计算index * 高就行 if (state.type === SlideType.VERTICAL_INFINITE) { + return -state.localIndex * state.wrapper.height + } else { //同上 let heights = [] Array.from(el.children).map((v) => { @@ -271,9 +273,6 @@ export function getSlideOffset(state, el) { heights = heights.slice(0, state.localIndex) if (heights.length) return -heights.reduce((a, b) => a + b) return 0 - } else { - //VERTICAL_INFINITE 列表只需要计算index * 高就行 - return -state.localIndex * state.wrapper.height } } } diff --git a/vite.config.ts b/vite.config.ts index df599f3..e9eaf64 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -63,12 +63,6 @@ export default defineConfig(async () => { name: 'mockjs', var: 'Mock', path: 'https://lib.baomitu.com/Mock.js/1.0.1-beta3/mock-min.js' - }, - - { - name: 'jquery', - var: '$', - path: 'https://lib.baomitu.com/jquery/3.6.0/jquery.min.js' } ] })