位置: IT常识 - 正文

JavaScript实现背景图像切换3D动画效果(javascript背景图片怎么导入)

编辑:rootadmin
原力计划JavaScript实现背景图像切换3D动画效果

推荐整理分享JavaScript实现背景图像切换3D动画效果(javascript背景图片怎么导入),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎么用js设置html的背景图片,怎么用js设置html的背景图片,javascript背景图片,javascript背景,javascript背景,javascript背景图片,javascript背景图片,javascript怎么设置背景图,内容如对您有帮助,希望把文章链接给更多的朋友!

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端学习交流:博主建立了一个前端交流群,汇集了各路大神,一起交流学习,期待你的加入!(文末有我wx或者私信)。

目录一、项目需求二、代码实现三、问题一、项目需求

给一张长图,长图中有好多个图像,图像的动作是连续的,当鼠标在容器内移动时,背景图像会随之切换,呈现出连续的动画效果,实现效果类似于3D动画,用JS怎么实现?以下是实现效果。 示例图片如下,可拿去自己测试:

二、代码实现<body><div id="container"></div><style>#container {width: 462.99px;//单个图像的宽度height: 260.433px;//单个图像高度background-image: url('https://www.yuucn.com/wp-content/uploads/2023/05/1683927707-2561c98a1454a94.jpeg');background-repeat: no-repeat;background-size: 6944.88px 260.433px;//参数讲解在最后}</style><script>const container = document.getElementById('container');let currentIndex = 0;container.addEventListener('mousemove', (event) => {const containerRect = container.getBoundingClientRect();const mouseOffsetX = event.clientX - containerRect.left;const imageCount = 15; // 图像的数量const imageWidth = 462.99; // 单个图像的宽度const index = Math.floor(mouseOffsetX / (containerRect.width / imageCount));currentIndex = Math.min(Math.max(index, 0), imageCount - 1);const positionX = currentIndex * imageWidth;container.style.backgroundPosition = `-${positionX}px 0`;});</script></body>

1.先获取container的

JavaScript实现背景图像切换3D动画效果(javascript背景图片怎么导入)

currentIndex 用于存储当前背景图像的索引值,初始值为 0。 如果鼠标在容器的左边缘,则索引为 0;如果鼠标在容器的右边缘,则索引为图像数量减 1。 Math.min(Math.max(index, 0), imageCount - 1)将计算出来的索引值限制在 0 到 imageCount - 1 的范围,防止出现索引越界。如果计算出所以为imageCount,那么最终计算出的索引是imageCount-1

mousemove mousemove 事件监听器,鼠标在某元素上移动时触发,在事件处理函数中实现了图像切换的逻辑。

getBoundingClientRect(点击查看MDN详细讲解) 用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。提供了元素的大小及其相对于视口的位置,具体如下所示:

top: 元素上边距离页面上边的距离left: 元素右边距离页面左边的距离right: 元素右边距离页面左边的距离bottom: 元素下边距离页面上边的距离width: 元素宽度height: 元素高度

mouseOffsetX 获取鼠标偏移量。在事件处理函数中,首先获取了容器元素相对于视口的位置(containerRect.left;)和鼠标移动处到浏览器窗口的横距离(clientX)来计算鼠标偏移量。

imageCount 长图中图像的数量,示例图片中是15个图像

imageWidth 单个图片的宽度

index 当前显示的图像索引。containerRect.width / imageCount意思是将容器的宽度除以图像数量,从而得到每个图像的宽度。Math.floor(mouseOffsetX / (containerRect.width / imageCount))将鼠标偏移量除以每个图像的宽度,从而得到应该显示的图像的索引。

positionX 当前图像应该显示的位置。 currentIndex * imageWidth当前图像索引和单个图像宽度计算得出。

最后通过修改容器元素的 backgroundPosition 样式属性实现了背景图像的切换效果。

