vue3 选中对话框时对话框右侧出一个箭头效果

 更新时间:2024年10月28日 14:36:13   作者:你好龙卷风  
本文主要介绍了Vue3实现选中对话框带箭头效果的方法,首先通过后台获取数据进行遍历,利用ts代码判断选中下标与循环游标是否一致以改变样式,感兴趣的朋友一起看看吧

vue3 选中对话框时对话框右侧出一个箭头

先看下做出的效果:

html代码,其中listPlan.records是后台拿到的数据进行遍历

<template>
 <ul class="list">
          <li  style="height: 180px;width: 95%"
            :key="index"
            v-for="(item, index) in listPlan.records"
            :style="liStyle(index)"
            @click="selectItem(index,item.id)" >
            <span v-if="selectedIndex === index" class="shixin"></span>
            <span v-if="selectedIndex === index" class="kongxin"></span>
            <div   class="notice">
              <div class="fsPnameDiv">
                <div  class="fsPname" >
                    {{ item.fsPname }}
                </div>
                <div v-if="item.fsStatus=='00'" style="color: #0a8fe9">
                  <span class="ant-badge-status-dot" style="background: rgb(68, 160, 239);"></span>
                  激活
                </div>
                <div v-if="item.fsStatus!='00'" style="color: rgb(208 213 217)">
                  <span class="ant-badge-status-dot" style="background: rgb(208 213 217);"></span>
                   禁用
                </div>
              </div>
              <div style="margin-top: 5px">
                每隔{{ item.fsExecinterval }}  {{ item.fsExecintervaltype  }} 执行一次
              </div>
              <div style="margin-top: 5px">
                创建时间:{{ item.createTime }}
              </div>
            </div>
          </li>
        </ul>
</template>

ts代码

原理:选中时判断比较选中的下标是和循环中的游标一致改变样式

let planId=null;
// 当前选中的索引
const selectedIndex = ref(-1);
// 动态生成 li 的样式
const liStyle = (index: number) => {
  return {
    border: '1px solid #ccc', // 添加边框
    borderRadius: '5px',
    padding: '10px', // 内边距
    margin: '5px 0', // 外边距
    cursor: 'pointer', // 鼠标指针样式
    position: 'relative', // 相对定位,用于放置箭头
    borderLeft: selectedIndex.value === index ? '2px solid rgb(9 95 240)' : '1px solid #ccc', // 选中时的框样式
    borderBottom: selectedIndex.value === index ? '2px solid rgb(9 95 240)' : '1px solid #ccc',
    borderTop: selectedIndex.value === index ? '2px solid rgb(9 95 240)' : '1px solid #ccc',
    borderRight: selectedIndex.value === index ? '2px solid rgb(9 95 240)' : '1px solid #ccc',
  };
};

css

原理:无大小的div设置30px的边框全透明,再单独设置要显示一侧边框的颜色和大框一致

<style lang="less" scoped>
.notice{
  align-items: flex-start;
  display: flex;
  flex-direction: column;
  padding: 8px 8px 12px;
}
.shixin {
  border: 10px solid transparent;
  border-left-color: #095ff0;
  position: absolute;
  top: 45%;
  right: -20px;
}
.kongxin {
  border: 10px solid transparent;
  border-left-color: #fff;
  position: absolute;
  top: 45%;
  right: -18px;
}
</style>

下面给大家介绍通过css画出带箭头的提示框效果,感兴趣的朋友一起看看吧

通过css画出带箭头的提示框

一、画出一个提示框

<div id="notice">
</div>
#notice {
            width: 150px;
            height: 175px;
            border: 1px solid #9D9D9D;
            /* 移动到屏幕中间 方便查看*/
            position: relative;
            left: 50%;
            right: 50%;
        }

效果

二、画出一个实心箭头

原理:无大小的div设置30px的边框全透明,再单独设置要显示一侧边框的颜色和大框一致

<div id="notice">
  <div id="shixin"></div>
