top-nav.vue 1.69 KB
<template>
    <header-box title="商品详情" class="product-header ghost" ref="header"></header-box>
</template>
<style>
    .product-header {
        &.ghost {
            .blk-header-title {
                visibility: hidden;
            }
        }

        .blk-header-gap {
            display: none;
        }
    }
</style>
<script>
    import yoho from 'yoho';
    import HeaderBox from 'component/header.vue';

    export default {
        data() {
            return {
                yoho: yoho
            };
        },
        props: {
            title: String,
            img: String
        },
        components: {
            HeaderBox
        },
        methods: {
            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>