从0-1开发一个Vue3前端系统页面-10.导航栏菜单选中问题

news2024/11/18 0:00:38

注意:本项目已将前端源码同步上传至Gitee,项目已开源,仅供参考,不涉及商用,著作权归本人所有。

开源项目链接:Wandering-children-have-the-stars-as-companions: WCHTSAC (gitee.com)icon-default.png?t=N7T8https://gitee.com/Chunshuqiuli/wandering-children-have-the-stars-as-companions


本节解决的问题是导航栏菜单点击浏览器返回按钮和刷新按钮时菜单选中状态异常。

详细信息见

前端Vue监听路由变化, 点击页面内按钮跳转菜单更改导航菜单选中状态-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/XiaomeiGuiSnJs/article/details/141261751?spm=1001.2014.3001.5501以上内容是最详细的问题发现、分析与解决,这里只用作更正之前的系统源码

附录

Header.vue

<template>
    <div class="header-container">
        <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" :ellipsis="false"
            @select="handleSelect" router>
            <el-menu-item index="myBlog">博客</el-menu-item>
            <el-menu-item index="perCenter">博客园</el-menu-item>
            <el-menu-item index="2">草稿箱</el-menu-item>
            <el-menu-item index="3">回收站</el-menu-item>
        </el-menu>
        <div class="avator_div">
            <el-avatar class="avatar" shape="circle" :size="55"
                src="https://n.sinaimg.cn/sinakd20116/96/w2048h2048/20240323/24a7-52a54c327350fe430e27f8b5847a0bf5.jpg"></el-avatar>

        </div>
        <div class="ope">
            <el-button color="#409EFF" link>会员中心</el-button>
            <el-button color="#409EFF" link>消息</el-button>
            <el-button color="#409EFF" link>创作中心</el-button>
            <el-button color="#fc5531" id="publish">发布</el-button>

        </div>
    </div>
</template>

<script>
export default {
    name: 'Header',
    data() {
        return {
            activeIndex: 'myBlog',
        }
    },
    created() {
        this.activeIndex = this.$route.path.substring(1);
    },
    methods: {
        handleSelect(key, keyPath) { }
    },
    watch: {
        $route(to, from) {
            this.activeIndex = to.path.substring(1);
        }
    },
}
</script>
<style>
.el-menu-item {
    font-size: 18px !important;
    font-family: "宋体";
    font-weight: bold;
}

/* .el-menu-item.is-active, */
.el-menu-item,
.el-menu-item:hover {
    color: black !important;
    background-color: transparent !important;
}
</style>
<style lang="scss" scoped>
.header-container {
    min-width: 1325px;
    overflow: hidden;
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;

    .el-menu-demo {
        flex-grow: 1;
    }

    .avator_div {
        position: absolute;
        right: calc(5vw + 320px); //这里我将 .ope 的 right 属性设置为 calc(5vw + 320px),
        //这样 .ope 会定位在距离右侧 5vw 的位置加上额外的 320px 间距。
        top: 0;

        .avatar {
            float: left;
        }
    }

    .ope {
        position: absolute;
        right: 5vw;

        .el-button:hover {
            color: rgb(107, 107, 194);
        }

        #publish {
            color: white;
            width: 100px;
            border-radius: 25px;

        }
    }

}
</style>

 这里对myBlog.vue即博客页面进行了数据展示样式的优化,此处同步上传了

myBlog.vue

<template>
    <div class="box">
        <div class="UserInfo">
            <div class="UserImg">
                <img src="../../assets/image/avator.jpg" alt="">
            </div>
            <div class="userTop">
                <div class="uTop">
                    <div class="userName">
                        {{ User.userName }}
                    </div>
                    <!-- <div class="infoManage">
                            <el-button></el-button>
                        </div> -->
                </div>
                <div class="uMiddle">
                    <span>{{ User.totalVisits }}</span>
                    <p>总访问量&emsp;|&emsp;</p>
                    <span>{{ User.original }}</span>
                    <p>原创&emsp;|&emsp;</p>
                    <span>{{ User.ranking }}</span>
                    <p>排名&emsp;|&emsp;</p>
                    <span>{{ User.fans }}</span>
                    <p>粉丝&emsp;&emsp;</p>
                </div>
                <div class="uBottom">
                    <span>IP属地:{{ User.IP }}</span>
                    <span>加入时间:{{ User.joinTime }}</span>
                    <span>博客简介:{{ User.blogInfo }}</span>
                </div>
            </div>
        </div>
        <div class="InfoMsg">
            <div class="leftMenu">

            </div>
            <div class="content">
                <div class="header">
                    <el-tabs v-model="contentTabs" class="demo-tabs" @tab-click="handleClick">
                        <el-tab-pane label="最近" name="first"></el-tab-pane>
                        <el-tab-pane label="文章" name="second"></el-tab-pane>
                        <el-tab-pane label="资源" name="third"></el-tab-pane>
                        <el-tab-pane label="问答" name="fourth"></el-tab-pane>
                        <el-tab-pane label="帖子" name="fifth"></el-tab-pane>
                        <el-tab-pane label="视频" name="sixth"></el-tab-pane>
                        <el-tab-pane label="关注/订阅/互动" name="seventh"></el-tab-pane>
                        <el-tab-pane label="收藏" name="eighth"></el-tab-pane>
                    </el-tabs>
                    <el-form v-model="queryParams">
                        <el-input type="text" v-model="queryParams.title" placeholder="搜TA的内容" />
                    </el-form>
                </div>
                <div class="body">

                </div>
            </div>
        </div>
    </div>
