Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
W
web-monitor
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
web-monitor
Commits
f01a1ad7
Unverified
Commit
f01a1ad7
authored
May 07, 2018
by
花裤衩
Committed by
GitHub
May 07, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor[ScrollBar]: use el-scrollbar (#90)
parent
57f011d2
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
70 additions
and
80 deletions
+70
-80
index.vue
src/components/ScrollBar/index.vue
+0
-57
app.js
src/store/modules/app.js
+1
-0
index.scss
src/styles/index.scss
+20
-1
sidebar.scss
src/styles/sidebar.scss
+31
-18
Layout.vue
src/views/layout/Layout.vue
+15
-0
index.vue
src/views/layout/components/Sidebar/index.vue
+3
-4
No files found.
src/components/ScrollBar/index.vue
deleted
100644 → 0
View file @
57f011d2
<
template
>
<div
class=
"scroll-container"
ref=
"scrollContainer"
@
wheel
.
prevent=
"handleScroll"
>
<div
class=
"scroll-wrapper"
ref=
"scrollWrapper"
:style=
"
{top: top + 'px'}">
<slot></slot>
</div>
</div>
</
template
>
<
script
>
const
delta
=
15
export
default
{
name
:
'scrollBar'
,
data
()
{
return
{
top
:
0
}
},
methods
:
{
handleScroll
(
e
)
{
const
eventDelta
=
e
.
wheelDelta
||
-
e
.
deltaY
*
3
const
$container
=
this
.
$refs
.
scrollContainer
const
$containerHeight
=
$container
.
offsetHeight
const
$wrapper
=
this
.
$refs
.
scrollWrapper
const
$wrapperHeight
=
$wrapper
.
offsetHeight
if
(
eventDelta
>
0
)
{
this
.
top
=
Math
.
min
(
0
,
this
.
top
+
eventDelta
)
}
else
{
if
(
$containerHeight
-
delta
<
$wrapperHeight
)
{
if
(
this
.
top
<
-
(
$wrapperHeight
-
$containerHeight
+
delta
))
{
this
.
top
=
this
.
top
}
else
{
this
.
top
=
Math
.
max
(
this
.
top
+
eventDelta
,
$containerHeight
-
$wrapperHeight
-
delta
)
}
}
else
{
this
.
top
=
0
}
}
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
@import
'../../styles/variables.scss'
;
.scroll-container
{
position
:
relative
;
width
:
100%
;
height
:
100%
;
background-color
:
$menuBg
;
.scroll-wrapper
{
position
:
absolute
;
width
:
100%
!
important
;
}
}
</
style
>
src/store/modules/app.js
View file @
f01a1ad7
...
...
@@ -16,6 +16,7 @@ const app = {
Cookies
.
set
(
'sidebarStatus'
,
0
)
}
state
.
sidebar
.
opened
=
!
state
.
sidebar
.
opened
state
.
sidebar
.
withoutAnimation
=
false
},
CLOSE_SIDEBAR
:
(
state
,
withoutAnimation
)
=>
{
Cookies
.
set
(
'sidebarStatus'
,
1
)
...
...
src/styles/index.scss
View file @
f01a1ad7
...
...
@@ -5,26 +5,45 @@
@import
'./sidebar.scss'
;
body
{
height
:
100%
;
-moz-osx-font-smoothing
:
grayscale
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
font-family
:
Helvetica
Neue
,
Helvetica
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Arial
,
sans-serif
;
}
label
{
font-weight
:
700
;
}
html
{
height
:
100%
;
box-sizing
:
border-box
;
}
#app
{
height
:
100%
;
}
*,
*
:before
,
*
:after
{
box-sizing
:
inherit
;
}
div
:focus
{
a
,
a
:focus
,
a
:hover
{
cursor
:
pointer
;
color
:
inherit
;
outline
:
none
;
text-decoration
:
none
;
}
div
:focus
{
outline
:
none
;
}
a
:focus
,
a
:active
{
outline
:
none
;
...
...
src/styles/sidebar.scss
View file @
f01a1ad7
#app
{
// 主体区域
.main-container
{
min-height
:
100%
;
transition
:
margin-left
.28s
;
margin-left
:
180px
;
}
// 侧边栏
// 侧边栏
.sidebar-container
{
.horizontal-collapse-transition
{
transition
:
0s
width
ease-in-out
,
0s
padding-left
ease-in-out
,
0s
padding-right
ease-in-out
;
}
transition
:
width
.28s
;
transition
:
width
0
.28s
;
width
:
180px
!
important
;
height
:
100%
;
position
:
fixed
;
...
...
@@ -22,19 +17,33 @@
left
:
0
;
z-index
:
1001
;
overflow
:
hidden
;
//reset element-ui css
.horizontal-collapse-transition
{
transition
:
0s
width
ease-in-out
,
0s
padding-left
ease-in-out
,
0s
padding-right
ease-in-out
;
}
.scrollbar-wrapper
{
height
:
calc
(
100%
+
15px
);
.el-scrollbar__view
{
height
:
100%
;
}
}
.is-horizontal
{
display
:
none
;
}
a
{
display
:
inline-block
;
width
:
100%
;
overflow
:
hidden
;
}
.svg-icon
{
margin-right
:
16px
;
}
.el-menu
{
border
:
none
;
height
:
100%
;
width
:
100%
!
important
;
}
}
.hideSidebar
{
.sidebar-container
{
width
:
36px
!
important
;
...
...
@@ -50,22 +59,28 @@
}
}
.el-submenu
{
overflow
:
hidden
;
&
>
.el-submenu__title
{
padding-left
:
10px
!
important
;
&
>
span
{
height
:
0
;
width
:
0
;
overflow
:
hidden
;
visibility
:
hidden
;
display
:
inline-block
;
}
.el-submenu__icon-arrow
{
display
:
none
;
}
}
}
.el-menu--collapse
{
.el-submenu
{
&
>
.el-submenu__title
{
&
>
span
{
height
:
0
;
width
:
0
;
overflow
:
hidden
;
visibility
:
hidden
;
display
:
inline-block
;
}
}
}
}
}
.sidebar-container
.nest-menu
.el-submenu
>
.el-submenu__title
,
.sidebar-container
.el-submenu
.el-menu-item
{
min-width
:
180px
!
important
;
...
...
@@ -84,7 +99,6 @@
margin-left
:
0px
;
}
.sidebar-container
{
top
:
50px
;
transition
:
transform
.28s
;
width
:
180px
!
important
;
}
...
...
@@ -95,7 +109,6 @@
}
}
}
.withoutAnimation
{
.main-container
,
.sidebar-container
{
...
...
src/views/layout/Layout.vue
View file @
f01a1ad7
<
template
>
<div
class=
"app-wrapper"
:class=
"classObj"
>
<div
v-if=
"device==='mobile'&&sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
></div>
<sidebar
class=
"sidebar-container"
></sidebar>
<div
class=
"main-container"
>
<navbar></navbar>
...
...
@@ -34,6 +35,11 @@ export default {
mobile
:
this
.
device
===
'mobile'
}
}
},
methods
:
{
handleClickOutside
()
{
this
.
$store
.
dispatch
(
'CloseSideBar'
,
{
withoutAnimation
:
false
})
}
}
}
</
script
>
...
...
@@ -46,4 +52,13 @@ export default {
height
:
100%
;
width
:
100%
;
}
.drawer-bg
{
background
:
#000
;
opacity
:
0
.3
;
width
:
100%
;
top
:
0
;
height
:
100%
;
position
:
absolute
;
z-index
:
999
;
}
</
style
>
src/views/layout/components/Sidebar/index.vue
View file @
f01a1ad7
<
template
>
<
scroll-bar
>
<
el-scrollbar
wrapClass=
"scrollbar-wrapper"
>
<el-menu
mode=
"vertical"
:show-timeout=
"200"
...
...
@@ -11,16 +11,15 @@
>
<sidebar-item
:routes=
"routes"
></sidebar-item>
</el-menu>
</
scroll-
bar>
</
el-scroll
bar>
</
template
>
<
script
>
import
{
mapGetters
}
from
'vuex'
import
SidebarItem
from
'./SidebarItem'
import
ScrollBar
from
'@/components/ScrollBar'
export
default
{
components
:
{
SidebarItem
,
ScrollBar
},
components
:
{
SidebarItem
},
computed
:
{
...
mapGetters
([
'sidebar'
...
...
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