三、问题为什么background-size设置为6944.88px 260.433px? background-size 属性用于设置背景图像的大小。将长图分割成了 15 个等宽的部分,每个部分都代表了不同的状态或者场景。background-size属性被设置为 6944.88px 260.433px,意味着图像被缩放成了水平方向的 6944.88px 和垂直方向的 260.433px。这个值的计算方法是将单个图像的宽度(462.99px)乘以图像的数量(15)得到的。 因此,background-size 属性的值被设置为 6944.88px 260.433px,使得图像在容器内能够按照原本的宽高比例进行缩放,同时也确保了每个图像都能够完整地显示在容器中。
本文链接地址:https://www.jiuchutong.com/zhishi/297473.html 转载请保留说明!

上一篇:【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一(2023年第十一批专项债)

下一篇:深度学习的通道到底是什么?有什么用?(小白可看)

  • iqoo8pro怎么反向充电(vivo手机反向充电怎么开启)

    iqoo8pro怎么反向充电(vivo手机反向充电怎么开启)

  • 知乎怎么开通直播权限(知乎怎么开通个人作品)

    知乎怎么开通直播权限(知乎怎么开通个人作品)

  • 华为 Mate X2 的前置摄像头的像素是多少

    华为 Mate X2 的前置摄像头的像素是多少

  • 飞行堡垒wifi功能消失了(飞行堡垒wifi功能消失了,就一个飞行模式)

    飞行堡垒wifi功能消失了(飞行堡垒wifi功能消失了,就一个飞行模式)

  • 西瓜视频为什么没有收益(西瓜视频为什么看不了了)

    西瓜视频为什么没有收益(西瓜视频为什么看不了了)

  • 闲鱼禁言七天怎样解决(闲鱼禁言七天怎么解封)

    闲鱼禁言七天怎样解决(闲鱼禁言七天怎么解封)

  • 小米10搜不到蓝牙耳机(小米10搜不到蓝牙耳机设备)

    小米10搜不到蓝牙耳机(小米10搜不到蓝牙耳机设备)

  • 照片打不开显示内存已满怎么回事(照片打不开显示内存不足怎么办)

    照片打不开显示内存已满怎么回事(照片打不开显示内存不足怎么办)

  • oppo官方系统升级(oppo官方更新系统)

    oppo官方系统升级(oppo官方更新系统)

  •  thinkpad红色按钮是干什么的(thinkpad红色按钮掉了)

    thinkpad红色按钮是干什么的(thinkpad红色按钮掉了)

  • 快手用wifi怎么看不了(快手连接wifi)

    快手用wifi怎么看不了(快手连接wifi)

  • wifi红灯一直闪没网络怎么办(wifi红灯一直闪是什么意思)

    wifi红灯一直闪没网络怎么办(wifi红灯一直闪是什么意思)

  • word怎么退出全屏显示(word怎么退出全部重排窗口)

    word怎么退出全屏显示(word怎么退出全部重排窗口)

  • 华为应用分身qq文件夹在哪(华为应用分身权限)

    华为应用分身qq文件夹在哪(华为应用分身权限)

  • soul自闭中是什么意思(soul自闭模式别人会看到我吗)

    soul自闭中是什么意思(soul自闭模式别人会看到我吗)

  • 替换功能所在的选项卡是(替换功能所在的菜单是)

    替换功能所在的选项卡是(替换功能所在的菜单是)

  • 手机投屏电视怎么弄(手机投屏电视怎样放大满屏)

    手机投屏电视怎么弄(手机投屏电视怎样放大满屏)

  • ipad可以用u盘吗(ipad可以用优盘吗)

    ipad可以用u盘吗(ipad可以用优盘吗)

  • 怎样把pdf拆分(怎样把pdf拆分成图片)

    怎样把pdf拆分(怎样把pdf拆分成图片)

  • 微信封号怎么解除(微信封号怎么解开啊)

    微信封号怎么解除(微信封号怎么解开啊)

  • 步数宝邀请好友加成最高多少(步数宝怎么用)

    步数宝邀请好友加成最高多少(步数宝怎么用)

  • 13.0ios什么时候发布(iphone 13什么时候)

    13.0ios什么时候发布(iphone 13什么时候)

  • mate20和p30区别(mate20跟p30哪个性价比高)

    mate20和p30区别(mate20跟p30哪个性价比高)

  • ipad有手电筒功能吗(ipad有手电筒功能怎么弄)

    ipad有手电筒功能吗(ipad有手电筒功能怎么弄)

  • 千牛挂起与不挂起区别(千牛挂起能收到消息吗)

    千牛挂起与不挂起区别(千牛挂起能收到消息吗)

  • Linux怎么开启tomcat中日志的gc设置?(linux怎么开启远程)

    Linux怎么开启tomcat中日志的gc设置?(linux怎么开启远程)

  • Fedora Linux下安装套件的方法(fedora23安装)

    Fedora Linux下安装套件的方法(fedora23安装)

  • 关于安装完vue脚手架后找不到vue问题(怎么安装vue-cli脚手架)

    关于安装完vue脚手架后找不到vue问题(怎么安装vue-cli脚手架)

  • 混合销售行为如何缴纳增值税税率
  • 赞助支出计入
  • 划拨土地使用权出租
  • 股东出售子公司股权的会计处理?
  • 一般计税预缴增值税3%怎么办
  • 速达建账套期初数据
  • 缺少订单停工费用如何做账
  • 企业所得税不预缴年终汇算可以吗
  • 加盟费是怎么回事
  • 收到投资款如何写凭证
  • 数量金额式明细账模板
  • 增值税预缴税金交错了怎么办
  • 建筑工程勘察费占设计费的比例
  • 经营租赁不动产发票备注栏
  • 开租金发票可以提前开的吗?
  • 增值税的税负率的计算公式
  • 公司自用房屋怎样交税
  • 活动策划费属于哪一类
  • 外贸出口的进项可以抵扣吗
  • 研发产品样品对我出售账务处理
  • 企业的营业外收入包括
  • 财务部水电费会计分录
  • 税率调整后合同金额变更案例
  • 副调基金的会计分录怎么做?
  • 金蝶迷你版不能期末结账怎么办
  • 桌面图标变成了一张纸
  • 少数股东权益怎么填
  • 电脑bios打开usb接口
  • 没有抵扣的增值税怎么做账
  • windows没有搜索
  • 企业车辆按揭的利弊分析
  • 购入研发设备
  • 本月未抵扣完的进项税是否转出
  • 建筑业预缴企业所得税是分季预缴按年抵减吗
  • windows11 beta渠道
  • 预算周转金会计怎么做账
  • 存货的采购成本包括
  • 初级农产品免税普票能否抵扣
  • 物流费属于什么税目
  • php过滤字符
  • node更新到最新版本
  • 前端实际开发
  • 因质量问题对方直接扣款怎么处理
  • 销售货物免税
  • 帝国cms常见的英文
  • zabbix 网络监控
  • 筹资费用可以算成本吗
  • 工资薪金所得适用的税率是
  • 以前年度损益调整属于哪类科目
  • 收到所得税退税现金流量选哪个
  • 代扣缴纳税款会计分录
  • 小微企业金融免税政策
  • 固定资产的入账价值包括进口关税吗
  • 捐赠,广告宣传费,业务招待费如何调整
  • 当月暂估入账跨月怎么算
  • 贴现凭证如何做账务处理
  • 给客户减免的货款怎么做账
  • 预付账款的会计处理
  • 购进货物的发票确认定虚开,所得税处理
  • 增值税系统技术维护费 减免政策
  • 企业整个月没有缴纳社保
  • 登记总分类账的依据有
  • 财务会计与预算会计差异如何处理
  • mysql 创建root用户和普通用户及修改删除功能
  • win2008远程桌面闪退
  • mac快捷键使用
  • linux系统开机黑屏啥也没有
  • 2021年win10累积更新
  • win7系统如何查看内存条型号
  • cocos2dx游戏开发教程
  • javascript总结
  • jquery操作html代码
  • linux系统mysql自动备份并使用ftp上传的方法
  • Linux系统安装字体
  • win安装nodejs
  • AssetBundle.Unload(false)的作用
  • 如何解决android兼容问题
  • 甘肃省张掖市国家储备林
  • 重庆新电子税务局入口
  • 海员证办理流程需要什么手续时间多长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设