Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
office-web-js
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinjianhui
office-web-js
Commits
0772a0b2
Commit
0772a0b2
authored
Jan 13, 2023
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 回到顶部按钮
parent
b404494f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
1 deletions
+95
-1
src/components/ToTopButton.vue
+85
-0
src/styles/icon.scss
+6
-0
src/views/Home/HomePageWrapper.vue
+4
-1
No files found.
src/components/ToTopButton.vue
0 → 100644
View file @
0772a0b2
<
template
>
<Transition
name=
"to-top"
>
<a
v-show=
"showing"
href=
"javascript:;"
class=
"to-top icon-top-gray"
@
click=
"toTop"
></a>
</Transition>
</
template
>
<
script
>
export
default
{
name
:
'ToTopButton'
,
props
:
{
threshold
:
{
type
:
[
Number
,
String
],
default
:
'20%'
,
},
},
data
()
{
return
{
showing
:
false
,
}
},
computed
:
{
thresholdNumber
()
{
const
t
=
this
.
threshold
if
(
typeof
t
===
'number'
)
return
t
if
(
typeof
t
===
'string'
)
{
let
m
if
((
m
=
/^
(\d
+
)
%$/
.
exec
(
t
)))
{
return
window
.
innerHeight
*
(
+
m
[
1
]
/
100
)
}
}
return
0
},
},
created
()
{
window
.
addEventListener
(
'resize'
,
this
.
onScroll
)
window
.
addEventListener
(
'scroll'
,
this
.
onScroll
)
this
.
onScroll
()
},
beforeDestroy
()
{
window
.
removeEventListener
(
'scroll'
,
this
.
onScroll
)
window
.
removeEventListener
(
'resize'
,
this
.
onScroll
)
},
methods
:
{
onScroll
()
{
const
top
=
window
.
scrollY
this
.
showing
=
top
>=
this
.
thresholdNumber
},
toTop
()
{
window
.
scrollTo
({
top
:
0
,
behavior
:
'smooth'
,
})
},
},
}
</
script
>
<
style
lang=
"scss"
>
.to-top
{
position
:
fixed
;
z-index
:
9999
;
right
:
10vw
;
bottom
:
10vh
;
display
:
block
;
width
:
50px
;
height
:
50px
;
opacity
:
0.8
;
}
.to-top-enter-active
,
.to-top-leave-active
{
transition
:
0.3s
;
background-repeat
:
no-repeat
;
}
.to-top-enter
,
.to-top-leave-to
{
opacity
:
0
;
transform
:
translateY
(
50px
);
//
background-position-y
:
50px
;
}
</
style
>
src/styles/icon.scss
View file @
0772a0b2
...
...
@@ -11,4 +11,9 @@
.icon-thumb-gold
{
background-size
:
100%
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAbCAYAAABiFp9rAAAAAXNSR0IArs4c6QAAAexJREFUSA1jZCARPJ9kq/Xnz98p/xkZrIBa3zEyMCySkZauYwxb/QufUSz4JNHlns305fr97e0eBob/kgz/wbKSQKr8ydOnIE4FunpkPhMyhxD77/d3kQz//0uyCSsySEdMZRBxzAdrAVoWR0gvSRYBLQEbyK1qz8DEysnAKaMPMR9oOdUsejbFSh4YZLYMzCwMXPImhMzFkCfaR/9+M8T8/8/AyCmtz8DExoVhECEBoi0CxkMsyDAuJUtCZmKVJ8qixxNszP///6/OxMbNwCmth9UgQoIELXreZ63N8P/vLJBBXMpWDIxMJOUIuP0sj/osgaGCG/xm+AdMAwwMzFyCDHw63jgVopjDyPgcqOkMy3+mbqmio4dBmgj6iImdh4FLwZxBzKOKgZmDD6dFKBKg5P6fwfcvw78DT/qsq0ByjDCXyMbOQ1H7eHESmI8ujqIIB+fvtw8MX+8fY/h4YQMD478//5gZmBwI+giHWXiFmbkEGPi0vRj4DQJAoc70h/FfKU0sgrmCWxFU7oIAowlNLQL5DAyAcUZTiyC2QMhRi5BDgyT2aNCRFFzIimkadKCiCAyAhSxNLQKVdxAALMmhLKpSKIUqA8M/ZmB1AS+9qWoT1DBg4/IfIwNTrUzR0Taa+IgBWvGBfAKr+AAgLYr8RyyZ+gAAAABJRU5ErkJggg==)
;
}
.icon-top-gray
{
background-size
:
100%
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABOCAYAAACOqiAdAAAAAXNSR0IArs4c6QAABB1JREFUeAHtmv1LU2EUx91aIoIrc1NrRpsz86XlmLGZKCKCivoH+kcI/tAviiI6zU0cw60yM6emaTpr64XAci+dM3pEBnL3nG33XuM8IM99Od/nPudzvvd1GiYnJ19WcJMmYJRWsCBHgMERjcDgGByRAFHGjmNwRAJEGTuOwREJEGXsOAZHJECUseMYHJEAUcaOY3BEAkQZO47BEQkQZew4BkckQJSZiDpFWX9//5OWlhanwWDQ1NXZbDazs7MTW15efq84aYmAsiXldDodWkNDDjgHnIsEk4JCywYuFovtYbULmkUZg3AOOJdSH8LAv3LRkJbNcbTp3BwVgyPWisExOCIBoky3jmtvb29obm6+R8yr7LKyPQAXM/ORkZEum832EMewWq1v1tbW9osZrxxa3TnO5/M5BTRMuLOzs6Otra2hHMkXM6auwPX19bUCqPa8hIy9vb3dLpfLlrdd01XdgBsYGOhohXYNDaPX63V7PJ5H1+xXfbMuwA0NDbngfbJZZH9ycnIslhOJxFdchlcng9vtduGpLPZp2WsKzmg0VgwPD3c9goYQ4IU8Gw6HXx8fH38RUPb39492d3djYh1PZfzyIta16jUDB9AMo6OjnqamptzdEwBk19fXIxsbGx/zYSwuLr7b2tq6/Cz0GNrg4ODT/Dg11zUBZzKZjGNjY88bGxsf/Es2EwwGw9Fo9NN1ya+urn6A/W/RlRjjcDjs6FZ0rRZN9aNWVlbeGh8f99bX1+ceMeDalV5ZWQltbm5+VgIQCoX24C8KcTl46FZwbTcUwqCkLfV+VcFVVVWZAJqvrq7OgolkMpn00tLS+vb2drzQxCKRyCG6E+WoAdfeB/d6oSCq5qLawaqrq29PTEz01NbW5l6j0un0xcLCQhAu/Jc3gkLhoTv9fn8IwaPGYrFYoSA9WJhCxyg2ThVweE2DxF6Yzea7OOFUKvVnfn4+eHBwkKQmAL8jxOGmsQYFSOEYWBA8hlqnrSrg4EJuqampMWOCFxcXv+fm5gJHR0ffcb2YBo8qCShAAAuB49yBZrfbrcWMWahWFWsfHh4mkslk7kEWbgTRs7OzX4VOUCkOCzA7OxuAZ7tncKOpgHWyi5WOdXW/KuDOz89T09PTgasHLuXy6enpz6mpqVelHFNpLFVOVaVJ3MT9DI5YNQbH4IgEiDJ2HIMjEiDK2HEMjkiAKGPHMTgiAaKMHcfgiASIMnYcgyMSIMrYcQyOSIAoY8f9T+Di8fg3kc/VZbFND70qn85lE4X/HfkxMzPjRx0uy+rViNclOD0DE0Xha5wgIdkzOElgIpzBCRKSPYOTBCbCGZwgIdkzOElgIpzBCRKSPYOTBCbCGZwgIdkzOElgIpzBCRKSPYOTBCbCGZwgIdkzOElgIpzBCRKS/V/i3SHk3MapJwAAAABJRU5ErkJggg==)
;
}
\ No newline at end of file
src/views/Home/HomePageWrapper.vue
View file @
0772a0b2
...
...
@@ -5,15 +5,18 @@
<router-view
/>
</div>
<HomePageFooter
/>
<ToTopButton
/>
</div>
</
template
>
<
script
>
import
HomePageHeader
from
'@/components/HomePageHeader.vue'
import
HomePageFooter
from
'@/components/HomePageFooter.vue'
import
ToTopButton
from
'@/components/ToTopButton.vue'
export
default
{
name
:
'HomePage'
,
components
:
{
HomePageHeader
,
HomePageFooter
},
components
:
{
HomePageHeader
,
HomePageFooter
,
ToTopButton
},
beforeRouteUpdate
(
to
,
from
,
next
)
{
window
.
scrollTo
({
top
:
0
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment