vue2 消息弹框

news2024/10/2 12:27:15

父页面

<template>
  <div style="margin-top: 20px">
    <div class="nav-style msg-style">
      <el-badge :value="value" :max="99" class="num" v-if="value > 0">
        <i class="el-icon-bell"></i>
      </el-badge>
      <i class="el-icon-bell" v-else></i>
      <message class="news-style" @getNums="getNumsFn"></message>
    </div>
  </div>
</template>
<script>
import message from './message.vue'
export default {
  components: { message },
  data() {
    return {
      value: 0
    }
  },

  methods: {
    getNumsFn(val) {
      this.value = val
    }
  }
}
</script>

<style scoped>
.el-icon-bell {
  font-size: 16px;
}

.nav-style label {
  text-align: center;
  width: 16px;
  height: 16px;
  position: absolute;
  top: 3px;
  right: 16px;
}

.nav-style .name {
  height: 22px;
  margin-top: 19px;
  margin-bottom: 19px;
  font-size: 14px;
  font-weight: 400;
  color: #24324c;
  line-height: 22px;
}

.msg-style {
  position: relative;
  float: right;
  margin-right: 100px;
}
.msg-style:hover .news-style {
  display: block;
}
.msg-style .num {
  line-height: 100%;
}
::v-deep .msg-style .el-badge__content {
  margin-top: 3px;
  padding: 0 3px;
  /* width: 28px; */
  min-width: 16px;
  height: 16px;
  background: #f2314e;
  text-align: center;
  line-height: 16px;
  font-size: 12px;
  z-index: 3;
}

.nav-style .el-button {
  font-size: 14px;
}
</style>

子页面(message.vue)

<template>
  <div class="news-style">
    <div class="msg">
      <div class="msg-header">消息中心</div>
      <div class="msg-style">
        <div v-if="msglist.length > 0">
          <div class="item" v-for="item in msglist" :key="item.id">
            <span class="blue dot"></span>
            <a
              :href="item.url"
              target="_blank"
              :class="[item.url ? 'title-style' : '', 'title']"
              v-bind:title="msglist.title"
            >
              <span @click="titleFn(item.id)" v-html="item.title"></span>
            </a>
          </div>
        </div>
        <div class="no-item" v-else>
          <span>暂无新消息,去别的地方看看吧~</span>
        </div>
      </div>
      <div class="msg-footer">
        <el-button type="text" @click="markFn" :disabled="msglist.length === 0"> 全部标为已读 </el-button>
        <!-- 跳转 -->
        <a class="link" target="_blank" rel="noreferrer" href="#/">查看全部 <i class="el-icon-arrow-right"></i> </a>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      msglist: [],
      isRead: false
    }
  },
  created() {
    this.informationFn() //信息
  },

  methods: {
    informationFn() {
      // 页面只能先展示2条
      const falselist = {
        num: 2,
        data: [
          {
            title: '宫1',
            id: 'c',
            url: 'https://fanyi.baidu.com/translate#en'
          },
          {
            title: '宫2',
            id: '0',
            url: 'https://www.baidu.com/'
          }
        ]
      }
      this.msglist = falselist.data ? falselist.data : []
      this.$emit('getNums', falselist.num)
    },

    markFn() {
      const ids = this.msglist.map(item => item.id)
      // 调接口
    },
    titleFn(id) {
      // 调接口
    }
  },
  beforeDestroy() {}
}
</script>

