elementplus card 悬浮菜单的实现

 更新时间:2023年07月03日 09:50:23   作者:东方fan  
本文主要介绍了elementplus card 悬浮菜单的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

业务上需要实现一个功能,以卡片形式显示机器列表,当悬浮到卡片上时,在卡片上方向上滑出操作菜单。经过一番尝试总算实现了。效果如下:

悬浮菜单

<script setup lang="ts">
import { useRouter } from 'vue-router'
import { ElCard, ElRow, ElCol, ElProgress, ElIcon, ElButton } from 'element-plus'
import { ref } from 'vue'
const router = useRouter()
const visible = ref(false)
const monitor = (e: any) => {
  router.push('/dashboard/workplace')
  e.stopPropagation()
}
const control = (e: any) => {
  window.open('http://localhost:6080/vnc.html')
  e.stopPropagation()
}
</script>
<template>
  <el-row>
    <el-card
      class="box-card"
      shadow="hover"
      @click="monitor"
      @mouseleave="visible = !visible"
      @mouseenter="visible = !visible"
    >
      <el-row justify="center"><Icon icon="svg-icon:windows" :size="40" /></el-row>
      <el-row class="row" justify="center">主机1</el-row>
      <el-row class="row" align="middle">
        <el-col :span="6" class="text">CPU</el-col>
        <el-col :span="18">
          <el-progress :percentage="50" />
        </el-col>
      </el-row>
      <el-row class="row" align="middle">
        <el-col :span="6" class="text">内存</el-col>
        <el-col :span="18">
          <el-progress :percentage="50" />
        </el-col>
      </el-row>
      <el-row class="row" align="middle">
        <el-col :span="6" class="text">硬盘</el-col>
        <el-col :span="18">
          <el-progress :percentage="50" />
        </el-col>
      </el-row>
      <transition name="slide">
        <div class="card-pop-menu" v-show="visible">
          <el-row>
            <el-col :span="12">
              <ElButton type="primary" plain @click="monitor">监控</ElButton>
            </el-col>
            <el-col :span="12">
              <ElButton type="primary" plain>编辑</ElButton>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <ElButton type="primary" plain @click="control">控制台</ElButton>
            </el-col>
            <el-col :span="12">
              <ElButton type="danger" plain>删除</ElButton>
            </el-col>
          </el-row>
        </div>
      </transition>
    </el-card>
    <el-card class="box-card" shadow="hover">
      <el-row justify="center" align="middle" style="height: 200px">
        <el-icon color="#409EFC" size="40">
          <Plus />
        </el-icon>
      </el-row>
    </el-card>
  </el-row>
</template>
<style lang="less" scoped>
.box-card {
  width: 240px;
  height: 240px;
  margin: 0 20px 20px 0;
  .row {
    margin-top: 14px;
  }
  .text {
    font-size: 14px;
  }
  .card-pop-menu {
    border-width: 1px 0 0 0;
    position: relative;
    top: -34px;
    width: 238px;
    height: 88px;
    margin: -20px;
    button {
      width: 100%;
      height: 44px;
      border-width: 0;
      border-radius: 0;
    }
  }
}
.slide-enter-active {
  transition: all 0.2s linear;
}
.slide-leave-active {
  transition: all 0.2s linear;
}
.slide-enter-from,
.slide-leave-to {
  transform: translateY(88px);
}
</style>

补:使用el-card第一行没有对齐解决方法

当使用element plus的el-card组件时候,第一行和后面会没有对齐。

  <el-row>
    <el-col v-for="(o, index) in 10" :key="o" :span="6" :offset="index >= 0 ? 2 : 0">
      <el-card :body-style="{ padding: '0px' }">
          <img
            src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png"
            class="image"
          />
        <div style="padding: 14px">
          <span>Yummy hamburger</span>
          <div class="bottom">
            <time class="time">{{ currentDate }}</time>
            <el-button text class="button">Operating</el-button>
          </div>
        </div>
      </el-card>
    </el-col>
  </el-row>

原因是el-col添加了offset列偏移。第一项没有偏移。将其改成:

<el-col v-for="(o, index) in 10" :key="o" :span="6" :offset="index >= 0 ? 1 : 0">

 到此这篇关于elementplus card 悬浮菜单的实现的文章就介绍到这了,更多相关elementplus card 悬浮菜单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue向下滚动加载更多数据scroll案例详解

    Vue向下滚动加载更多数据scroll案例详解

    这篇文章主要介绍了Vue向下滚动加载更多数据scroll案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Vue常见报错整理大全(从此报错不害怕)

    Vue常见报错整理大全(从此报错不害怕)

    写代码的过程中一定会遇到报错,遇到报错不要担心,认真分析就可以解决报错,同时积累经验,早日成为大牛,这篇文章主要给大家介绍了关于Vue常见报错整理的相关资料,需要的朋友可以参考下
    2022-08-08
  • Vue表格组件Vxe-table使用技巧总结

    Vue表格组件Vxe-table使用技巧总结

    这篇文章主要给大家介绍了关于Vue表格组件Vxe-table使用技巧的相关资料,文中还介绍了VXEtable展示指定行所遇到得问题,对大家学习或者使用Vxe-table具有一定的参考学习价值,需要的朋友可以参考下
    2022-09-09
  • validate 注册页的表单数据校验实现详解

    validate 注册页的表单数据校验实现详解

    这篇文章主要为大家介绍了validate 注册页的表单数据校验实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue 实现搜索的结果页面支持全选与取消全选功能

    vue 实现搜索的结果页面支持全选与取消全选功能

    这篇文章主要介绍了vue 实现搜索的结果页面支持全选与取消全选功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Vue+elementUI el-input输入框手机号校验功能

    Vue+elementUI el-input输入框手机号校验功能

    这篇文章主要介绍了Vue+elementUI el-input输入框手机号校验功能,限制input框内只能输入数字,且为11位,通过实例代码介绍了对输入手机号做校验的方法,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • vue3路由配置以及路由跳转传参详解

    vue3路由配置以及路由跳转传参详解

    路由跳转的同时传递参数是比较常见的,下面这篇文章主要给大家介绍了关于vue3路由配置以及路由跳转传参的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • vue路由实现登录拦截

    vue路由实现登录拦截

    这篇文章主要介绍了vue路由如何实现登录拦截,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-03-03
  • 一文搞懂Vue3中toRef和toRefs的区别

    一文搞懂Vue3中toRef和toRefs的区别

    toRef 和 toRefs都是Vue3 中的响应式转换工具函数,换句话说,toRef 和 toRefs 就是用来创建响应式的引用的,主要用来取出响应式对象里的属性,或者解构响应式对象,本文小编就来带大家搞清楚Vue3中toRef和toRefs的区别,需要的朋友可以参考下
    2023-09-09
  • vue实现简单跑马灯效果

    vue实现简单跑马灯效果

    这篇文章主要为大家详细介绍了vue实现简单跑马灯效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论