首页 > 其他 > 详细

vue首页组件切换

时间:2019-11-14 10:51:36      阅读:127      评论:0      收藏:0      [点我收藏+]

 

 

结构如下

技术分享图片

 

 

 

代码如下:

<template>
    <div id="page">
        <div style="width: 100%" class="flex-container column">

            <div class="item one" @click="clickChart(‘1‘)" style="transform: translate(-38.4%, -24.5%) scale(0.23)">
                <Pie ref="pie"></Pie>
            </div>
            <div class="item two" @click="clickChart(‘2‘)" style="transform: translate(-38.4%, 14.5%) scale(0.23)">
                <WorldMap ref="worldMap"></WorldMap>
            </div>
            <div class="item three" style="transform: translate(-18.6%, -28.5%) scale(0.33);height: 20%;width: 160%">
                <Home></Home>
            </div>
            // active 很关键 别写漏掉了
            <div class="item four active" @click="clickChart(‘4‘)" style="transform: translate(0%, -9.5%) scale(0.55);">
                <Geo ref="geo"></Geo>
            </div>
            <div class="item five" @click="clickChart(‘5‘)" style="transform: translate(38.29%, -24.5%) scale(0.23);">
                <Pile ref="pile"></Pile>
            </div>
            <div class="item six" @click="clickChart(‘6‘)" style="transform: translate(38.29%, 14.5%) scale(0.23);">
                <Gauge></Gauge>
            </div>
        </div>
    </div>
</template>
<script>
    import Geo from @/components/Geo
    import Pile from @/components/Pile
    import Pie from @/components/Pie
    import Gauge from @/components/Gauge
    import WorldMap from @/components/WorldMap
    import Home from @/components/Home

    export default {

        components: {
            Geo,
            Pie,
            Pile,
            Gauge,
            WorldMap,
            Home
        },

        data() {
            return {iconDisplay: 4}
        },
        methods: {
            clickChart(clickIndex) {
                let activeItem = document.querySelector(.flex-container .active)
                let activeIndex = activeItem.dataset.order
                let clickItem = this.items[clickIndex - 1]
                if (activeIndex === clickIndex) {
                    return
                }
                activeItem.classList.remove(active)
                clickItem.classList.add(active)
                this._setStyle(clickItem, activeItem)
                this.iconDisplay = clickIndex
            }, _setStyle(el1, el2) {
                let transform1 = el1.style.transform
                let transform2 = el2.style.transform
                el1.style.transform = transform2
                el2.style.transform = transform1
            }
        }
    }
</script>
<style scoped> .active {
    height: 110%;
    width: 100%;
    margin-left: 10px;
    line-height: 300px;
    background-color: rgba(47, 136, 165, 0.35) !important;
    z-index: 9;
}

.item {
    padding: 0px;
    margin: 0px;
    position: absolute;
    transform: scale(0.33);
    text-align: center;
    transition: all 0.8s;
    background: rgba(43, 94, 121, 0.3);
}

.flex-container.column {
    position: relative;
    height: 100%;
    width: 100%;
    overflow: hidden;
    box-sizing: content-box;
} </style>
 

 

vue首页组件切换

原文:https://www.cnblogs.com/JonaLin/p/11854752.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!