Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
76d7230a
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
730
Star
38707
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看板
提交
76d7230a
编写于
8月 25, 2020
作者:
inkwalk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add: match-media component
上级
a4e1dbb5
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
131 addition
and
13 deletion
+131
-13
packages/uni-cli-shared/lib/tags.js
packages/uni-cli-shared/lib/tags.js
+2
-1
packages/uni-migration/lib/mp-weixin/transform/template-transformer/transform/traverse.js
...ixin/transform/template-transformer/transform/traverse.js
+2
-1
packages/uni-template-compiler/lib/mp.js
packages/uni-template-compiler/lib/mp.js
+3
-2
packages/vue-cli-plugin-uni/packages/postcss/index.js
packages/vue-cli-plugin-uni/packages/postcss/index.js
+2
-1
src/core/helpers/tags.js
src/core/helpers/tags.js
+9
-8
src/core/view/components/match-media/index.vue
src/core/view/components/match-media/index.vue
+113
-0
未找到文件。
packages/uni-cli-shared/lib/tags.js
浏览文件 @
76d7230a
...
...
@@ -40,5 +40,6 @@ module.exports = {
textarea
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
],
video
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
],
view
:
[
'
app-plus
'
,
'
mp-weixin
'
,
'
h5
'
],
'
web-view
'
:
[
'
app-plus
'
,
'
mp-weixin
'
]
'
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
浏览文件 @
76d7230a
...
...
@@ -44,7 +44,8 @@ const TAGS = [
'
textarea
'
,
'
video
'
,
'
view
'
,
'
web-view
'
'
web-view
'
,
'
match-media
'
]
const
EVENTS
=
{
...
...
packages/uni-template-compiler/lib/mp.js
浏览文件 @
76d7230a
...
...
@@ -47,7 +47,8 @@ const tags = [
'
video
'
,
'
view
'
,
'
web-view
'
,
'
editor
'
'
editor
'
,
'
match-media
'
]
const
baseCompiler
=
{
...
...
@@ -127,4 +128,4 @@ module.exports = function getCompilerOptions (platform) {
baseCompiler
,
require
(
id
+
'
/lib/uni.compiler.js
'
)
)
}
}
packages/vue-cli-plugin-uni/packages/postcss/index.js
浏览文件 @
76d7230a
...
...
@@ -136,7 +136,8 @@ if (process.env.UNI_USING_V3) {
'
textarea
'
,
'
video
'
,
'
view
'
,
'
web-view
'
'
web-view
'
,
'
match-media
'
]
const
BG_PROPS
=
[
...
...
src/core/helpers/tags.js
浏览文件 @
76d7230a
module
.
exports
=
[
'
uni-app
'
,
'
uni-layout
'
,
'
uni-content
'
,
'
uni-main
'
,
'
uni-left-window
'
,
'
uni-right-window
'
,
'
uni-app
'
,
'
uni-layout
'
,
'
uni-content
'
,
'
uni-main
'
,
'
uni-left-window
'
,
'
uni-right-window
'
,
'
uni-tabbar
'
,
'
uni-page
'
,
'
uni-page-head
'
,
...
...
@@ -14,7 +14,7 @@ module.exports = [
'
uni-actionsheet
'
,
'
uni-modal
'
,
'
uni-toast
'
,
'
uni-resize-sensor
'
,
'
uni-resize-sensor
'
,
'
uni-shadow-root
'
,
'
uni-ad
'
,
...
...
@@ -57,5 +57,6 @@ module.exports = [
'
uni-textarea
'
,
'
uni-video
'
,
'
uni-view
'
,
'
uni-web-view
'
'
uni-web-view
'
,
'
uni-match-media
'
]
src/core/view/components/match-media/index.vue
0 → 100644
浏览文件 @
76d7230a
<
template
>
<uni-match-media
v-show=
"MediaQueryListRes"
v-on=
"$listeners"
>
<slot
/>
</uni-match-media>
</
template
>
<
script
>
export
default
{
name
:
'
MatchMedia
'
,
props
:
{
width
:
{
type
:
Number
,
default
:
0
},
minWidth
:
{
type
:
Number
,
default
:
0
},
maxWidth
:
{
type
:
Number
,
default
:
0
},
height
:
{
default
:
0
,
type
:
Number
},
minHeight
:
{
type
:
Number
,
default
:
0
},
maxHeight
:
{
type
:
Number
,
default
:
0
},
orientation
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
MediaQueryListRes
:
true
,
mql
:
null
}
},
computed
:
{
handleMediaQueryStr
()
{
let
mediaQueryStr
=
[]
const
{
$props
}
=
this
for
(
const
item
in
$props
)
{
if
(
item
!==
(
'
orientation
'
||
'
animations
'
)
&&
$props
[
item
]
>
0
)
{
mediaQueryStr
.
push
(
`(
${
this
.
humpToLine
(
item
)}
:
${
this
[
item
]}
px)`
)
}
if
(
item
===
'
orientation
'
&&
$props
[
item
])
{
mediaQueryStr
.
push
(
`(
${
this
.
humpToLine
(
item
)}
:
${
this
[
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
}
},
humpToLine
(
name
)
{
return
name
.
replace
(
/
([
A-Z
])
/g
,
'
-$1
'
).
toLowerCase
()
},
replaceListener
()
{
this
.
mql
.
removeListener
(
this
.
handleMediaQuery
)
this
.
mql
=
window
.
matchMedia
(
this
.
handleMediaQueryStr
)
this
.
handleMediaQuery
(
this
.
mql
)
this
.
mql
.
addListener
(
this
.
handleMediaQuery
)
}
}
}
</
script
>
<
style
>
uni-match-media
{
display
:
block
;
}
uni-match-media
[
hidden
]
{
display
:
none
;
}
</
style
>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录