vue3用js+css实现轮播图(可调整堆叠程度)

先看效果
在这里插入图片描述
html

 <divclass="outer"style="width: 650px;background: #fff;box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.1);border-radius: 15px;margin: 0 10px 15px 5px;">//这里用的是svg-icon,需要的可自行替换为其他图片<svg-iconid="btn_l"class="iconfont"style="cursor: pointer"v-show="imgList.length > 1"name="goleft"></svg-icon><svg-iconid="btn_r"class="iconfont"style="cursor: pointer"@click="frount()"v-show="imgList.length > 1"name="goright"></svg-icon><div class="wrapper" @mouseover="appMouseover()" @mouseout="appMouseout()"><!-- <el-carousel height="300px;" ><el-carousel-item v-for="(item, index) in imgList"  :key="index"><el-image style="width: 100%" :src="item.url" :fit="'fill'" /></el-carousel-item></el-carousel> --><divclass="divImg"v-for="(item, index) in imgList":style="appIsHover && current == index ? appStyle : ''"><img @click="appJump(item, index)" class="image" :src="item.url" /><span class="appName" @click="appJump(item, index)">{{ item.name }}</span></div></div></div>

js

//图片列表
const imgList = ref([{name: '',url: new URL('@/assets/banner3.png', import.meta.url).href},{name: '',url: new URL('@/assets/banner.png', import.meta.url).href},{name: '',url: new URL('@/assets/banner2.png', import.meta.url).href}
])const appStyle = 'width:330px!important;height:220px!important'
//鼠标悬浮时清除自动滚动,2秒后恢复
const appMouseover = (item, index) => {clearInterval(timer)
}
const appMouseout = (item, index) => {if (timer2) {clearTimeout(timer2)}timer2 = setTimeout(() => {autoplay()}, 2000)
}
//点击后直接跳到对应的图片
const appJump = (item, index) => {if (current == index) {}clearInterval(timer)if (timer2) {clearTimeout(timer2)}timer2 = setTimeout(() => {autoplay()}, 2000)current = indexfrount()
}const appJump = (item, index) => {if (current == index) {}clearInterval(timer)if (timer2) {clearTimeout(timer2)}timer2 = setTimeout(() => {autoplay()}, 2000)current = indexfrount()
}var imgs = document.getElementsByClassName('divImg')
var len = imgs.length
var current = 0var timer
var timer2
//页面初始调用
function wrapper() {imgs = document.getElementsByClassName('divImg')len = imgs.lengthcurrent = 0if (len != 0) {frount()bind()}autoplay()
}wrapper()
//点击图片跳转主要方法
function frount() {var mlen = Math.floor(len / 2)var limg, rimgfor (var i = 0; i < mlen; i++) {limg = len + current - i - 1rimg = current + i + 1if (limg >= len) {limg -= len}if (rimg >= len) {rimg -= len}// 这里70为叠加度,可自行调整imgs[limg].style.transform =`translateX(` + -70 * (i + 1) + `px) translateZ(` + (200 - i * 100) + `px) rotateY(30deg)`imgs[rimg].style.transform =`translateX(` + 70 * (i + 1) + `px) translateZ(` + (200 - i * 100) + `px) rotateY(-30deg)`}imgs[current].style.transform = `translateZ(300px)`
}
//给左右箭头添加点击效果
function bind() {// for (var i = 0; i < len; i++) {//     (function (i) {//         imgs[i].onclick = function () {//             current = i;//             frount();//         }//     })(i);// }var btn_l = document.getElementById('btn_l')var btn_r = document.getElementById('btn_r')btn_l.onclick = function () {clearInterval(timer)if (timer2) {clearTimeout(timer2)}timer2 = setTimeout(() => {autoplay()}, 2000)if (current <= 0) {current = len - 1} else {current--}frount()}btn_r.onclick = function () {clearInterval(timer)if (timer2) {clearTimeout(timer2)}timer2 = setTimeout(() => {autoplay()}, 2000)if (current >= len - 1) {current = 0} else {current++}frount()}
}
//自动播放
function autoplay() {timer = setInterval(function () {if (current >= len - 1) {current = 0} else {current++}frount()}, 2000)
}

css

.wrapper .divImg {float: left;width: 300px;height: 150px;position: absolute;left: 0;top: 0;right: 0;bottom: 0;margin: auto;border-radius: 8px;transition: transform 1s ease-in-out, width 0.5s ease-in-out, height 0.5s ease-in-out;cursor: pointer;
}
.wrapper .image {width: 100%;height: 100%;
}
.wrapper .appName {display: inline-block;position: absolute;bottom: 4px;width: 100px;font-size: 15px;color: #3fe2ff;text-align: center;left: calc(50% - 50px);
}.wrapper {position: relative;width: 100%;height: 100%;background-color: none;perspective: 800px;transform-style: preserve-3d;
}
#btn_r {position: absolute;right: 30px;top: 48%;// background: rgba(0, 0, 0, 0.1);border-radius: 50%;width: 30px;height: 30px;z-index: 999; 
}
.outer {color: #fff;position: relative;
}
#btn_l {position: absolute;left: 30px;top: 48%;// background: rgba(0, 0, 0, 0.1);border-radius: 50%;width: 30px;//  opacity: 0.5;height: 30px;z-index: 99999999999;
}

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

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

