|
@@ -31,6 +31,9 @@
|
|
|
</li>
|
|
</li>
|
|
|
<li class="nav-item">
|
|
<li class="nav-item">
|
|
|
<div
|
|
<div
|
|
|
|
|
+ @focus="handleFocus"
|
|
|
|
|
+ @focusout="handleFocusOut"
|
|
|
|
|
+ tabindex="0"
|
|
|
class="header-select-box"
|
|
class="header-select-box"
|
|
|
@click.stop="data.isShowSelect = !data.isShowSelect"
|
|
@click.stop="data.isShowSelect = !data.isShowSelect"
|
|
|
:class="[data.isShowSelect == true ? 'select-up' : 'select-down']"
|
|
:class="[data.isShowSelect == true ? 'select-up' : 'select-down']"
|
|
@@ -38,17 +41,19 @@
|
|
|
<div class="header-select-hd"
|
|
<div class="header-select-hd"
|
|
|
>{{ data.verson }}<i class=""></i
|
|
>{{ data.verson }}<i class=""></i
|
|
|
></div>
|
|
></div>
|
|
|
- <div class="header-select-bd" v-show="data.isShowSelect">
|
|
|
|
|
- <div
|
|
|
|
|
- class="header-select-item"
|
|
|
|
|
- v-for="(item, index) in data.versonList"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- @click.stop="checkTheme(item.name, index)"
|
|
|
|
|
- :class="{ active: data.activeIndex === index }"
|
|
|
|
|
- >
|
|
|
|
|
- {{ item.name }}
|
|
|
|
|
|
|
+ <transition name="fade">
|
|
|
|
|
+ <div class="header-select-bd" v-show="data.isShowSelect">
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="header-select-item"
|
|
|
|
|
+ v-for="(item, index) in data.versonList"
|
|
|
|
|
+ :key="index"
|
|
|
|
|
+ @click.stop="checkTheme(item.name, index)"
|
|
|
|
|
+ :class="{ active: data.activeIndex === index }"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ item.name }}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </transition>
|
|
|
</div>
|
|
</div>
|
|
|
</li>
|
|
</li>
|
|
|
<li class="nav-item">
|
|
<li class="nav-item">
|
|
@@ -60,7 +65,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
<script lang="ts">
|
|
<script lang="ts">
|
|
|
-import { defineComponent, reactive, computed } from 'vue';
|
|
|
|
|
|
|
+import { defineComponent, reactive, computed, onMounted } from 'vue';
|
|
|
import Search from './Search.vue';
|
|
import Search from './Search.vue';
|
|
|
import { header } from '@/config';
|
|
import { header } from '@/config';
|
|
|
import { currentRoute, themeColor } from '@/sites/assets/util/ref';
|
|
import { currentRoute, themeColor } from '@/sites/assets/util/ref';
|
|
@@ -89,8 +94,15 @@ export default defineComponent({
|
|
|
activeIndex: 0,
|
|
activeIndex: 0,
|
|
|
isShowSelect: false
|
|
isShowSelect: false
|
|
|
});
|
|
});
|
|
|
|
|
+ const handleFocus = () => {
|
|
|
|
|
+ console.log(1);
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleFocusOut = () => {
|
|
|
|
|
+ data.isShowSelect = false;
|
|
|
|
|
+ };
|
|
|
const isActive = computed(() => {
|
|
const isActive = computed(() => {
|
|
|
return function(name: string) {
|
|
return function(name: string) {
|
|
|
|
|
+ console.log(name, currentRoute.value);
|
|
|
// console.log('name1', currentRoute.value == name.toLowerCase());
|
|
// console.log('name1', currentRoute.value == name.toLowerCase());
|
|
|
return currentRoute.value == name.toLowerCase();
|
|
return currentRoute.value == name.toLowerCase();
|
|
|
};
|
|
};
|
|
@@ -117,7 +129,9 @@ export default defineComponent({
|
|
|
data,
|
|
data,
|
|
|
isActive,
|
|
isActive,
|
|
|
checkTheme,
|
|
checkTheme,
|
|
|
- themeName
|
|
|
|
|
|
|
+ themeName,
|
|
|
|
|
+ handleFocus,
|
|
|
|
|
+ handleFocusOut
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -177,10 +191,11 @@ export default defineComponent({
|
|
|
.nav-box {
|
|
.nav-box {
|
|
|
margin-right: 140px;
|
|
margin-right: 140px;
|
|
|
.nav-list {
|
|
.nav-list {
|
|
|
- min-width: 400px;
|
|
|
|
|
|
|
+ min-width: 445px;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
list-style: none;
|
|
list-style: none;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
|
|
+ justify-content: space-around;
|
|
|
}
|
|
}
|
|
|
.nav-item {
|
|
.nav-item {
|
|
|
position: relative;
|
|
position: relative;
|
|
@@ -192,7 +207,6 @@ export default defineComponent({
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
a {
|
|
a {
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
- padding: 0 10px;
|
|
|
|
|
line-height: 64px;
|
|
line-height: 64px;
|
|
|
}
|
|
}
|
|
|
// overflow: hidden;
|
|
// overflow: hidden;
|
|
@@ -230,6 +244,7 @@ export default defineComponent({
|
|
|
position: relative;
|
|
position: relative;
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
vertical-align: middle;
|
|
vertical-align: middle;
|
|
|
|
|
+ outline: 0;
|
|
|
}
|
|
}
|
|
|
&-hd {
|
|
&-hd {
|
|
|
min-width: 77px;
|
|
min-width: 77px;
|
|
@@ -495,4 +510,12 @@ export default defineComponent({
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+// 下拉列表选择动画效果
|
|
|
|
|
+.fade-enter-active,
|
|
|
|
|
+.fade-leave-active {
|
|
|
|
|
+ transition: opacity 0.5s;
|
|
|
|
|
+}
|
|
|
|
|
+.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
|
|
|
|
|
+ opacity: 0;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|