refactor:router&&sidemenu
parent
29ec7f8a18
commit
86096e4eab
@ -0,0 +1,56 @@
|
|||||||
|
<template>
|
||||||
|
<div class='scroll-container' ref='scrollContainer' @mousewheel="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) {
|
||||||
|
e.preventDefault()
|
||||||
|
const $container = this.$refs.scrollContainer
|
||||||
|
const $containerHeight = $container.offsetHeight
|
||||||
|
const $wrapper = this.$refs.scrollWrapper
|
||||||
|
const $wrapperHeight = $wrapper.offsetHeight
|
||||||
|
if (e.wheelDelta > 0) {
|
||||||
|
this.top = Math.min(0, this.top + e.wheelDelta)
|
||||||
|
} else {
|
||||||
|
if ($containerHeight - delta < $wrapperHeight) {
|
||||||
|
if (this.top < -($wrapperHeight - $containerHeight + delta)) {
|
||||||
|
this.top = this.top
|
||||||
|
} else {
|
||||||
|
this.top = Math.max(this.top + e.wheelDelta, $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>
|
@ -0,0 +1,100 @@
|
|||||||
|
#app {
|
||||||
|
// 主体区域
|
||||||
|
.main-container {
|
||||||
|
min-height: 100%;
|
||||||
|
transition: margin-left 0.28s;
|
||||||
|
margin-left: 180px;
|
||||||
|
} // 侧边栏
|
||||||
|
.sidebar-container {
|
||||||
|
transition: width 0.28s;
|
||||||
|
width: 180px!important;
|
||||||
|
height: 100%;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1001;
|
||||||
|
a {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.svg-icon {
|
||||||
|
margin-right: 16px;
|
||||||
|
}
|
||||||
|
.el-menu {
|
||||||
|
border: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hideSidebar {
|
||||||
|
.sidebar-container,.sidebar-container .el-menu {
|
||||||
|
width: 36px!important;
|
||||||
|
// overflow: inherit;
|
||||||
|
}
|
||||||
|
.main-container {
|
||||||
|
margin-left: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hideSidebar {
|
||||||
|
.submenu-title-noDropdown {
|
||||||
|
padding-left: 10px!important;
|
||||||
|
position: relative;
|
||||||
|
span {
|
||||||
|
height: 0;
|
||||||
|
width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
visibility: hidden;
|
||||||
|
transition: opacity .3s cubic-bezier(.55, 0, .1, 1);
|
||||||
|
opacity: 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
border-radius: 3px;
|
||||||
|
z-index: 1002;
|
||||||
|
width: 140px;
|
||||||
|
height: 56px;
|
||||||
|
visibility: visible;
|
||||||
|
position: absolute;
|
||||||
|
right: -145px;
|
||||||
|
text-align: left;
|
||||||
|
text-indent: 20px;
|
||||||
|
top: 0px;
|
||||||
|
background-color: $subMenuBg!important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-submenu {
|
||||||
|
&>.el-submenu__title {
|
||||||
|
padding-left: 10px!important;
|
||||||
|
&>span {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.el-submenu__icon-arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.nest-menu {
|
||||||
|
.el-submenu__icon-arrow {
|
||||||
|
display: block!important;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: inline-block!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.nest-menu .el-submenu>.el-submenu__title,
|
||||||
|
.el-submenu .el-menu-item {
|
||||||
|
min-width: 180px!important;
|
||||||
|
background-color: $subMenuBg!important;
|
||||||
|
&:hover {
|
||||||
|
background-color: $menuHover!important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-menu--collapse .el-menu .el-submenu{
|
||||||
|
min-width: 180px!important;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
//sidebar
|
||||||
|
$menuBg:#304156;
|
||||||
|
$subMenuBg:#1f2d3d;
|
||||||
|
$menuHover:#001528;
|
Loading…
Reference in New Issue