相关文章

Three.js项目实战:从零搭建小米SU7三维汽车

大家如果有过购车的经验&#xff0c;肯定会先从网站上收集车辆的信息&#xff0c;比如懂车帝&#xff0c;汽车之家&#xff0c;这些网站上逼真的看车效果是如何实现的呢&#xff0c;这节课带你从0-1快速的手搓一个看车小项目。 懂车帝官网 效果 视频教程和笔记 大家可以下方小…

Android13 永久关闭SELinux 权限

永久关闭 SeLinux 在cmdline中增加参数androidboot.selinuxpermissive&#xff1b; 芯片: QCM6115 版本: Android 13 kernel: msm-4.19 ~/temp_code/SLM927D_LA.UM.9.15$ git diff device/qcom/bengal/BoardConfig.mk diff --git a/device/qcom/bengal/BoardConfig.mk b…

Linux创建DHCP服务

Linux可作为DHCP服务端使用&#xff0c;为同一个网络下的其它机器动态分配ip。在一些情况下&#xff0c;可以起到很大的作用。 二级标题 安装dnsmasq # ubuntu sudo apt update -y sudo apt install -y dnsmasq# centos sudo yum install -y dnsmasq修改配置文件 sudo vim …

汽车4G-TBOX智能终端 汽车国标GB/T 32960协议

汽车国标GB/T 32960协议4G TBOX是一种广泛应用于车联网的设备&#xff0c;下面将从不同方面为你详细介绍。 移动管家汽车4G-TBOX智能终端定义与用途 4G TBOX是基于车联网技术智能服务系统中的采集终端。以车云网的4G TBOX_CC750为例&#xff0c;它为整个智能服务系统提供GPS/…

JavaEE-Mybatis初阶

什么是MyBatis MyBatis是⼀款优秀的 持久层 框架&#xff0c;⽤于简化JDBC的开发。 MyBatis本是 Apache的⼀个开源项⽬iBatis&#xff0c;2010年这个项⽬由apache迁移到了google code&#xff0c;并 且改名为MyBatis 。2013年11⽉迁移到Github 创建项目时添加依赖 上面有…

记一次jvm机器问题定位经历

背景 开发过程中发现机器指标异常&#xff0c;端口也hang住无响应&#xff0c;端口返回为timeout&#xff0c;对应探活检测也失败了。 现象 在st测试环节&#xff0c;突然每隔一段时间新接口就hang住无响应&#xff0c;观察机器监控也发现端口探活失败&#xff0c;看机器指标…

【机器学习深度学习】张量基本操作

目录 一、张量基本操作 1.1 执行代码 1.2 运行结果 1.3 代码解析 ✅ 1. 创建张量&#xff08;tensor、randn、zeros&#xff09; ✅ 2. 索引与切片&#xff08;类似 NumPy&#xff09; ✅ 3. 形状变换&#xff08;reshape、转置、压缩&#xff09; ✅ 4. 数学运算&#x…

【微信小程序】8、获取用户当前的地理位置

1、获取当前的地理位置 获取当前的地理位置、速度。当用户离开小程序后&#xff0c;此接口无法调用。开启高精度定位&#xff0c;接口耗时会增加&#xff0c;可指定 highAccuracyExpireTime 作为超时时间。 注意&#xff1a; 地图相关使用的坐标格式应为 gcj02。高频率调用会…

Jenkins 常用定时构建脚本

Jenkins 常用定时构建脚本 Jenkins 使用 cron 风格的语法来配置定时构建任务&#xff0c;以下是常用的定时构建脚本示例和说明&#xff1a; 基本语法 Jenkins 定时构建使用五个字段表示时间&#xff0c;格式为&#xff1a; MINUTE HOUR DOM MONTH DOWMINUTE - 分钟 (0-59)H…

