当前位置: 首页 > news >正文

Vue.js组件开发-实现图片浮动效果

使用Vue实现图片浮动效果

实现思路

将使用Vue的单文件组件(.vue)来实现图片浮动效果。主要思路是通过CSS的transform属性结合JavaScript的定时器来改变图片的位置,从而实现浮动效果。

代码实现

<template><!-- 定义一个包含图片的容器 --><div class="image-float-container"><!-- 绑定图片的样式,使用内联样式动态设置图片的位置 --><img :style="{ transform: `translate(${xOffset}px, ${yOffset}px)` }" src="https://via.placeholder.com/200" alt="Floating Image"></div>
</template><script>
export default {data() {return {// 初始化图片在x轴上的偏移量xOffset: 0,// 初始化图片在y轴上的偏移量yOffset: 0,// 定时器ID,用于后续清除定时器animationInterval: null};},mounted() {// 当组件挂载到DOM后,开始动画this.startAnimation();},beforeUnmount() {// 在组件销毁前,清除定时器,避免内存泄漏this.stopAnimation();},methods: {startAnimation() {// 设置一个定时器,每隔30毫秒执行一次动画函数this.animationInterval = setInterval(() => {// 调用更新偏移量的函数this.updateOffsets();}, 30);},stopAnimation() {// 清除定时器clearInterval(this.animationInterval);},updateOffsets() {// 定义一个随机偏移量的范围const maxOffset = 10;// 生成一个介于 -maxOffset 到 maxOffset 之间的随机数,更新x轴偏移量this.xOffset += (Math.random() * 2 - 1) * 0.5;// 生成一个介于 -maxOffset 到 maxOffset 之间的随机数,更新y轴偏移量this.yOffset += (Math.random() * 2 - 1) * 0.5;// 限制x轴偏移量在 -maxOffset 到 maxOffset 之间this.xOffset = Math.max(-maxOffset, Math.min(maxOffset, this.xOffset));// 限制y轴偏移量在 -maxOffset 到 maxOffset 之间this.yOffset = Math.max(-maxOffset, Math.min(maxOffset, this.yOffset));}}
};
</script><style scoped>
.image-float-container {/* 设置容器的宽度和高度 */width: 200px;height: 200px;/* 设置容器的相对定位,以便图片可以相对于容器进行定位 */position: relative;/* 隐藏溢出的内容 */overflow: hidden;
}.image-float-container img {/* 设置图片的宽度和高度为100%,使其填满容器 */width: 100%;height: 100%;/* 设置图片的绝对定位,以便可以通过偏移量来移动图片 */position: absolute;/* 设置过渡效果,使图片的移动更加平滑 */transition: transform 0.3s ease-in-out;
}
</style>

代码解释

  1. 模板部分(<template>

    • 定义了一个包含图片的容器image-float-container
    • 使用v-bind指令动态绑定图片的transform样式,根据xOffsetyOffset的值来改变图片的位置。
  2. 脚本部分(<script>

    • data函数返回组件的数据,包括xOffsetyOffsetanimationInterval
    • mounted钩子函数在组件挂载到DOM后调用startAnimation方法开始动画。
    • beforeUnmount钩子函数在组件销毁前调用stopAnimation方法清除定时器,避免内存泄漏。
    • startAnimation方法设置一个定时器,每隔30毫秒调用一次updateOffsets方法。
    • stopAnimation方法清除定时器。
    • updateOffsets方法生成随机的偏移量,并更新xOffsetyOffset的值,同时限制偏移量的范围。
  3. 样式部分(<style>

    • .image-float-container类设置容器的宽度、高度、定位和溢出处理。
    • .image-float-container img类设置图片的宽度、高度、定位和过渡效果,使图片的移动更加平滑。

使用说明

  1. 创建Vue项目:使用Vue CLI创建一个新的项目:
npm install -g @vue/cli
vue create my-project
cd my-project
  1. 替换组件代码:将上述代码复制到src/components目录下的一个新的.vue文件中,例如FloatingImage.vue

  2. App.vue中使用组件

<template><div id="app"><!-- 引入并使用浮动图片组件 --><FloatingImage /></div>
</template><script>
// 导入浮动图片组件
import FloatingImage from './components/FloatingImage.vue';export default {components: {FloatingImage}
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>
  1. 运行项目:在终端中运行以下命令启动开发服务器:
npm run serve

相关文章:

Vue.js组件开发-实现图片浮动效果

使用Vue实现图片浮动效果 实现思路 将使用Vue的单文件组件&#xff08;.vue&#xff09;来实现图片浮动效果。主要思路是通过CSS的transform属性结合JavaScript的定时器来改变图片的位置&#xff0c;从而实现浮动效果。 代码实现 <template><!-- 定义一个包含图片…...

自制Windows系统(十一、Windows11GUI)

开源地址&#xff1a;下载&#xff08;Work(Windows11gui).img&#xff09; 上图 部分代码&#xff1a; void init_screen8(char *vram, int x, int y) { int *fat; unsigned char c; struct MEMMAN *memman (struct MEMMAN *) MEMMAN_ADDR; boxfill8(vram, x, 136, 0, …...

索罗斯的“反身性”(Reflexivity)理论:市场如何扭曲现实?(中英双语)

索罗斯的“反身性”&#xff08;Reflexivity&#xff09;理论&#xff1a;市场如何扭曲现实&#xff1f; 一、引言&#xff1a;市场是镜子&#xff0c;还是哈哈镜&#xff1f; 在传统经济学中&#xff0c;市场通常被认为是一个理性、有效的反映现实的系统。按照经典经济学理论…...

力扣257. 二叉树的所有路径(遍历思想解决)

Problem: 257. 二叉树的所有路径 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 利用先序遍历的思想&#xff0c;我门用一个List变量path记录当前先序遍历的节点&#xff0c;当遍历到根节点时&#xff0c;将其添加到另一个List变量res中&…...

使用朴素贝叶斯对散点数据进行分类

本文将通过一个具体的例子&#xff0c;展示如何使用 Python 和 scikit-learn 库中的 GaussianNB 模型&#xff0c;对二维散点数据进行分类&#xff0c;并可视化分类结果。 1. 数据准备 假设我们有两个类别的二维散点数据&#xff0c;每个类别包含若干个点。我们将这些点分别存…...

如何实现滑动列表功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容&#xff0c;本章回中将介绍SliverList组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件&#xff0c;类似我们之前介…...

计算机网络一点事(22)

地址解析协议ARP ARP&#xff1a;查询Mac地址 ARP表&#xff08;ARP缓存&#xff09;&#xff1a;记录映射关系&#xff0c;一个数据结构&#xff0c;定期更新ARP表 过程&#xff1a;请求分组&#xff0c;响应分组 动态主机配置协议DHCP 分配IP地址&#xff0c;配置默认网关…...

C# 语言基础全面解析

.NET学习资料 .NET学习资料 .NET学习资料 一、引言 C# 是一种功能强大、面向对象且类型安全的编程语言&#xff0c;由微软开发&#xff0c;广泛应用于各种类型的软件开发&#xff0c;从桌面应用、Web 应用到游戏开发等领域。本文将全面介绍 C# 语言的基础知识&#xff0c;帮…...

[原创](Modern C++)现代C++的关键性概念: 流格式化

常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…...

《数据可视化新高度:Graphy的AI协作变革》

在数据洪流奔涌的时代&#xff0c;企业面临的挑战不再仅仅是数据的收集&#xff0c;更在于如何高效地将数据转化为洞察&#xff0c;助力决策。Graphy作为一款前沿的数据可视化工具&#xff0c;凭借AI赋能的团队协作功能&#xff0c;为企业打开了数据协作新局面&#xff0c;重新…...

C++并发:设计无锁数据结构

只要摆脱锁&#xff0c;实现支持安全并发访问的数据结构&#xff0c;就有可能解决大粒度锁影响并发程度以及错误的加锁方式导致死锁的问题。这种数据结构称为无锁数据结构。 在了解本文时&#xff0c;务必读懂内存次序章节。 在设计无锁数据结构时&#xff0c;需要极为小心谨…...

蓝桥杯刷题DAY2:二维前缀和 一维前缀和 差分数组

闪耀的灯光 &#x1f4cc; 题目描述 蓝桥公园是一个适合夜间散步的好地方&#xff0c;公园可以被视为由 n m 个矩形区域构成。每个区域都有一盏灯&#xff0c;初始亮度为 a[i][j]。 小蓝可以选择一个大的矩形区域&#xff0c;并按下开关一次&#xff0c;这将使得该区域内每盏…...

雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能

雷电等基于VirtualBox的Android模拟器映射串口和测试CSerialPort串口功能 1. 修改VirtualBox配置文件映射串口 模拟器配置文件vms/leidian0/leidian.vbox。 在UART标签下增加(修改完成后需要将leidian.vbox修改为只读) <Port slot"1" enabled"true"…...

四、jQuery笔记

(一)jQuery概述 jQuery本身是js的一个轻量级的库,封装了一个对象jQuery,jquery的所有语法都在jQuery对象中 浏览器不认识jquery,只渲染html、css和js代码,需要先导入jQuery文件,官网下载即可 jQuery中文说明文档:https://hemin.cn/jq/ (二)jQuery要点 1、jQuery对象 …...

流浪 Linux: 外置 USB SSD 安装 ArchLinux

注: ArchLinux 系统为滚动更新, 变化很快, 所以本文中的安装方法可能很快就过时了, 仅供参考. 实际安装时建议去阅读官方文档. 最近, 突然 (也没有那么突然) 有了一大堆 PC: 4 个笔记本, 2 个台式主机 (M-ATX 主板), 1 个小主机 (迷你主机). 嗯, 多到用不过来. 但是, 窝又不能…...

1.For New TFLite Beginner

一、 Getting Started for ML Beginners This document explains how to use machine learning to classify (categorize) Iris flowers by species. This document dives deeply into the TensorFlow code to do exactly that, explaining ML fundamentals along the way. If…...

吊打同类软件免费又可批量使用

聊一聊 对于经常用到席卡的人来说&#xff0c;每次打印都觉得麻烦&#xff0c;要是有个软件&#xff0c;直接输入名称就能打印就好了。 这不&#xff0c;只要你想&#xff0c;就肯定能实现&#xff1b;如果没实现&#xff0c;就说明你不够想。 这个软件我测试了下&#xff0…...

MiniMind——跑通项目

文章目录 &#x1f4cc; Quick Start Train MiniMind (ModelScope) # step 1 git clone https://huggingface.co/jingyaogong/minimind-v1# step 2 python 2-eval.py或者启动streamlit&#xff0c;启动网页聊天界面 「注意」需要python>3.10&#xff0c;安装 pip install s…...

单细胞-第五节 多样本数据分析,打分R包AUCell

文件在单细胞\5_GC_py\1_single_cell\3.AUCell.Rmd 1.基因 rm(list = ls()) load("g.Rdata")2.AUCell https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9897923 IF: NA NA NA用这个文章里的方法,将单细胞亚群的marker基因与ros相关基因取交集,用作AUCell的基因集…...

【零拷贝】

目录 一&#xff1a;了解IO基础概念 二&#xff1a;数据流动的层次结构 三&#xff1a;零拷贝 1.传统IO文件读写 2.mmap 零拷贝技术 3.sendFile 零拷贝技术 一&#xff1a;了解IO基础概念 理解CPU拷贝和DMA拷贝 ​ 我们知道&#xff0c;操作系统对于内存空间&…...

ClearerVoice-Studio语音分离实用技巧:分离后各声道说话人身份标注方法

ClearerVoice-Studio语音分离实用技巧&#xff1a;分离后各声道说话人身份标注方法 你是不是也遇到过这种情况&#xff1f;用语音分离工具把一段多人对话音频分成了几个独立的声道&#xff0c;结果看着一堆命名为“output_1.wav”、“output_2.wav”的文件&#xff0c;完全搞不…...

Figma全中文界面解决方案:从安装到精通的实战指南

Figma全中文界面解决方案&#xff1a;从安装到精通的实战指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名中文设计师&#xff0c;你是否曾因Figma全英文界面而在操作时频繁…...

【转子】基于matlab转子型线对机油泵性能影响【含Matlab源码 15264期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…...

YOLOv8鹰眼目标检测实战:一键部署,实时识别80种物体(附WebUI)

YOLOv8鹰眼目标检测实战&#xff1a;一键部署&#xff0c;实时识别80种物体&#xff08;附WebUI&#xff09; 1. 项目概述 1.1 什么是YOLOv8鹰眼目标检测 YOLOv8鹰眼目标检测是基于Ultralytics最新YOLOv8模型的工业级解决方案。它能够在毫秒级别完成图像中多达80类物体的识别…...

Claude Code平替方案实战:如何用第三方API(如DeepSeek、Kimi)低成本玩转AI编程助手

Claude Code平替方案实战&#xff1a;如何用第三方API低成本玩转AI编程助手 在AI编程助手领域&#xff0c;Claude Code凭借其出色的代码理解和生成能力赢得了不少开发者的青睐。然而&#xff0c;官方API的高昂成本和访问限制让许多预算有限的个人开发者和小团队望而却步。本文将…...

3步解锁ZTE ONU工厂模式:高效实用的网络设备管理完整指南

3步解锁ZTE ONU工厂模式&#xff1a;高效实用的网络设备管理完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否曾经面对ZTE ONU设备的管理界面感到束手无策&#xff1f;想…...

Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里

引言:最后一公里的旅程 如果把 Android 音频系统比作一条物流网络,那么 AudioFlinger 是"中央分拣中心",AudioPolicy 是"路由规划师",而 Audio HAL(Hardware Abstraction Layer)就是最终把包裹送到用户手里的"快递员"。 前几篇我们聊了 …...

PyTorch模型调试神器:用TensorBoard+torchsummary快速定位网络结构问题

PyTorch模型调试神器&#xff1a;用TensorBoardtorchsummary快速定位网络结构问题 当你在PyTorch中构建复杂的神经网络时&#xff0c;是否经常遇到以下困扰&#xff1a;模型训练时突然报出维度不匹配的错误&#xff0c;却不知道具体是哪一层出了问题&#xff1f;或者模型参数数…...

极客玩法:OpenClaw+Qwen3-14B控制智能家居实战

极客玩法&#xff1a;OpenClawQwen3-14B控制智能家居实战 1. 为什么选择OpenClaw控制智能家居&#xff1f; 去年装修新房时&#xff0c;我给自己定了个小目标&#xff1a;所有智能设备必须能通过自然语言控制。市面上的语音助手总让我觉得"差点意思"——要么响应慢…...

非参数回归实战:从理论到Python实现

1. 非参数回归&#xff1a;当数据拒绝被简单定义时 记得第一次接触回归分析时&#xff0c;老师用"用直线拟合数据点"来解释线性回归。但当我把这个方法用在实际项目中时&#xff0c;发现很多数据根本不像教科书里画的那样规整。那些弯弯曲曲的数据点&#xff0c;像是…...