Merge remote-tracking branch 'origin/develop'

Former-commit-id: 40de5670086f919d0fc6f1ab97531500a0ae9c04 [formerly 40de5670086f919d0fc6f1ab97531500a0ae9c04 [formerly 40de5670086f919d0fc6f1ab97531500a0ae9c04 [formerly 40de5670086f919d0fc6f1ab97531500a0ae9c04 [formerly f59557b824aee23363b68b37a6271152151a7b74 [formerly 52d66a3731c11c06f0cb53fa93c5a927e1bf3fdd]]]]]
Former-commit-id: 58d9709804df248d44178837cd01290dfffc0441
Former-commit-id: 4af42d6d13c10a32f1542ebf26631a092f397f76
Former-commit-id: b86494992d15f3eb485dc8c8e88f3c3260d8b9d4 [formerly 1a508b211a083fe2c753c8e8774033b4e48eac43]
Former-commit-id: 2b8f6818085483e1a7b3f07de0773c280eb4319f
Former-commit-id: a427ada0c713ab562bdf397aff6fa8ee178ef02f
Former-commit-id: 41d23f5599f22a8aad518b2fad555269d3cab2a2
Former-commit-id: f704e294928a177d1fce240487d0466c86f18949
Former-commit-id: 1b81075c354dca83e9a9726d57704d234ae1dec0
This commit is contained in:
liyang
2018-09-19 15:18:38 +08:00
4 changed files with 90 additions and 14 deletions

View File

@@ -1 +1 @@
134f6af0a62409abc3a59f2e23a1a00817f44b4c
35339c248c50cb38d1ef2787c8bd7b86f24b4e30

View File

@@ -1 +1 @@
5e28075542c22533bf13f61de9a2eaf52bf18157
12a8c966ed20571d09f5e912f7a83bc86264bf83

View File

@@ -1,10 +1,22 @@
<template>
<el-menu mode="horizontal" :default-active="active" @select="handleMenuSelect">
<template v-for="(menu, menuIndex) in header">
<d2-layout-header-aside-menu-item v-if="menu.children === undefined" :menu="menu" :key="menuIndex"/>
<d2-layout-header-aside-menu-sub v-else :menu="menu" :key="menuIndex"/>
</template>
</el-menu>
<div class="d2-theme-header-menu" ref="page" :class="{'is-scrollable': isScroll}" flex="cross:center">
<div class="d2-theme-header-menu__content" ref="content" flex-box="1" flex>
<div class="d2-theme-header-menu__scroll" ref="scroll" flex-box="0" :style="'transform: translateX(' + currentTranslateX + 'px);'">
<el-menu mode="horizontal" :default-active="active" @select="handleMenuSelect">
<template v-for="(menu, menuIndex) in header">
<d2-layout-header-aside-menu-item v-if="menu.children === undefined" :menu="menu" :key="menuIndex"/>
<d2-layout-header-aside-menu-sub v-else :menu="menu" :key="menuIndex"/>
</template>
</el-menu>
</div>
</div>
<div v-if="isScroll" class="d2-theme-header-menu__prev" flex-box="0" @click="scroll('left')" flex="main:center cross:center">
<i class="el-icon-arrow-left"></i>
</div>
<div v-if="isScroll" class="d2-theme-header-menu__next" flex-box="0" @click="scroll('right')" flex="cross:center">
<i class="el-icon-arrow-right"></i>
</div>
</div>
</template>
<script>
@@ -28,7 +40,11 @@ export default {
},
data () {
return {
active: ''
active: '',
isScroll: false,
scrollWidth: 0,
contentWidth: 0,
currentTranslateX: 0
}
},
watch: {
@@ -38,6 +54,65 @@ export default {
},
immediate: true
}
},
methods: {
scroll (direction) {
if (direction === 'left') {
// 向右滚动
this.currentTranslateX = 0
} else {
// 向左滚动
if (this.contentWidth * 2 - this.currentTranslateX <= this.scrollWidth) {
this.currentTranslateX -= this.contentWidth
} else {
this.currentTranslateX = this.contentWidth - this.scrollWidth
}
}
}
},
mounted () {
const checkScroll = () => {
let contentWidth = this.$refs.content.clientWidth
let scrollWidth = this.$refs.scroll.clientWidth
if (this.isScroll) {
// 页面依旧允许滚动的情况需要更新width
if (this.contentWidth - this.scrollWidth === this.currentTranslateX) {
// currentTranslateX 也需要相应变化【在右端到头的情况时】
this.currentTranslateX = contentWidth - scrollWidth
// 快速的滑动依旧存在判断和计算时对应的contentWidth变成正数所以需要限制一下
if (this.currentTranslateX > 0) {
this.currentTranslateX = 0
}
}
// 更新元素数据
this.contentWidth = contentWidth
this.scrollWidth = scrollWidth
// 判断何时滚动消失: 当page > content + btns(40)
if (contentWidth > scrollWidth + 40) {
this.isScroll = false
}
}
// 判断何时滚动出现: 当page < content
if (!this.isScroll && contentWidth < scrollWidth) {
this.isScroll = true
// 注意当isScroll变为true对应的元素盒子大小会发生变化
this.$nextTick(() => {
contentWidth = this.$refs.content.clientWidth
scrollWidth = this.$refs.scroll.clientWidth
this.contentWidth = contentWidth
this.scrollWidth = scrollWidth
this.currentTranslateX = 0
})
}
}
// 初始化判断
checkScroll()
// 默认判断父元素和子元素的大小,以确定初始情况是否显示滚动
// 全局窗口变化监听判断父元素和子元素的大小从而控制isScroll的开关
window.onresize = () => {
checkScroll()
}
}
}
</script>

View File

@@ -13,17 +13,18 @@
:style="{
opacity: this.searchActive ? 0.5 : 1
}"
flex-box="0">
<div class="logo-group" :style="{width: asideCollapse ? asideWidthCollapse : asideWidth}">
flex-box="0"
flex>
<div class="logo-group" :style="{width: asideCollapse ? asideWidthCollapse : asideWidth}" flex-box="0">
<img v-if="asideCollapse" :src="`${$baseUrl}image/theme/${themeActiveSetting.name}/logo/icon-only.png`">
<img v-else :src="`${$baseUrl}image/theme/${themeActiveSetting.name}/logo/all.png`">
</div>
<div class="toggle-aside-btn" @click="handleToggleAside">
<div class="toggle-aside-btn" @click="handleToggleAside" flex-box="0">
<d2-icon name="bars"/>
</div>
<d2-menu-header/>
<d2-menu-header flex-box="1"/>
<!-- 顶栏右侧 -->
<div class="d2-header-right">
<div class="d2-header-right" flex-box="0">
<!-- 如果你只想在开发环境显示这个按钮请添加 v-if="$env === 'development'" -->
<d2-header-search @click="handleSearchClick"/>
<d2-header-error-log/>