</template>
<script>
import { ref } from 'vue'
export default {
    data() {
        return {
            contentTabs: ref("first"),
            queryParams: {
                title: ""
            },
            User: {
                userName: "法外狂徒张三",
                totalVisits: 18307,
                original: 543,
                ranking: 2343,
                fans: 2983431,
                IP: "北京市",
                joinTime: "2021-01-01",
                blogInfo: "我是一个程序员"
            }
        }
    },
}
</script>
<style>
.el-tabs__item {
    font-size: 17px !important;

}
</style>
<style lang="scss" scoped>
.box {
    width: 100%;
    height: auto;
    margin-top: 50px;

    .UserInfo {
        width: 100%;
        height: 138px;
        display: flex;
        flex-direction: row;
        border-bottom: 10px solid black;

        .UserImg {
            display: flex;
            width: 118px;
            height: 118px;
            margin: -40px 0 0 48px;
            border-radius: 50%;
            border: 5px solid rgb(240, 240, 242);

            img {
                min-height: 118px;
                min-width: 118px;
                border-radius: 100%;
            }
        }

        .userTop {
            width: 90%;
            height: 140px;
            margin: 0 auto;
            display: flex;
            flex-direction: column;
            overflow: hidden;

            .uTop {
                width: 100%;
                height: 40%;

                .userName {
                    width: 30%;
                    height: 100%;
                    font-size: 30px;
                    display: flex;
                    justify-content: flex-start;
                    align-items: flex-end;
                    padding-left: 20px;

                }
            }

            .uMiddle,
            .uBottom {
                width: 100%;
                height: 25%;
                display: flex;

                p {
                    margin: 10px 0 10px 10px;
                    font-size: 14px;
                }

                span {
                    width: auto;
                    display: block;
                    padding: 0 0 0 10px;
                    font-size: 25px;
                    // font-weight: bold;
                }

                span:nth-child(1) {
                    margin-left: 12px;
                }
            }

            .uBottom {
                display: flex;
                flex-direction: row;
                justify-content: flex-start;
                align-items: flex-end;
            }

            .uBottom span {
                font-size: 14px;
                margin-right: 100px;
            }
        }
    }

    .InfoMsg {
        width: 100%;
        min-height: calc(100vh - 160px);
        display: flex;
        overflow: hidden;

        .leftMenu {
            min-width: 300px;
            max-height: 648px;

        }

        .content {
            width: auto;
            height: auto;
            border-left: 10px solid black;

            .header {
                width: 100%;
                display: flex;
                padding: 0 15px 0 25px;

                .demo-tabs {
                    width: 700px;
                    height: 100%;
                    padding-left: 20px;

                    ::v-deep .el-tabs__nav-wrap::after {
                        background-color: white;
                    }
                }

                .el-form {
                    width: 300px;
                    display: flex;
                    justify-content: flex-end;
                    align-items: flex-start;
                    padding: 5px 30px 0 0;

                    .el-input {
                        font-size: 17px;
                        width: 170px;

                    }
                }
            }

            .body {
                width: 100%;
                max-height: 900px;
                overflow-y: scroll;
            }

            .body::-webkit-scrollbar {
                width: 1px;
                height: 1px;
            }

            .body::-webkit-scrollbar-track {
                border-radius: 0;
                box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
                background: black;
            }

            .body::-webkit-scrollbar-thumb {
                border-radius: 10px;
                box-shadow: inset 0 0 5px rgba(27, 190, 208, 0.7);
                background: white;
            }

        }
    }

}
</style>