ActiveMQ漏洞复现

以下内容均在nextcyber靶场环境中完成&#xff0c;请勿用于非法途径&#xff01; ActiveMQ 反序列化漏洞&#xff08;CVE-2015-5254&#xff09; Apache ActiveMQ是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息…

环保处理设备远程运维管理解决方案

在环保产业蓬勃发展的当下&#xff0c;环保处理设备厂商面临着愈发激烈的市场竞争。为助力环保处理设备厂商在竞争中脱颖而出&#xff0c;御控工业智能网关打造了一套完善的PLC数据采集设备运维管理平台解决方案。此方案凭借其独特优势&#xff0c;能为环保处理设备厂商带来显著…

嵌入式学习笔记DAY43(ARM架构)

一、RAM分类 sram&#xff08;静态随机存取存储器&#xff09;&#xff1a; 原理&#xff1a;使用晶体管来存储二进制数据0和1&#xff0c;通过双稳态电路&#xff08;由多个晶体管组成&#xff09;来保持数据状态&#xff0c;只要持续供电&#xff0c;数据就能稳定保存。数据读…

2025国际无人机应用及防控大会四大技术专题深度解析

2025国际无人机应用及防控大会四大技术专题深度解析 2025国际无人机应用及防控大会四大技术专题深度解析1 无人机系统技术专题技术特点与应用领域国内领军企业及案例风险挑战与发展方向 2 测控与通信导航技术专题技术创新与应用突破领先企业及解决方案现存问题与发展趋势 3 任务…

DD3118S:USB3.0+Type-c双头TF/SD二合一高速0TG多功能手机读卡器ic

DD3118S封装是QFN42, GL3224封装是QFN32 &#xff0c;设计同样一款3.0读卡方案&#xff0c;GL3213S需要电容、电阻外围器件一起要29颗&#xff0c;而DD3118S只需要13颗&#xff0c;方案精简且设计简单 DD3118S支持USB3.0Type-c双头TF/SD二合一 &#xff0c;高速0TG多功能手机读…

如何在FastAPI中玩转GitHub认证,让用户一键登录?

title: 如何在FastAPI中玩转GitHub认证,让用户一键登录? date: 2025/06/22 09:11:47 updated: 2025/06/22 09:11:47 author: cmdragon excerpt: GitHub第三方认证集成通过OAuth2.0授权码流程实现,包含用户跳转GitHub认证、获取授权码、交换访问令牌及调用API获取用户信息四…

深入JVM:从零到实战,解锁Java性能与调优的终极武器

“什么&#xff1f;你还在写CRUD&#xff1f;面试官问个JVM调优直接哑火&#xff1f;线上服务OOM了只能重启大法&#xff1f;” —— 别慌&#xff0c;掌握JVM&#xff0c;你也能成为团队里的“定海神针”&#xff01; 作为一名Java开发者&#xff0c;无论你是刚入行的新人还是…

MyBatis 中的 resultType 与 resultMap:区别、使用场景及示例详解

目录 一、什么是 resultType 1. 定义 2. 特点 3. 使用场景 4. 示例 示例 1&#xff1a;返回一个实体类对象 对应的 Java 类&#xff1a; 示例 2&#xff1a;返回 Map 集合 返回的每个记录是一个 Map&#xff0c;例如&#xff1a; 二、什么是 resultMap 1. 定义 2. …

Mac安装Apache CXF的时候报错:/Library/Internet: No such file or directory

该问题的原因因为配置的JAVA_HOME环境变量路径中的包括空格字符导致的错误。 一、问题排查 输出当前环境变量 $JAVA_HOME的路径地址&#xff0c;观察路径中是否存在空格 echo $JAVA_HOME二、问题解决 将JAVA_HOME路径改为你安装的jdk路径&#xff0c;注意你的版本号可能与我的会…

npm(或pnpm)时报:证书过期 certificate has expired问题

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 首先安装pnpm npm install -g pnpm //检查安装成功的版本 pnpm -v 在拉芋道管理系统&#xff0c;安装依赖pnpm i 时报证书过期 更改了镜像也一样 解决方案&#xff1a; 提示&#xff1a;这里填写该…

回归预测 | Matlab实现KAN神经网络多输入单输出回归预测模型

回归预测 | Matlab实现KAN神经网络多输入单输出回归预测模型 目录 回归预测 | Matlab实现KAN神经网络多输入单输出回归预测模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 KAN作为这两年最新提出的机制&#xff0c;目前很少人用&#xff0c;很适合作为预测的创新点&…