码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue3项目关于轮播图的封装应该怎么封装才是最简单的呢


    在Vue3中,可以使用组合API和ref来封装一个简单的轮播图组件。以下是一个基本的封装示例:

    1. <template>
    2. <div class="carousel">
    3. <div v-for="item in items" :key="item.id" :style="{ backgroundImage: `url(${item.imageUrl})` }" :class="{ active: item.id === currentIndex }"></div>
    4. </div>
    5. </template>
    6. <script>
    7. import { ref, onMounted, onUnmounted } from 'vue'
    8. export default {
    9. props: {
    10. dataList: {
    11. type: Array,
    12. default: () => []
    13. },
    14. interval: {
    15. type: Number,
    16. default: 3000
    17. }
    18. },
    19. setup(props) {
    20. const currentIndex = ref(0)
    21. let timer = null
    22. const items = props.dataList.map((item, index) => ({
    23. ...item,
    24. id: index
    25. }))
    26. const stop = () => {
    27. clearInterval(timer)
    28. timer = null
    29. }
    30. const start = () => {
    31. timer = setInterval(() => {
    32. currentIndex.value = (currentIndex.value + 1) % items.length
    33. }, props.interval)
    34. }
    35. onMounted(() => {
    36. start()
    37. })
    38. onUnmounted(() => {
    39. stop()
    40. })
    41. return {
    42. items,
    43. currentIndex
    44. }
    45. }
    46. }
    47. </script>
    48. <style>
    49. .carousel {
    50. position: relative;
    51. width: 100%;
    52. height: 100%;
    53. overflow: hidden;
    54. }
    55. .carousel > div {
    56. position: absolute;
    57. top: 0;
    58. left: 0;
    59. width: 100%;
    60. height: 100%;
    61. background-size: cover;
    62. background-position: center center;
    63. opacity: 0;
    64. transition: opacity 0.5s ease-in-out;
    65. }
    66. .carousel > div.active {
    67. opacity: 1;
    68. }
    69. </style>

    在模板中,使用v-for来遍历数据列表,并根据currentIndex来设置当前展示的轮播图。

    在setup中,使用ref来定义currentIndex和timer变量。在onMounted和onUnmounted钩子中,分别启动和停止轮播循环。

    最后在样式中,定义基本的轮播图样式。

  • 相关阅读:
    呕血回顾一次提高接口并发的经历,很实用
    【Python自然语言处理】使用逻辑回归(logistic)对电影评论情感分析实战(超详细 附源码)
    力扣解法汇总1175-质数排列
    突破供应链管理瓶颈,SCM供应链协同系统提升冷链物流行业整体供应链协同效率
    BioVendor人Clara细胞蛋白(CC16)Elisa试剂盒检测步骤
    【架构艺术】(零) 环境搭建
    基于象鼻虫损害优化算法求解装箱问题附Matlab代码
    10段实用Python代码,帮我省了几万块钱
    ArcGIS计算地形湿度指数
    Java高并发系列: 使用wait - notify实现高效异步方法
  • 原文地址:https://blog.csdn.net/qq_70036866/article/details/133165142
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号