<style lang="scss" scoped>
.news-style {
  position: absolute;
  // top: 40px;//这个是为了固定的
  right: -10px;
  display: none;
  background-color: #fff;
  border-radius: 8px;
  box-shadow: 0px 8px 12px 4px rgba(0, 16, 47, 0.05);
  transition: all 0.3s;
}
.news-style .msg {
  position: relative;
  padding: 20px 0px 28px 28px;
  width: 356px;
  height: 313px;
  height: 230px;
}
.msg-header {
  margin-bottom: 25px;
  font-family: PingFangSC-Regular;
  font-size: 16px;
  font-weight: normal;
  line-height: 24px;
  color: #24324c;
}
.msg-style {
  overflow-y: scroll;
  margin-bottom: 64px;
  padding-right: 28px;
  .item {
    display: flex;
    justify-content: start;
    align-items: center;
    height: 40px;
    line-height: 40px;
    border-bottom: 1px solid rgba(#00102f, $alpha: 5%);
    .dot {
      display: inline-block;
      margin-right: 6px;
      min-width: 8px;
      height: 8px;
      border-radius: 50%;
    }
    .title {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-family: PingFangSC-Regular;
      color: #24324c;
    }
    .title-style:hover {
      color: #2662ff;
    }
  }
  .item:last-child {
    border: 0;
  }
}
.msg-style .no-item {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  cursor: default;
  color: #8c93a1;
  img {
    margin: 10px 0 5px 0;
  }
}
.msg-style .item .red {
  background: #ff5959;
}
.msg-style .item .org {
  background: #ff8800;
}
.msg-style .item .blue {
  background: #5987ff;
}
.msg-footer {
  position: absolute;
  bottom: 0;
  margin-bottom: 28px;
  display: flex;
  justify-content: space-between;
  width: 300px;
  line-height: 22px;
  img {
    vertical-align: bottom;
  }
  .link {
    margin-top: 9px;
    color: #2662ff;
  }
  ::v-deep .el-button {
    font-family: PingFangSC-Regular;
    font-size: 14px;
    font-weight: normal;
    color: rgba(0, 16, 47, 0.65);
  }
  ::v-deep .el-button--text.is-disabled {
    color: #bfc3cb;
  }
}
</style>

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

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

相关文章

虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤

在虾皮&#xff08;Shopee&#xff09;平台上进行跨境电商业务&#xff0c;选品是至关重要的一环。有效的选品策略可以帮助卖家更好地了解市场需求&#xff0c;提高销售业绩和客户满意度。以下是一些成功的选品策略&#xff0c;可以帮助卖家在虾皮平台上取得更好的业务成绩。 先…

Unix操作系统的前世今生

Unix是一种多用户、多任务操作系统&#xff0c;最初由AT&T贝尔实验室的肯汤普逊&#xff08;Ken Thompson&#xff09;和丹尼斯里奇&#xff08;Dennis Ritchie&#xff09;等人开发于上世纪70年代初。它被设计成一种通用的操作系统&#xff0c;支持跨多种硬件平台&#xf…

Linux磁盘、网络信息监控、df命令、iostat命令、sar命令

通过df命令可以查看磁盘的使用情况 形式&#xff1a;df [-h] -h&#xff1a;以更加人性化的单位显示 通过iostat命令查看CPU、磁盘的相关信息 形式&#xff1a;iosrtat [-x] [num1] [num2] -x&#xff1a;显示更多信息 num1&#xff1a;刷新间隔 num2&#xff1a;刷新次数…

UAV | 多算法在多场景下的无人机路径规划(Matlab)

近年来&#xff0c;无人机(unmanned aerial vehicle&#xff0c;UAV)由于其灵活度高、机动性强、安全风险系数小、成本低等特点&#xff0c;被广泛应用于搜索巡逻、侦察监视、抢险救灾、物流配送、电力巡检、农业灌溉等军用或民用任务。路径规划是无人机执行任务的关键&#xf…

我的NPI项目之设备系统启动(二) -- 系统启动阶段和分区的区别

系统启动的就几大阶段&#xff1a; 基于高通平台的Android OS启动过程&#xff0c;简单的说&#xff0c;可以分为一下几个部分&#xff1a; 之前一个比较老的平台大概是这样&#xff1a; 现在比较新的5G平台&#xff1a; 差别在这里&#xff0c;重点了解一下新平台的情况。xb…

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…

深度学习 Day24——J3-1DenseNet算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

静态网页设计——宠物狗狗网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1nk4y1X74M/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…

【Java EE初阶六】多线程案例(单例模式)

1. 单例模式 单例模式是一种设计模式&#xff0c;设计模式是我们必须要掌握的一个技能&#xff1b; 1.1 关于框架和设计模式 设计模式是软性的规定&#xff0c;且框架是硬性的规定&#xff0c;这些都是技术大佬已经设计好的&#xff1b; 一般来说设计模式有很多种&#xff0c;…

ROS-arbotix安装

方式一&#xff1a;命令行输入&#xff1a; sudo apt-get install ros-melodic-arbotix如果ROS为其他版本&#xff0c;可将melodic替换为对应版本。 方式二&#xff1a; 先从 github 下载源码&#xff0c;然后调用 catkin_make 编译 git clone https://github.com/vanadiumla…

如何把硬盘(分区)一分为二?重装系统的小伙伴不可不看

注意事项&#xff1a;本教程操作不当会导致数据丢失 请谨慎操作 请谨慎操作 请谨慎操作 前言 相信各位小伙伴都会切土豆吧&#xff0c;本教程就是教大家如何切土豆切得好的教程。 啊哈哈哈&#xff0c;开玩笑的。 比如你有一个D盘是200GB&#xff0c;想要把它变成两个100G…

码农的周末日常---2024/1/6

上周总结 按照规划进行开发&#xff0c;处事不惊&#xff0c;稳稳前行 2024.1.6 天气晴 温度适宜 AM 睡觉前不建议做决定是真的&#xff0c;昨天想着睡到中午&#xff0c;今天九点多醒了&#xff0c;得了&#xff0c;不想睡了 日常三连吧&#xff0c;…

商品加入购物篮后就一定能买到?

笔者今天在某网站购买商品时&#xff0c;将商品添加到购物车之后&#xff0c;耽搁了几分钟之后&#xff0c;就发现支付时提示库存不足&#xff0c;我想很多朋友肯定知道平台为啥这样设计&#xff1f;但是我还是想借着这件事来简单介绍一下&#xff0c;有不足之处&#xff0c;还…

HPM6750开发笔记《DMA接收和发送数据UART例程深度解析》

目录 概述&#xff1a; 端口设置&#xff1a; 代码分析&#xff1a; 运行现象&#xff1a; 概述&#xff1a; DMA&#xff08;Direct Memory Access&#xff09;是一种计算机系统中的数据传输技术&#xff0c;它允许数据在不经过中央处理器&#xff08;CPU&#xff09;的直…

虾皮长尾词工具:如何使用关键词工具优化Shopee产品的长尾关键词

在Shopee&#xff08;虾皮&#xff09;平台上&#xff0c;卖家们都希望能够吸引更多的潜在买家&#xff0c;提高产品的曝光率和转化率。而要实现这一目标&#xff0c;了解和使用长尾关键词是非常重要的。本文将介绍长尾关键词的定义、重要性以及如何使用关键词工具来优化Shopee…

【LeetCode:11. 盛最多水的容器 | 双指针】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

数字孪生在增强现实(AR)中的应用

数字孪生在增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;中的应用可以提供更丰富、交互性更强的现实世界增强体验。以下是数字孪生在AR中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff…

【C++】STL 算法 ④ ( 函数对象与谓词 | 一元函数对象 | “ 谓词 “ 概念 | 一元谓词 | find_if 查找算法 | 一元谓词示例 )

文章目录 一、函数对象与谓词1、一元函数对象2、" 谓词 " 概念3、find_if 查找算法 二、一元谓词示例1、代码示例 - 一元谓词示例2、执行结果 一、函数对象与谓词 1、一元函数对象 " 函数对象 " 是通过 重载 函数调用操作符 () 实现的 operator() , 函数对…

VMware 安装 macOS虚拟机(附工具包)

VMware 安装 macOS虚拟机&#xff0c;在Windows上体验苹果macOS系统&#xff01; 安装教程&#xff1a;VMware 安装 macOS虚拟机VMware Workstation Pro 是一款强大的虚拟机软件&#xff0c;可让您在 Windows 电脑上运行 macOS 系统。只需简单几步操作&#xff0c;即可轻松安装…

什么是Alibaba Cloud Linux?完全兼容CentOS,详细介绍

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…