vue实现吸顶

Posted zeishuai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue实现吸顶相关的知识,希望对你有一定的参考价值。

话不多说,看代码。

<template>
    <div class="nav" :class="isFixed== true?‘isFixed‘:‘‘">
        <ul>
            <li @click="handlebtn()">
                综合
                <i class="iconfont">&#xe502;</i>

            </li>
            <li>
                品牌
                <i class="iconfont">&#xe502;</i>
            </li>
            <li>
                分类
                <i class="iconfont">&#xe502;</i>
            </li>
            <li>
                筛选
                <i class="iconfont">&#xe502;</i>
            </li>
        </ul>
        <!--<transition name="move">-->
        <div class="one" v-if="flag">
            <li>综合排序<i class="iconfont">&#xe601;</i></li>
            <li>销量从高到低</li>
            <li>价格从低到高</li>
            <li>价格从高到低</li>
            <li>最新商家商品</li>
            <li>折扣从高到低</li>
        </div>
        <!--</transition>-->
    </div>
</template>

<script>
    export default {
        data() {
            return {
                flag: false,
                isFixed: "false"
            }
        },
        methods: {
            handlebtn() {
                this.flag = !this.flag;
            },
            handleScroll() {
                var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
                if(scrollTop >44) {
                    this.isFixed = true;
                } else {
                    this.isFixed = false;
                }
            }
        },
        mounted() {
            window.addEventListener(scroll, this.handleScroll)
        }

    }
</script>

<style scoped lang="scss">
    .nav {
        width: 100%;
        height: .76rem;
        background: #fff;
        border-bottom:.01rem solid #e8e8e8;
        ul {
            width: 100%;
            height: 100%;
            display: flex;
            li {
                width: 25%;
                height: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: .32rem;
                i {
                    font-size: .5rem;
                }
            }
        }
        .one {
            width: 400%;
            height: 5.4rem;
            background: #fff;
            li {
                width: 7.5rem;
                padding: 0 .4rem;
                height: .9rem;
                font-size: .32rem;
                border-top: .01rem solid #e8e8e8;
                color: #404040;
                display: flex;
                align-items: center;
                justify-content: space-between;
                i {
                    font-size: .4rem;
                }
            }
        }
    }
    .isFixed{
        position:fixed;
        left: 0;
        top:0;
        z-index: 10;
    }
</style>

 

以上是关于vue实现吸顶的主要内容,如果未能解决你的问题,请参考以下文章

vue实现tab吸顶,滚动时动态切换tab

vue监听滚动事件 实现某元素吸顶或者固定位置显示

基于 Vue 的两层吸顶踩坑总结

vue实现导航栏吸顶效果 + 与内容联动

前端实现div标签p标签等吸顶效果Vue+原生JS组合写法

js吸顶效果与布局