我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue3实现抽奖模板设置

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue3实现抽奖模板设置

本文实例为大家分享了vue3实现抽奖模板设置的具体方法,供大家参考,具体内容如下

效果图

代码

<template>
  <div>
    <h4>抽奖模板设置</h4>

    <div class="container">
      <ul class="ul-box">
        <li
          v-for="(item,index) in list"
          :key="item.id"
          @click.stop="handleClickItem(item,index)"
        >
          {{item.id}}-{{item.title}}
        </li>
      </ul>

      <div
        class="pop-box"
        v-show="visible"
      >
        <div
          class="popup"
          :style="{left:clickIndexList[0]+'px',top:clickIndexList[1]+'px'}"
        >
          <span><em></em></span>
          <div>
            <p
              class="p-title"
              v-for="(item) in selectList"
              :key="item.id"
              @click.stop="handleChoose(item)"
            >{{item.title}}</p>
          </div>
        </div>
      </div>
    </div>

  </div>

</template>
<script lang="ts">
import { defineComponent, reactive, toRefs, onMounted } from 'vue';
const WIDTH = 100;
export default defineComponent({
  name: 'test',
  components: {},
  setup() {
    const state = reactive({
      list: [
        { id: 1 },
        { id: 2 },
        { id: 3 },
        { id: 4 },
        { id: 5, title: '抽奖' },
        { id: 6 },
        { id: 7 },
        { id: 8 },
        { id: 9 },
      ],
      selectList: [
        { id: 1, title: '谢谢参与' },
        { id: 2, title: 'iphone13' },
        { id: 3, title: '领克06' },
        { id: 4, title: '华为p40' },
      ],
      visible: false,
      clickIndexList: [],
      clickIndex: 0,
    });

    const xyList = [
      [0, 0],
      [WIDTH, 0],
      [WIDTH * 2, 0],
      [0, WIDTH],
      [WIDTH, WIDTH],
      [WIDTH * 2, WIDTH],
      [0, WIDTH * 2],
      [WIDTH, WIDTH * 2],
      [WIDTH * 2, WIDTH * 2],
    ];

    const hide = () => {
      state.visible = false;
    };

    onMounted(() => {
      document.addEventListener('click', hide);
    });

    const handleClickItem = (item, index) => {
      if (index === 4) {
        return;
      }
      state.clickIndexList = xyList[index];
      state.clickIndex = index;
      state.visible = true;
    };

    const handleChoose = (item) => {
      state.list[state.clickIndex].title = item.title;
      hide();
    };

    return {
      handleClickItem,
      hide,
      handleChoose,
      ...toRefs(state),
    };
  },
});
</script>
<style lang="less" scoped>
.container {
  position: relative;

  .ul-box {
    display: flex;
    flex-wrap: wrap;
    width: 300px;
    li {
      width: 100px;
      height: 100px;
      background: pink;
      border: 1px solid #fff;
      display: flex;
      justify-content: center;
      align-items: center;
      cursor: pointer;
    }
  }
  .p-title {
    margin: 0;
    min-width: 150px;
    font-size: 14px;
    line-height: 1.4;
    padding: 10px 20px;
    cursor: pointer;
  }
  .p-title:hover {
    background: #e6ebf5;
  }

  .pop-box .popup {
    width: 200px;
    background: #fff;
    color: #333;
    border-radius: 4px;
    position: absolute;
    top: 30px;
    left: 30px;
    border: 1px solid #e6ebf5;
    margin-left: -50px;
    margin-top: 60px;
    z-index: 9999;
    animation: left 1s;
  }
  .pop-box .popup span {
    display: block;
    width: 0;
    height: 0;
    border-width: 0 10px 10px;
    border-style: solid;
    border-color: transparent transparent #e6ebf5;
    position: absolute;
    top: -10px;
    left: 50%; 
    margin-left: -10px; 
  }
  .pop-box .popup em {
    display: block;
    width: 0;
    height: 0;
    border-width: 0 10px 10px;
    border-style: solid;
    border-color: transparent transparent #fff;
    position: absolute;
    top: 1px;
    left: -10px;
  }
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue3实现抽奖模板设置

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于vue3实现一个抽奖小项目

在公司年会期间我做了个抽奖小项目,非常棒,今天把他分享到脚本之家平台,供大家学习参考,对vue3实现抽奖小项目感兴趣的朋友一起看看吧
2023-01-28

PHP抽奖系统设计与实现详解

PHP抽奖系统设计与实现详解一、概述抽奖活动是许多网站和应用都会使用的一种营销手段,通过抽奖可以吸引用户参与活动,增加用户互动性,提升用户粘性。在本文中,我们将详细介绍如何使用PHP语言来设计和实现一个简单的抽奖系统。通过本文的学习,读者
PHP抽奖系统设计与实现详解
2024-03-01

.Net设计模式之抽象工厂模式怎么实现

这篇文章主要讲解了“.Net设计模式之抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net设计模式之抽象工厂模式怎么实现”吧!一、动机(Motivation)在软件系统
2023-06-30

C++ 函数模板详解:助力 OOP 设计模式的实现

函数模板在 c++++ 中实现了 oop 设计模式,其好处包括:代码重用:通用代码可用于多种数据类型,减少重复代码。类型安全性:编译器确保类型有效,提高可靠性。可扩展性:通过创建新实例轻松添加新类型。在 C++ 中使用函数模板实现 OOP
C++ 函数模板详解:助力 OOP 设计模式的实现
2024-04-27

微信小程序模板与设置WXML实例讲解

这篇文章主要介绍了微信小程序模板与设置WXML,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

Java桥梁设计模式优雅地将抽象与实现分离

Java桥接设计模式通过将抽象和实现分离,使得它们可以独立地变化,从而实现更灵活的代码结构。它是一种优雅的设计模式,适用于需要处理多个变化因素的复杂应用程序
2023-05-17

Android打印机--小票打印格式及模板设置实例代码

小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式需要去查询对应打印机的API文档,这里我把常用的api给封装了一下文字对齐方式打印字体大小字体是否加粗打印二维码打印条形码切纸打开钱箱字符串转字节数组字符拼接 PrintForm
2022-06-06

java设计模式的依赖倒置原则怎么实现

这篇文章主要讲解了“java设计模式的依赖倒置原则怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java设计模式的依赖倒置原则怎么实现”吧!依赖倒置原则(Dependence Inv
2023-06-17

PyTorch中dropout设置训练和测试模式的实现示例

这篇文章主要介绍PyTorch中dropout设置训练和测试模式的实现示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!看代码吧~class Net(nn.Module):…model = Net()…model.t
2023-06-15

编程热搜

目录