vue导航栏切换内容

39 篇文章 1 订阅
订阅专栏

<template>
  <div class="revenue_page">
    <div class="reven_main">
      <div class="reven_nav">
        <div
          :class="{ 'li-activate': navIndex == index }"
          v-for="(item, index) in menuItems"
          :key="item.name"
          @click="clickCategory(item.name, index)"
        >
          <div
            :class="navIndex == index ? 'menu-item-title' : 'not_item-title'"
          >
            {{ item.title }}
          </div>
          <p :class="{ 'navBox-li-line': navIndex == index }"></p>
        </div>
      </div>
      <div class="user-list">
        <div class="content_title">
          <p class="title-text">排行榜{{ activeName }}</p>
        </div>
        <div class="con_list" v-show="boardItems.length > 0">
          <div v-for="(item, index) in boardItems" :key="index">
            <div class="user-list-item">
              <div class="user-list_left">
                <div class="user-list-item-rank">
                  {{ index + 1 }}
                </div>
                <div class="user-list-item-avatar">
                  <img
                    :src="`//qn.jwshq.cn/${
                      item.icon || 'profile_unknown.png'
                    }/50`"
                    class="user_head_img"
                  />
                </div>
                <div class="user-list-item-name">
                  {{
                    item.name && item.name.length > 12
                      ? item.name.substr(0, 12) + "..."
                      : item.name
                  }}
                </div>
              </div>
              <div class="user-list_right">
                <p class="user-award" v-if="item.award">
                  {{ (item.award / 100).toFixed(2) }}元
                </p>
              </div>
            </div>
            <div class="line"></div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: 'RevenueRanking',
  data () {
    return {
      active: 'weekly',
      menuItems: [{
        name: 'daily',
        title: '日榜'
      }, {
        name: 'weekly',
        title: '周榜'
      }, {
        name: 'all',
        title: '总榜'
      }],
      navIndex: 1,
      boards: {
        daily: [
          {
            name: '李丽丽',
            award: 814683,
            icon: "Q5XHUom.2592.2592.0.1002",
          },
          {
            name: '李丽丽',
            award: 814683,
            icon: "Q5XHUom.2592.2592.0.1002",
          },
        ],
        weekly: [
          {
            name: '张果果',
            award: 814683,
            icon: "QM86vaF.1080.1080.0.1004"
          },
          {
            name: '张果果',
            award: 814683,
            icon: "Q5XHUom.2592.2592.0.1002",
          },
        ],
        all: [
          {
            name: '王晓小',
            award: 814683,
            icon: "ncnkLkw.960.960.0.1000",
          },
          {
            name: '王晓小',
            award: 814683,
            icon: "Q5XHUom.2592.2592.0.1002",
          },
        ]
      },
    };
  },
  methods: {
    clickCategory (name, index) {
      this.navIndex = index
      this.active = name
    },
  },
  computed: {
    //标题
    activeName () {
      return this.menuItems.find(e => e.name === this.active).title;
    },

    boardItems () {
      //取数据第一种的方法
      // if (this.navIndex == 0) {
      //   return this.boards.daily
      // } else if (this.navIndex == 1) {
      //   return this.boards.weekly
      // } else if (this.navIndex == 2) {
      //   return this.boards.all
      // } else {
      //   return []
      // }
      //取数据第二种的方法
      return this.active in this.boards ? this.boards[this.active] : [];
    }
  }
};
</script>
<style scoped lang="less">
* {
  margin: 0;
  padding: 0;
}

.revenue_page {
  width: 100%;
  overflow: hidden;
}
.reven_main {
  width: 100%;
  height: 64px;
}
.user-list {
  width: 94%;
  margin-left: 3%;
  opacity: 1;
  background: linear-gradient(180deg, #fff1f1, #ffffff 29%);
  border-radius: 12px;
  box-shadow: 0px 6px 10px 2px rgba(206, 63, 0, 0.15);
  position: absolute;
  top: 63px;
  padding-bottom: 44px;
}
.reven_nav {
  width: 60%;
  height: 44px;
  margin-left: 20%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  line-height: 44px;
}
.user-item {
  font-size: 15px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  text-align: right;
  color: #ffffff;
  opacity: 0.6;
}
.navBox-li-line {
  width: 100%;
  position: absolute;
  top: 40px;
  height: 3px;
  background: red;
  border-top-left-radius: 100px;
  border-top-right-radius: 100px;
  padding-left: 8px;
  padding-right: 8px;
  margin-left: -8px;
}
.menu-item-title {
  font-size: 15px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  text-align: right;
  color: red;
  margin: 0;
}
.not_item-title {
  font-size: 15px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  text-align: right;
  // color: #ff;
  opacity: 0.6;
  margin: 0;
}
.li-activate {
  width: auto;
  height: 100%;
  display: inline-block;
  position: relative;
  font-size: 15px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  color: #9da0a4;
}
.item_name {
  font-size: 13px;
  text-align: left;
  color: #ffffff;
}
.content_title {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 25px;
}

.title-text {
  font-size: 17px;
  font-family: PingFangSC, PingFangSC-Semibold;
  font-weight: 600;
  text-align: left;
  color: #ff4500;
  padding: 0 9px;
}
.user_head_img {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  margin-left: 20px;
}
.con_list {
  margin-top: 14px;
  margin-left: 24px;
  margin-right: 24px;
}
.user-list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.hot_icon {
  width: 13px;
  height: 13px;
  margin-right: 2px;
}
.user-award {
  font-size: 14px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  text-align: center;
  color: #ff1d28;
}
.user-list_left {
  display: flex;
  align-items: center;
  flex: 2;
}
.user-list_right {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  flex: 1;
}
.user-list-item-rank {
  font-size: 18px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  text-align: center;
  color: #333333;
}
.user-list-item-name {
  font-size: 14px;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 500;
  color: #333333;
  margin-left: 10px;
}
.line {
  background: #e5e5e5;
  height: 0.5px;
  width: 100%;
  margin: 14px 0;
}
</style>

vue根据导航栏切换内容以及v-model的简单描述
huangguanhang的博客
05-12 485
<div id="module_343178" class="m-floor j-floorflag" data-moduleindex="1" data-moduletype="10001" data-moduleid="343178" _pi="1" style="margin-top: 0px; background-color: rgb(246, 246, 246); display: none;"> <!--Regular if3--> <!--Regular if4
Vue实现导航栏切换
NAIYAnana的博客
05-12 2751
使用Vue @mouseenter 鼠标移入事件 @mouseout鼠标移出事件 实现导航栏鼠标移入移出效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <script src="../public/vue.min.js"></script
vue点击导航栏,动态改变样式,经典写法
最新发布
qq_44849312的博客
08-18 405
第一个样式为 itemclass,第二个样式要看 indexItem== index 这个表达式是否成立,如果成立,则加入 active样式,表示激活状态,在vue中,我们通常会有这样的情况,在多个子模块之间,点击其中一个子模块,修改当前点击的子模块的样式。indexItem == index 就是当前这个模块,是否等于激活状态下的模块,如果是,添加active属性,修改背景色。我们要实现想要的效果,还需要结合静态样式,因为静态样式用来渲染其它未激活状态的子模块,动态样式用来渲染激活状态的子模块。
vue点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题
m0_59925573的博客
12-02 3359
需要继续解决一些问题,问题一,进入页面的时候默认展示“订阅管理”这个子级的内容。问题二,在刷新的时候,选中的菜单不会改变(不会丢失)。(2)vue页面,他会根据当前地址栏的路径在这个组件的位置上给你展示。第二个问题,刷新之后保持不变,就是让activeIndex始终指向当前地址栏这个路径。对于问题一,重定向。也就是在进入该页面之前重定向到某个子级,。(1)在index.js中配置路由的时候作为导航页的子级。2.完成1之后,我们可以看到这个页面的基本结构如下图。
vue 导航切换页面
Carina的编程技术博客
08-23 9303
vue 导航切换页面 这是我做出来的效果图,点击可以切换页面的 1.里面<router-view></router-view>是路由,/Attention/AttentionAbout和/Attention/AttentionCollect是跳转页面路径 <div class="padding"> <div class="atte...
vue 实现顶部tab栏菜单(顶部tab按钮)切换(添加删除nav数据,适配微前端应用,滑动动画,右键菜单弹窗)
baidu_33164415的博客
12-23 3616
要做顶部tab栏切换,还需要配合菜单。这里主要讲tab栏的实现方式。首先为了在样式效果上实现方便,这里决定使用element-ui的el-tabs标签来做。这样只需要改下样式,其他效果例如切换动画都能保存。当然,除了el-tabs自带的删除等事件,这里还需要添加右键事件,在右键事件里面有关闭全部和关闭其他两个事件选项示例中主应用和子应用均使用history路由模式。
vue2.0实现导航菜单切换效果
08-30
标题「Vue 2.0 实现导航菜单切换效果」表明本文的主要内容是介绍如何使用 Vue 2.0 实现导航菜单的切换效果。这个标题很直接地表明了本文的主题和目的。 描述解析 描述中提到「主要为大家详细介绍了 Vue 2.0 实现...
vue.js实现左边导航切换右边内容
10-16
- 使用Vue.js框架,可以通过双向数据绑定特性来实现左边导航栏和右边内容的动态切换。 - 导航栏中每个菜单项对应右边的一个视图内容点击不同的菜单项,可以通过改变视图组件来切换展示的内容。 2. **Vue.js中的...
vue设置导航栏、侧边栏为公共页面的例子
10-16
在使用Vue.js开发单页面应用时,通常需要一个公共的导航栏和侧边栏来提供一致的用户界面和导航体验。本文将详细介绍如何在Vue项目中设置导航栏和侧边栏为公共页面,并通过使用`<keep-alive>`和`$route.meta`来动态...
vuecli 实现导航切换
weixin_47906106的博客
03-16 1610
cnpm及vuecli3安装 首先先去安装node.js,安装完之后就可以直接使用npm了,因为npm是node的一个包的管理工具 安装成功后 全局安装脚手架(快速的搭建项目) npm install -g @vue/cli 创建vuecli3项目 vue create 工程名 Linter/Formatter 代码规范这里先不选 这里Y 以便去除路由中的#号 然后一致默认就可以创建成功 改变vuecli3的首页显示 components下新建one.vue index.js中定义路由 im
vue3+element-plus点击导航栏,el-main中的内容根据路由切换
weixin_50161578的博客
09-21 2585
element-plus中的el-main用router-view跳转的路由不嵌入到el-main中,而是跳转到新页面
vue底部图标和页面切换
05-30
vue配合mint-ui 做简单的切换。自己学习编写,如果使用再工作上,有问题,概不负责
vue点击切换不同的内容_关于vue-router控制底部导航栏点击切换icon的实例
weixin_36037417的博客
01-26 661
首先先上一下界面:底部导航栏使用vue-router做的需求就是:让导航栏的Icon点击之后切换为一个新的Icon,下面是代码板块<template> <div class="router-link-container"> <router-link to="/labels" active-class="selected" v-on:cl...
场景题:VUE项目-点击不同的tab,切换不同的相关内容
yuran1的博客
06-28 1246
此外,在实际的应用场景中并不会这么实施,因为通常我们是基于后端返回的数据来渲染页面的,而不是根据已经写死的数据。因而实现起来更加灵活,可以借助【v-for】、index等。在实现之前,我也搜了相关的文章看了看,大家实现的方式有很多,所以这个场景的解决方案非常灵活。后期如果想增加一个新的Tab,不得不去增加很多的代码量,乃至修改代码的逻辑。本文的实现思路适合【具有多个Tab内容】的场景,当我们想要增加一些Tab键及相关内容时只需要增加一些div标签即可,并不需要改变JS代码。
vue一级、二级菜单点击导航栏切换
weixin_46871290的博客
10-28 5178
vue一级、二级菜单点击导航栏切换
Vue3点击侧边导航栏完成切换页面内组件(WEB)
热门推荐
li-xun的博客
10-23 1万+
Vue3点击侧边导航栏完成切换页面内组件(WEB)
vue-cli 添加顶部导航栏点击导航菜单,左侧菜单栏切换
qq_40936424的博客
03-26 6127
layout-------------模板包含菜单栏等主要框架 router--------------路由管理,根据路由可生成左侧菜单栏 /** When your routing table is too long, you can split it into small modules**/ import Layout from '@/layout' var search = [ {...
vue实现导航栏切换内容
07-13
a. 首先需要在 Vue 中创建一个名为 message.vue 的组件,在该组件中编写需要展示的内容。 b....在每个路由的页面中,使用单独...在该文件或项目中,使用各种 HTML 和 Vue 元素来构建页面,实现相应的内容展示和路由切换
写文章

热门文章

  • 微信浏览器打开H5页面底部导航栏(左右箭头)固定或隐藏(vue) 16025
  • react组件懒加载的四种方式 14081
  • vue 移动端弹窗后禁止页面滚动 @touchmove.prevent 10676
  • react组件懒加载的四种方式 10352
  • 项目启动报错 8076

分类专栏

  • 微信小程序
  • 前端开发工具 7篇
  • 报错处理 1篇
  • 私人-面试
  • 前端配置git、webpack... 5篇
  • 私有资料-面试 1篇
  • 面试简历
  • JQuery 3篇
  • react-native 6篇
  • 前端 21篇
  • react 2篇
  • vue 39篇

最新评论

  • vue实现折叠收起功能-展开收起功能

    码农小李101: 使用element-plus的手风琴可以实现

  • vue实现底部弹窗多选

    努力吧少年-珊珊: vant 写的非常好

  • jQuery生日年月底部弹出选择--移动端

    qazplm001224: 很有用!感恩大佬表情包

  • jQuery生日年月底部弹出选择--移动端

    qazplm001224: 很有用!感恩大佬表情包

  • 微信浏览器打开H5页面底部导航栏(左右箭头)固定或隐藏(vue)

    zylof216: 方法一没生效

最新文章

  • 【微信小程序】 - 在父组件中修改子组件的样式
  • 【微信小程序】-通过变量设置样式
  • VScode 删除本地分支,删除远程分支!
2024年4篇
2023年5篇
2022年10篇
2021年56篇
2019年12篇
2018年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司网站优化和推广锨测试啦连江网站优化报价如何网站优化排名陇南优化网站报价梅州网站关键词排名优化技巧公司网站的百度关键词优化一个网站优化方案酒泉网站优化推广公司哪家口碑好奉化区网站优化公司南昌网站优化点江苏网站优化电话梅岭网站seo优化推广自媒体优化网站佛山按天网站优化服务兰州靠谱优化网站总部龙泉驿区网站关键词优化云南网站优化平台珠海网站优化莱山区行业网站优化临沂网站优化排名有效果吗广东网站关键词优化怎么弄扬州清镇网站优化安庆网站优化怎么选择河南郑州专业网站排名优化郴州网站优化哪家服务好罗湖门户网站优化软件瑞金网站关键词优化网站关键词优化先推火19星梁溪网站排名优化软件徐州外贸网站建设优化推广香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化