top-nav.vue 2.05 KB
<template>
    <cheader title="商品详情" class="product-header ghost" v-ref:header>
        <i class="icon icon-share" slot="right" @click="share()"></i>
    </cheader>
</template>
<style>
    .product-header {
        &.ghost {
            .blk-header-title {
                visibility: hidden;
            }
        }

        .blk-header-gap {
            display: none;
        }
    }
</style>
<script>
    const yoho = require('yoho');
    const cheader = require('component/header.vue');

    module.exports = {
        data() {
            return {
                yoho: yoho
            };
        },
        props: {
            title: String,
            img: String
        },
        components: {
            cheader
        },
        methods: {
            share() {
                yoho.goShare({
                    title: this.title || '',
                    des: '我在BLK发现了一个不错的商品,快来看看吧!',
                    img: this.img,
                    url: location.href
                });
            },
            toggle() {
                let ghost = true;
                let ghost2 = false;
                let ghost3 = false;

                if (window.scrollY > 100) {
                    ghost = false;
                    ghost2 = false;
                    ghost3 = false;
                } else if (window.scrollY > 70) {
                    ghost = false;
                    ghost3 = true;
                } else if (window.scrollY > 30) {
                    ghost = false;
                    ghost2 = true;
                }

                this.$refs.header.$el.classList.toggle('ghost', ghost);
                this.$refs.header.$el.classList.toggle('ghost-2', ghost2);
                this.$refs.header.$el.classList.toggle('ghost-3', ghost3);
            }
        },
        created() {
            window.addEventListener('touchmove', () => {
                this.toggle();
            });

            window.addEventListener('scroll', () => {
                this.toggle();
            });
        }
    };
</script>