vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件,需先安装

向下滑动前

向下滑动后(改变了logo   字体    背景颜色)

<script lang="ts" setup>
import router from '@/router';
import { ArrowDown } from '@element-plus/icons-vue'
import { ref, onMounted, onUnmounted } from 'vue';

const handleCommand = (command: string | number | object) => {
    // 进行路由跳转
    router.push('/helpCenter')
}


// 判断滚动条的距离




// 创建一个响应式的 ref 来存储视口距离顶部的距离  
const scrollTopDistance = ref(0);
let topDistance = ref(true)
// let topDistance = ref(false)

// 监听滚动事件来更新视口距离顶部的距离  
const updateScrollDistance = () => {
    scrollTopDistance.value = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop;
    // console.log(scrollTopDistance.value);
    if(scrollTopDistance.value == 0){
        topDistance.value = false
    }else{
        topDistance.value = true
    }

};

// 在组件挂载时添加滚动事件监听器  
onMounted(() => {
    window.addEventListener('scroll', updateScrollDistance);
    // 初始化时也获取一次距离  
    updateScrollDistance();


});

// 在组件卸载时移除滚动事件监听器  
onUnmounted(() => {
    window.removeEventListener('scroll', updateScrollDistance);
});



</script>

<template>
    <div class="nav" :class="{'bgcLight':topDistance}">
        <div class="left">
            <img @click="router.push('/videoProducing')" v-if="topDistance == false" src="../../assets/img/whiteLogo.png" alt="">
            <img @click="router.push('/videoProducing')" v-if="topDistance == true" src="../../assets/img/darkLogo.png" alt="">
            <ul>
                <li @click="router.push('/videoProducing')">视频制作</li>
                <li @click="router.push('broadcastCenter')">直播中心</li>
                <li>
                    <el-dropdown @command="handleCommand">
                        <span class="el-dropdown-link">
                            帮助中心<el-icon class="el-icon--right"><arrow-down /></el-icon>
                        </span>

                        <template #dropdown>
                            <el-dropdown-menu>
                                <el-dropdown-item>直播客户端下载</el-dropdown-item>
                            </el-dropdown-menu>
                        </template>
                    </el-dropdown>
                </li>
            </ul>
        </div>

        <div class="right">
            登录 / 注册
        </div>
    </div>

</template>



<style lang="less" scoped>


.nav {
    width: 100%;
    min-width: 800px;
    height: 70px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: #040D1E;
    padding: 0 40px;
    color: white;
    box-sizing: border-box;

    .left {
        display: flex;
        align-items: center;

        img {
            height: 50px;
            &:hover{
                cursor: pointer;
            }
        }

        ul {
            display: flex;
            margin-left: 50px;

            li {
                list-style: none;
                padding: 0 10px;

                &:hover {
                    color: #006eff;
                    cursor: pointer;
                }

                .el-dropdown {
                    // background-color: red;

                    .el-dropdown-link {
                        color: white;
                        font-size: 16px;
                        // 除去element原有样式
                        outline: none;

                        &:hover {
                            color: #006eff;
                        }
                    }


                }
            }
        }
    }

    .right {
        width: 112px;
        height: 40px;
        line-height: 40px;
        background-color: #006EFF;
        text-align: center;
        font-size: 14px;
        border-radius: 20px;
        color: white;
        &:hover{
            cursor: pointer;
        }
    }
}

// 根据鼠标滑动判断是否存在属性
.bgcLight{
    background-color: white;
    color: black;
    position: fixed;
    box-shadow: 0 4px 8px #d6dff580!important;;
}

.bgcLight .el-dropdown-link{
    color: black !important;
}
</style>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值