Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
陌~上花开
VueJS
提交
91731d91
V
VueJS
项目概览
陌~上花开
/
VueJS
与 Fork 源项目一致
Fork自
inscode / VueJS
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VueJS
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
91731d91
编写于
5月 30, 2023
作者:
6
6401beb03f7e77205359be50
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto Commit
上级
a5450115
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
136 addition
and
35 deletion
+136
-35
src/App.vue
src/App.vue
+136
-35
未找到文件。
src/App.vue
浏览文件 @
91731d91
<
template
>
<div
class=
"drag"
>
<img
draggable=
"true"
@
click=
"open"
class=
"drag-box"
src=
"https://img2.baidu.com/it/u=567357414,4240886412&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1685466000&t=8f77d03e5be750f97c2c3aa6c266a01a"
alt=
""
>
</div>
</
template
>
<
script
setup
>
import
HelloWorld
from
'
./components/HelloWorld.vue
'
import
TheWelcome
from
'
./components/TheWelcome.vue
'
</
script
>
import
{
ref
,
nextTick
}
from
"
vue
"
<
template
>
<header>
<img
alt=
"Vue logo"
class=
"logo"
src=
"./assets/logo.svg"
width=
"125"
height=
"125"
/>
nextTick
(()
=>
{
if
(
isWebPlatform
())
initDrag
()
else
initDrag1
()
})
/*
注意事项:
1. 父元素的宽高、元素在其内内移动。
2. 拖拽和点击事件的冲突解决、使用时间戳
3. 图片拖拽时候不可拖拽、阻止默认事件
* */
<div
class=
"wrapper"
>
<HelloWorld
msg=
"You did it!"
/>
</div>
</header>
//pc端
let
time
=
0
const
initDrag
=
()
=>
{
const
dragBox
=
document
.
getElementsByClassName
(
'
drag-box
'
)[
0
]
const
dragParent
=
dragBox
.
offsetParent
<main>
<TheWelcome
/>
</main>
</
template
>
let
maxX
=
dragParent
.
offsetWidth
-
dragBox
.
offsetWidth
let
maxY
=
dragParent
.
offsetHeight
-
dragBox
.
offsetHeight
<
style
scoped
>
header
{
line-height
:
1.5
;
dragBox
.
onmousedown
=
(
e
)
=>
{
let
x
=
''
let
y
=
''
e
.
preventDefault
()
//阻止默认事件、如图片的禁止拖拽
let
disx
=
e
.
pageX
-
dragBox
.
offsetLeft
let
disy
=
e
.
pageY
-
dragBox
.
offsetTop
dragBox
.
onmousemove
=
(
e
)
=>
{
x
=
e
.
pageX
-
disx
y
=
e
.
pageY
-
disy
time
=
new
Date
()
//开始移动的时间
if
(
x
<
0
)
{
x
=
0
}
else
if
(
x
>=
maxX
)
{
x
=
maxX
}
if
(
y
<
0
)
{
y
=
0
}
else
if
(
y
>=
maxY
)
{
y
=
maxY
}
dragBox
.
style
.
left
=
x
+
'
px
'
dragBox
.
style
.
top
=
y
+
'
px
'
}
}
//清除
dragBox
.
onmouseleave
=
()
=>
{
dragBox
.
onmousemove
=
null
}
dragBox
.
onmouseup
=
()
=>
{
dragBox
.
onmousemove
=
null
}
}
.logo
{
display
:
block
;
margin
:
0
auto
2rem
;
}
//移动端
const
initDrag1
=
()
=>
{
const
dragBox
=
document
.
getElementsByClassName
(
'
drag-box
'
)[
0
]
const
dragParent
=
dragBox
.
offsetParent
//父元素
@media
(
min-width
:
1024px
)
{
header
{
display
:
flex
;
place-items
:
center
;
padding-right
:
calc
(
var
(
--section-gap
)
/
2
);
}
let
maxX
=
dragParent
.
offsetWidth
-
dragBox
.
offsetWidth
let
maxY
=
dragParent
.
offsetHeight
-
dragBox
.
offsetHeight
.logo
{
margin
:
0
2rem
0
0
;
dragBox
.
ontouchstart
=
(
e
)
=>
{
let
x
=
''
let
y
=
''
let
disx
=
e
.
touches
[
0
].
pageX
-
dragBox
.
offsetLeft
let
disy
=
e
.
touches
[
0
].
pageY
-
dragBox
.
offsetTop
dragBox
.
ontouchmove
=
(
e
)
=>
{
x
=
e
.
touches
[
0
].
pageX
-
disx
y
=
e
.
touches
[
0
].
pageY
-
disy
if
(
x
<
0
)
{
x
=
0
}
else
if
(
x
>=
maxX
)
{
x
=
maxX
}
if
(
y
<
0
)
{
y
=
0
}
else
if
(
y
>=
maxY
)
{
y
=
maxY
}
dragBox
.
style
.
left
=
x
+
'
px
'
dragBox
.
style
.
top
=
y
+
'
px
'
}
dragBox
.
ontouchend
=
(
e
)
=>
{
dragBox
.
ontouchmove
=
null
}
}
}
const
open
=
()
=>
{
/*
* 解决pc端拖拽和点击事件的冲突
* */
let
curr
=
0
if
(
time
)
{
let
now
=
new
Date
().
getTime
()
let
dragTime
=
(
new
Date
(
time
)).
getTime
()
curr
=
now
-
dragTime
}
time
=
0
if
(
curr
<=
0
)
alert
(
'
web端点击
'
)
console
.
log
(
curr
,
'
curr是
'
)
}
const
isWebPlatform
=
()
=>
{
let
userAgentInfo
=
navigator
.
userAgent
let
Agents
=
[
"
Android
"
,
"
iPhone
"
,
"
SymbianOS
"
,
"
Windows Phone
"
,
"
iPad
"
,
"
iPod
"
]
let
flag
=
true
;
for
(
let
v
=
0
;
v
<
Agents
.
length
;
v
++
)
{
if
(
userAgentInfo
.
indexOf
(
Agents
[
v
])
>
0
)
{
flag
=
false
break
}
header
.wrapper
{
display
:
flex
;
place-items
:
flex-start
;
flex-wrap
:
wrap
;
}
return
flag
}
</
script
>
<
style
scoped
>
.drag
{
width
:
50%
;
height
:
50vh
;
border
:
solid
1px
pink
;
margin
:
0
auto
;
position
:
relative
;
}
.drag-box
{
width
:
50px
;
height
:
50px
;
border
:
solid
1px
#2c3e50
;
border-radius
:
20px
;
cursor
:
move
;
position
:
absolute
;
}
</
style
>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录