</div>
#shixin {
            border: 30px solid transparent;
            border-right-color: #9D9D9D; /*颜色和#notice框一致*/
            position: absolute;
            top: 10px;
            left: -60px;
        }

三、用一个空心div覆盖在上面,只漏出1px的左边两个边

<div id="notice">
        <div id="shixin"></div>
        <div id="kongxin"></div>
  </div>
#kongxin {
            border: 30px solid transparent;
            border-right-color: #fff;
            position: absolute;
            top: 10px;
            left: -59px; /**/
        }

完整代码

<style>
        #notice {
            width: 150px;
            height: 175px;
            border: 1px solid #9D9D9D;
            /* 移动到屏幕中间 方便查看*/
            position: relative;
            left: 50%;
            right: 50%;
        }
        #shixin {
            border: 30px solid transparent;
            border-right-color: #9D9D9D; /*和#notice框一致*/
            position: absolute;
            top: 10px;
            left: -60px;
        }
        #kongxin {
            border: 30px solid transparent;
            border-right-color: #fff; /*空心,和背景色一致*/
            position: absolute;
            top: 10px;
            left: -59px; /*和实心框错开1px 漏出箭头左边两边*/
        }
    </style>
 <div id="notice">
        <div id="shixin"></div>
        <div id="kongxin"></div>
  </div>

到此这篇关于vue3 选中对话框时对话框右侧出一个箭头效果的文章就介绍到这了,更多相关vue3对话框右侧出一个箭头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue实现分页功能

    vue实现分页功能

    这篇文章主要为大家详细介绍了vue实现分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue 如何处理防止按钮重复点击问题

    vue 如何处理防止按钮重复点击问题

    这篇文章主要介绍了vue 如何处理防止按钮重复点击问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue3自己封装面包屑功能组件的几种方式

    vue3自己封装面包屑功能组件的几种方式

    网站中我们经常看到有个导航路径,可以直观地显示当前页面的路径,并快速返回之前的任意页面,这是一个非常实用的功能,也是在Web前端必备的导航UI之一,这篇文章主要给大家介绍了关于vue3自己封装面包屑功能组件的几种方式,需要的朋友可以参考下
    2021-09-09
  • vue中根据时间戳判断对应的时间(今天 昨天 前天)

    vue中根据时间戳判断对应的时间(今天 昨天 前天)

    这篇文章主要介绍了vue中 根据时间戳 判断对应的时间(今天 昨天 前天),需要的朋友可以参考下
    2019-12-12
  • Vue2.0 v-for filter列表过滤功能的实现

    Vue2.0 v-for filter列表过滤功能的实现

    今天小编就为大家分享一篇Vue2.0 v-for filter列表过滤功能的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue3删除过滤器的原因

    vue3删除过滤器的原因

    去年,vue3出来了。增加了很多新功能,但是也删掉了一些功能。比如删掉了vue2中的过滤器filter功能。与此同时,官方建议:用方法调用或计算属性替换过滤器。本文将分析vue3删除过滤器的原因及如何用其他方法实现过滤器的功能
    2021-05-05
  • vue项目中仿element-ui弹框效果的实例代码

    vue项目中仿element-ui弹框效果的实例代码

    这篇文章主要介绍了vue项目中仿element-ui弹框效果的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue的生命周期操作示例

    Vue的生命周期操作示例

    这篇文章主要介绍了Vue的生命周期操作,结合实例形式分析了vue生命周期中各个函数的运行步骤,需要的朋友可以参考下
    2019-09-09
  • vue+elementUI实现内嵌table的方法示例

    vue+elementUI实现内嵌table的方法示例

    本文主要介绍了vue+elementUI实现内嵌table的方法示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • vue2.0项目中使用Ueditor富文本编辑器示例代码

    vue2.0项目中使用Ueditor富文本编辑器示例代码

    本篇文章主要介绍了vue2.0项目中使用Ueditor富文本编辑器示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08

最新评论