Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
ebe7c51c
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
725
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ebe7c51c
编写于
9月 18, 2020
作者:
inkwalk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed: test match-media, MediaQueryObserver done
上级
75fb4abe
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
102 addition
and
231 deletion
+102
-231
packages/uni-cli-shared/components/uni-match-media.vue
packages/uni-cli-shared/components/uni-match-media.vue
+13
-15
packages/uni-cli-shared/lib/tags.js
packages/uni-cli-shared/lib/tags.js
+0
-1
packages/uni-migration/lib/mp-weixin/transform/template-transformer/transform/traverse.js
...ixin/transform/template-transformer/transform/traverse.js
+0
-1
packages/uni-template-compiler/lib/mp.js
packages/uni-template-compiler/lib/mp.js
+0
-1
packages/vue-cli-plugin-uni/packages/postcss/index.js
packages/vue-cli-plugin-uni/packages/postcss/index.js
+1
-2
src/core/helpers/tags.js
src/core/helpers/tags.js
+2
-3
src/core/view/bridge/subscribe/api/request-media-query-observer.js
...view/bridge/subscribe/api/request-media-query-observer.js
+2
-2
src/core/view/components/match-media/index.vue
src/core/view/components/match-media/index.vue
+0
-122
src/platforms/mp-alipay/runtime/api/index.js
src/platforms/mp-alipay/runtime/api/index.js
+1
-1
src/platforms/mp-baidu/runtime/api/index.js
src/platforms/mp-baidu/runtime/api/index.js
+1
-1
src/platforms/mp-qq/runtime/api/index.js
src/platforms/mp-qq/runtime/api/index.js
+1
-1
src/platforms/mp-toutiao/runtime/api/index.js
src/platforms/mp-toutiao/runtime/api/index.js
+1
-1
src/platforms/mp-weixin/helpers/create-media-query-observer.js
...latforms/mp-weixin/helpers/create-media-query-observer.js
+80
-80
未找到文件。
packages/uni-cli-shared/components/uni-match-media.vue
浏览文件 @
ebe7c51c
<
template
>
<view
v-show=
"matches"
>
<slot
/>
</view>
<view
v-show=
"matches"
>
<slot
/>
</view>
</
template
>
<
script
>
let
mediaQueryObserver
export
default
{
name
:
'
UniMatchMedia
'
,
props
:
{
...
...
@@ -42,13 +41,13 @@ export default {
data
()
{
return
{
matches
:
false
matches
:
true
,
}
},
mounted
()
{
const
mediaQ
=
uni
.
createMediaQueryObserver
(
)
mediaQ
.
observe
({
mediaQueryObserver
=
uni
.
createMediaQueryObserver
(
this
)
mediaQ
ueryObserver
.
observe
({
width
:
this
.
width
,
maxWidth
:
this
.
maxWidth
,
minWidth
:
this
.
minWidth
,
...
...
@@ -61,15 +60,14 @@ export default {
})
},
destroyed
()
{
mediaQueryObserver
.
disconnect
()
}
}
</
script
>
<
style
>
view
{
display
:
block
;
}
view
[
hidden
]
{
display
:
none
;
}
view
{
display
:
block
;
}
</
style
>
packages/uni-cli-shared/lib/tags.js
浏览文件 @
ebe7c51c
...
...
@@ -41,5 +41,4 @@ module.exports = {
video
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
],
view
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
],
'
web-view
'
:
[
'
app-plus
'
,
'
mp-weixin
'
],
'
match-media
'
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
]
}
packages/uni-migration/lib/mp-weixin/transform/template-transformer/transform/traverse.js
浏览文件 @
ebe7c51c
...
...
@@ -45,7 +45,6 @@ const TAGS = [
'
video
'
,
'
view
'
,
'
web-view
'
,
'
match-media
'
]
const
EVENTS
=
{
...
...
packages/uni-template-compiler/lib/mp.js
浏览文件 @
ebe7c51c
...
...
@@ -48,7 +48,6 @@ const tags = [
'
view
'
,
'
web-view
'
,
'
editor
'
,
'
match-media
'
]
const
baseCompiler
=
{
...
...
packages/vue-cli-plugin-uni/packages/postcss/index.js
浏览文件 @
ebe7c51c
...
...
@@ -136,8 +136,7 @@ if (process.env.UNI_USING_V3) {
'
textarea
'
,
'
video
'
,
'
view
'
,
'
web-view
'
,
'
match-media
'
'
web-view
'
]
const
BG_PROPS
=
[
...
...
src/core/helpers/tags.js
浏览文件 @
ebe7c51c
...
...
@@ -2,7 +2,7 @@ module.exports = [
'
uni-app
'
,
'
uni-layout
'
,
'
uni-content
'
,
'
uni-main
'
,
'
uni-main
'
,
'
uni-top-window
'
,
'
uni-left-window
'
,
'
uni-right-window
'
,
...
...
@@ -58,6 +58,5 @@ module.exports = [
'
uni-textarea
'
,
'
uni-video
'
,
'
uni-view
'
,
'
uni-web-view
'
,
'
uni-match-media
'
'
uni-web-view
'
]
src/core/view/bridge/subscribe/api/request-media-query-observer.js
浏览文件 @
ebe7c51c
...
...
@@ -41,7 +41,7 @@ export function requestMediaQueryObserver ({
throw
new
Error
(
`Not Found:Page[
${
pageId
}
]`
)
}
const
pageVm
=
page
.
$vm
//
const pageVm = page.$vm
// 创建一个媒体查询对象
const
mediaQueryObserver
=
mediaQueryObservers
[
reqId
]
=
window
.
matchMedia
(
handleMediaQueryStr
(
options
))
...
...
@@ -51,7 +51,7 @@ export function requestMediaQueryObserver ({
UniViewJSBridge
.
publishHandler
(
'
onRequestMediaQueryObserver
'
,
{
reqId
,
res
:
e
.
matches
},
page
Vm
.
$page
.
id
)
},
page
s
[
pages
.
length
-
1
]
.
$page
.
id
)
}
listener
(
mediaQueryObserver
)
// 监听前执行一次媒体查询
...
...
src/core/view/components/match-media/index.vue
已删除
100644 → 0
浏览文件 @
75fb4abe
<
template
>
<uni-match-media
v-show=
"MediaQueryListRes"
v-on=
"$listeners"
>
<slot
/>
</uni-match-media>
</
template
>
<
script
>
export
default
{
name
:
'
MatchMedia
'
,
props
:
{
width
:
{
type
:
[
Number
,
String
],
default
:
''
},
minWidth
:
{
type
:
[
Number
,
String
],
default
:
''
},
maxWidth
:
{
type
:
[
Number
,
String
],
default
:
''
},
height
:
{
type
:
[
Number
,
String
],
default
:
''
},
minHeight
:
{
type
:
[
Number
,
String
],
default
:
''
},
maxHeight
:
{
type
:
[
Number
,
String
],
default
:
''
},
orientation
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
MediaQueryListRes
:
true
,
mql
:
null
}
},
computed
:
{
handleMediaQueryStr
()
{
let
mediaQueryStr
=
[]
const
{
$props
}
=
this
const
propsMenu
=
[
'
width
'
,
'
minWidth
'
,
'
maxWidth
'
,
'
height
'
,
'
minHeight
'
,
'
maxHeight
'
,
'
orientation
'
]
for
(
const
item
of
propsMenu
)
{
if
(
item
!==
'
orientation
'
&&
$props
[
item
]
!==
''
&&
Number
(
$props
[
item
])
>=
0
)
{
mediaQueryStr
.
push
(
`(
${
this
.
humpToLine
(
item
)}
:
${
Number
(
$props
[
item
])}
px)`
)
}
if
(
item
===
'
orientation
'
&&
$props
[
item
])
{
mediaQueryStr
.
push
(
`(
${
this
.
humpToLine
(
item
)}
:
${
$props
[
item
]}
)`
)
}
}
mediaQueryStr
=
mediaQueryStr
.
join
(
'
and
'
)
return
mediaQueryStr
}
},
watch
:
{
handleMediaQueryStr
:
'
replaceListener
'
},
mounted
()
{
this
.
mql
=
window
.
matchMedia
(
this
.
handleMediaQueryStr
)
this
.
handleMediaQuery
(
this
.
mql
)
this
.
mql
.
addListener
(
this
.
handleMediaQuery
)
},
beforeDestroy
()
{
this
.
mql
.
removeListener
(
this
.
handleMediaQuery
)
},
methods
:
{
handleMediaQuery
(
e
)
{
if
(
e
.
matches
)
{
this
.
MediaQueryListRes
=
true
}
else
{
this
.
MediaQueryListRes
=
false
}
},
replaceListener
()
{
this
.
mql
.
removeListener
(
this
.
handleMediaQuery
)
this
.
mql
=
window
.
matchMedia
(
this
.
handleMediaQueryStr
)
this
.
handleMediaQuery
(
this
.
mql
)
this
.
mql
.
addListener
(
this
.
handleMediaQuery
)
},
humpToLine
(
name
)
{
return
name
.
replace
(
/
([
A-Z
])
/g
,
'
-$1
'
).
toLowerCase
()
}
}
}
</
script
>
<
style
>
uni-match-media
{
display
:
block
;
}
uni-match-media
[
hidden
]
{
display
:
none
;
}
</
style
>
src/platforms/mp-alipay/runtime/api/index.js
浏览文件 @
ebe7c51c
...
...
@@ -106,4 +106,4 @@ export function createIntersectionObserver (component, options) {
return
my
.
createIntersectionObserver
(
options
)
}
export
{
createMediaQueryObserver
}
\ No newline at end of file
export
{
createMediaQueryObserver
}
src/platforms/mp-baidu/runtime/api/index.js
浏览文件 @
ebe7c51c
...
...
@@ -18,4 +18,4 @@ export function requestPayment (params) {
}
}
export
{
createMediaQueryObserver
}
\ No newline at end of file
export
{
createMediaQueryObserver
}
src/platforms/mp-qq/runtime/api/index.js
浏览文件 @
ebe7c51c
import
createMediaQueryObserver
from
'
../../../mp-weixin/helpers/create-media-query-observer
'
export
{
createMediaQueryObserver
}
\ No newline at end of file
export
{
createMediaQueryObserver
}
src/platforms/mp-toutiao/runtime/api/index.js
浏览文件 @
ebe7c51c
import
createMediaQueryObserver
from
'
../../../mp-weixin/helpers/create-media-query-observer
'
export
{
createMediaQueryObserver
}
\ No newline at end of file
export
{
createMediaQueryObserver
}
src/platforms/mp-weixin/helpers/create-media-query-observer.js
浏览文件 @
ebe7c51c
export
default
function
createMediaQueryObserver
()
{
const
mediaQueryObserver
=
{}
const
{
windowWidth
,
windowHeight
}
=
__GLOBAL__
.
getSystemInfoSync
()
const
orientation
=
windowWidth
<
windowHeight
?
'
portrait
'
:
'
landscape
'
mediaQueryObserver
.
observe
=
(
options
,
callback
)
=>
{
let
matches
=
false
for
(
const
item
in
options
)
{
const
itemValue
=
item
===
'
orientation
'
?
options
[
item
]
:
Number
(
options
[
item
])
if
(
options
[
item
]
!==
''
)
{
if
(
item
===
'
width
'
){
if
(
itemValue
==
windowWidth
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
const
mediaQueryObserver
=
{}
const
{
windowWidth
,
windowHeight
}
=
__GLOBAL__
.
getSystemInfoSync
()
const
orientation
=
windowWidth
<
windowHeight
?
'
portrait
'
:
'
landscape
'
mediaQueryObserver
.
observe
=
(
options
,
callback
)
=>
{
let
matches
=
false
for
(
const
item
in
options
)
{
const
itemValue
=
item
===
'
orientation
'
?
options
[
item
]
:
Number
(
options
[
item
])
if
(
options
[
item
]
!==
''
)
{
if
(
item
===
'
width
'
)
{
if
(
itemValue
===
windowWidth
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
minWidth
'
){
if
(
windowWidth
>=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
minWidth
'
)
{
if
(
windowWidth
>=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
maxWidth
'
){
if
(
windowWidth
<=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
maxWidth
'
)
{
if
(
windowWidth
<=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
height
'
){
if
(
itemValue
==
windowHeight
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
height
'
)
{
if
(
itemValue
===
windowHeight
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
minHeight
'
){
if
(
windowHeight
>=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
minHeight
'
)
{
if
(
windowHeight
>=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
maxHeight
'
){
if
(
windowHeight
<=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
maxHeight
'
)
{
if
(
windowHeight
<=
itemValue
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
if
(
item
===
'
orientation
'
){
if
(
options
[
item
]
===
orientation
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
if
(
item
===
'
orientation
'
)
{
if
(
options
[
item
]
===
orientation
)
{
matches
=
true
}
else
{
matches
=
false
callback
(
matches
)
return
matches
}
}
}
callback
(
matches
)
return
matches
}
mediaQueryObserver
.
disconnect
=
()
=>
{
}
return
mediaQueryObserver
}
\ No newline at end of file
callback
(
matches
)
return
matches
}
mediaQueryObserver
.
disconnect
=
()
=>
{
}
return
mediaQueryObserver
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录