若您觉得文章对您有用,烦请您动动发财的小手一键三连

更多Vue前端系统开发流程可以点击专栏
从0-1开发一个Vue3前端系统页面_不再会有谎言的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/xiaomeiguisnjs/category_12754518.html?spm=1001.2014.3001.5482更多开发中可能会遇到的问题及解决方案可以点击专栏
开发遇到的问题_不再会有谎言的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/xiaomeiguisnjs/category_12755452.html?spm=1001.2014.3001.5482更多其他知识包括但不限于前后端基础进阶Java后端算法逻辑前后端笔试面试题等请点击主页专栏查看
不再会有谎言-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/XiaomeiGuiSnJs?type=blog


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP通信,HTTP协议

TCP通信 1.流式套接字与数据报套接字的区别: 1.数据报套接字:每一包数据传输的目的可能不同&#xff0c;所以每一包需要单独处理(MTU:1500) 2.流式套接字:数据以流的形式连续的传输&#xff0c;有可能产生数据粘连&#xff0c;解决方式(固定长度、数据包间设定间隔 2.TCP包头…

内网安全:跨域攻击

目录 获取域信息 利用域信任密钥获取目标域 利用krbtgt哈希值获取目标域 内网中的域林&#xff1a; 很多大型企业都拥有自己的内网&#xff0c;一般通过域林进行共享资源。根据不同职能区分的部门&#xff0c;从逻辑上以 主域和子域进行区分&#xff0c;以方便统一管理。在…

C++学习笔记----3、设计专业的C++程序(八)---- 设计国际象棋程序

今天我们就来介绍一个系统性的方法去设计一个C程序&#xff0c;一个简单的国际象棋程序。为了提供完整的案例&#xff0c;有些步骤的概念目前还没有讲到。现在学习该案例来获得一一些人设计过程的整体印象&#xff0c;当你学习了那些概念后也可以再回头重新阅读本篇。 1、需求…

《黑神话》主线时长约40小时 100%完成需90小时

《黑神话&#xff1a;悟空》即将正式发售&#xff0c;媒体评分也已解禁&#xff0c;M站均分为82分。在游戏发售之前&#xff0c;许多粉丝仍想了解关于该作的更多信息。游戏科学未确定《黑神话》游戏时长是多久&#xff0c;幸运的是有评测员透露其主线时长约为40小时&#xff0c…

亲测好用,吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.08 更新】

废话不多说&#xff0c;直接分享正文~ 以下是小编为大家搜集到的最新的ChatGPT国内站&#xff0c;各有优缺点。 1、AI Plus&#xff08;稳定使用&#xff09; 推荐指数&#xff1a;⭐⭐⭐⭐⭐ yixiaai.com 该网站已经稳定运营了1年多了。2023年3月份第一批上线的网…

如何在Python中正确使用浅拷贝和深拷贝?

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python编程中&#xff0c;拷贝对象是一个常见的操作&#xff0c;尤其是在处理复杂数据结构时。Python提供了两种拷贝方式&#xff1a;浅拷贝&#xff08;shallow copy&#xff09;和深拷贝&#xff08;deep co…

day35-四层负载

01.四层负载概念 02.四层实现对端口转发 1.克隆一台10.0.0.4 2.安装部署nginx服务 [rootlb:~]# scp 10.0.0.7:/etc/yum.repos.d/nginx.repo /etc/yum.repos.d/[rootlb:~]#yum -y install nginx3.配置nginx四层负载 [rootlb:~]#rm -rf /etc/nginx/conf.d/default.conf # 删除默认…

【重磅发布】2025华清远见新品发布会亮点、新品抢先看!

匠心服务 智启新程 大咖云集 • 行业分析 • 预见趋势 新品首发 • 课程升级 • 育人交流 - 2025华清远见新品发布会 将于2024年8月23日在北京隆重举行 诚邀您的到来&#xff01; 大会背景 本次新品发布会以 “匠心服务 智启新程”为主题&#xff0c; 邀请多家业内知名…

顶刊中的水刊!中科院1区TOP和“平替”双打组合,3天初审,25天可录用!

高分“水刊” 前面小编解析了一本MDPI旗下能源电力类期刊《Energies》 &#xff08;&#x1f449;详情参考&#xff1a;MDPI旗下Energies“平替”&#xff1a;这本SCI又“水”又稳&#xff0c;不卡背景&#xff0c;25天录用吊打同行&#xff09; 本期解析一本顶刊&#xff0c…

【Python零基础学习】字典

文章目录 前言一、简单字典示例二、使用字典三、字典遍历四、嵌套总结 前言 Python 字典 是一种非常强大且灵活的数据结构&#xff0c;它允许你通过键&#xff08;key&#xff09;来存储和检索值&#xff08;value&#xff09;。想象一下&#xff0c;字典就像一个巨大的电话簿…

免费分享一套SpringBoot+Vue员工管理(职工管理,考勤管理,奖惩管理,合同管理)管理系统【论文+源码+SQL脚本】,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue员工管理(职工管理&#xff0c;考勤管理&#xff0c;奖惩管理&#xff0c;合同管理)管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue员工管理(职工管理&#xff0c;考勤…

Redis远程字典服务器(6) —— list类型详解

目录 一&#xff0c;基本情况 二&#xff0c;list常用命令 2.1 lpush&#xff0c;lrange 2.2 对于“下标越界”的思考 2.3 lpushx&#xff0c;rpush&#xff0c;rpushx 2.4 lpop&#xff0c;rpop 2.5 lindex&#xff0c;linsert&#xff0c;llen 2.6 lrem 2.7 ltrim…

基于B站的热门视频数据分析与情感分析【关联性、主题、情感分析】

目录 2 研究内容 2.1 主要研究内容 2.2 拟解决的关键问题 2.2.1热门视频特征的识别和提取 2.2.2情感分析与用户反馈 2.3技术路线 2.3.1数据收集 2.3.2数据预处理 2.3.3数据挖掘 2.3.4 数据可视化 2.4可行性分析 2.4.1技术可行性 2.4.2数据可行性 2.4.3经济可行性 2.5数据库设计…

vba发送邮件功能实现方法:如何调试测试?

vba发送邮件的配置步骤流程&#xff1f;vba发送邮件的安全指南&#xff1f; VBA是一种常用于自动化Office应用程序的编程语言。利用VBA发送邮件功能&#xff0c;用户可以实现自动化发送邮件的任务&#xff0c;无需手动操作。AokSend将详细探讨如何通过调试与测试来确保VBA发送…

ThreadLoad如何防止内存溢出

优质博文&#xff1a;IT-BLOG-CN 从 ThreadLocalMap看 ThreadLocal使用不当的内存泄漏问题 【1】基础概念 &#xff1a; 首先我们先看看ThreadLocalMap的类图&#xff0c;我们知道 ThreadLocal只是一个工具类&#xff0c;他为用户提供get、set、remove接口操作实际存放本地变…

MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法

一、搭建开发环境&#xff0c;编译固件。 1、安装在Ubuntu 14.04.5 x86_64系统后&#xff0c;然后安装下面命令行。 $ sudo apt-get install git g make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g…

XSS---DOM破坏靶场复现

目录 一、OK&#xff0c;Boomer 一、网址&#xff1a; 二、源码分析&#xff1a; 三、 解决思路&#xff1a; 1.页面中的元素可以通过id和name直接取出来 2.覆盖 3.覆盖方法 四、ToString 五、setTimeout函数 六、使用框架白名单 七、成功绕过 ​编辑 二、案例分析…

才来鱼厂实习 1 个月,就转正了!

大家好&#xff0c;我是程序员鱼皮。昨天&#xff0c;我给才来我们公司 实习一个月 的前端开发同学转正了&#xff0c;直接发了正式 Offer&#xff01;这个转正速度&#xff0c;放眼到所有公司中&#xff0c;我相信也是炸裂的。 看小伙子那么激动&#xff0c;让我回想到了 19 年…

认识 bufferbloat

很多人并不理解 bufferbloat 的本质&#xff0c;我引用《计算机网络-自顶向下方法(第 8 版)》第四章的一个解释&#xff1a; 很形象的比喻&#xff0c;buffer 就像盐&#xff0c;不可或缺&#xff0c;适量增味&#xff0c;过量食物就不能吃了。高血压患者更有所感受&#xff…

STM32是基于ARM架构的,那么ARM究竟是什么呢?

一、什么是ARM 首先&#xff0c;ARM是一家英国公司&#xff0c;全称Advanced RISC Machines&#xff0c;高级精简指令集机器&#xff0c;RISC意味着是精简指令集的芯片。同时也有复杂指令集CSIC的芯片&#xff0c;如X86&#xff0c;常以Intel和AMD为主。 其次&#xff0c;之后…