Vue.js组件开发-实现全屏图片文字缩放切换特效
使用 Vue 实现全屏图片文字缩放切换特效
步骤
- 创建 Vue 项目:使用 Vue CLI 来快速创建一个新的 Vue 项目。
- 设计组件结构:创建一个包含图片和文字的组件,并实现缩放和切换效果。
- 实现样式:使用 CSS 来实现全屏显示、缩放和切换动画。
- 编写 JavaScript 逻辑:处理图片和文字的切换,以及缩放效果的控制。
代码实现
1. 创建 Vue 项目
首先,确保已经安装了 Vue CLI。如果没有安装,可以使用以下命令进行安装:
npm install -g @vue/cli
然后创建一个新的 Vue 项目:
vue create fullscreen-image-text-switcher
cd fullscreen-image-text-switcher
2. 编写组件代码
在 src/components 目录下创建一个名为 FullscreenImageTextSwitcher.vue 的文件,内容如下:
<template><div class="fullscreen-container"><!-- 显示当前图片 --><img :src="currentImage" alt="Fullscreen Image" class="fullscreen-image" :style="{ transform: `scale(${scale})` }"><!-- 显示当前文字 --><div class="fullscreen-text" :style="{ transform: `scale(${scale})` }">{{ currentText }}</div><!-- 上一张按钮 --><button @click="prevSlide" class="nav-button prev-button">Prev</button><!-- 下一张按钮 --><button @click="nextSlide" class="nav-button next-button">Next</button></div>
</template><script>
export default {data() {return {// 图片数组images: ['https://via.placeholder.com/1920x1080?text=Image+1','https://via.placeholder.com/1920x1080?text=Image+2','https://via.placeholder.com/1920x1080?text=Image+3'],// 文字数组texts: ['This is the first slide.','This is the second slide.','This is the third slide.'],// 当前图片和文字的索引currentIndex: 0,// 缩放比例scale: 1};},computed: {// 获取当前图片的 URLcurrentImage() {return this.images[this.currentIndex];},// 获取当前文字内容currentText() {return this.texts[this.currentIndex];}},methods: {// 切换到上一张图片和文字prevSlide() {this.animateScale();this.currentIndex = (this.currentIndex - 1 + this.images.length) % this.images.length;},// 切换到下一张图片和文字nextSlide() {this.animateScale();this.currentIndex = (this.currentIndex + 1) % this.images.length;},// 实现缩放动画animateScale() {this.scale = 0.8;setTimeout(() => {this.scale = 1;}, 300);}}
};
</script><style scoped>
.fullscreen-container {position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;
}.fullscreen-image {position: absolute;top: 0;left: 0;width: 100%;height: 100%;object-fit: cover;transition: transform 0.3s ease;
}.fullscreen-text {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);color: white;font-size: 24px;text-align: center;transition: transform 0.3s ease;
}.nav-button {position: absolute;top: 50%;transform: translateY(-50%);background-color: rgba(0, 0, 0, 0.5);color: white;border: none;padding: 10px 20px;cursor: pointer;z-index: 10;
}.prev-button {left: 20px;
}.next-button {right: 20px;
}
</style>
3. 在 App.vue 中使用组件
打开 src/App.vue 文件,将其内容替换为以下代码:
<template><div id="app"><!-- 使用 FullscreenImageTextSwitcher 组件 --><FullscreenImageTextSwitcher /></div>
</template><script>
// 引入 FullscreenImageTextSwitcher 组件
import FullscreenImageTextSwitcher from './components/FullscreenImageTextSwitcher.vue';export default {name: 'App',components: {FullscreenImageTextSwitcher}
};
</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>
代码注释
-
模板部分:
<img>标签用于显示当前图片,通过:src绑定currentImage数据,transform样式根据scale数据实现缩放效果。<div>标签用于显示当前文字,同样通过transform样式实现缩放效果。<button>标签用于切换上一张和下一张图片和文字,分别绑定prevSlide和nextSlide方法。
-
脚本部分:
data函数返回组件的数据,包括图片数组、文字数组、当前索引和缩放比例。computed属性用于计算当前图片和文字的内容。methods包含切换图片和文字的方法prevSlide和nextSlide,以及实现缩放动画的方法animateScale。
-
样式部分:
.fullscreen-container设置为全屏显示,并隐藏溢出内容。.fullscreen-image和.fullscreen-text使用transition属性实现缩放动画。.nav-button设置导航按钮的样式。
使用说明
- 启动开发服务器:在项目根目录下运行以下命令启动开发服务器。
npm run serve
- 访问应用:打开浏览器,访问
http://localhost:8080,即可看到全屏图片文字缩放切换特效。 - 切换图片和文字:点击页面左右两侧的
Prev和Next按钮,即可切换图片和文字,并触发缩放动画。
相关文章:
Vue.js组件开发-实现全屏图片文字缩放切换特效
使用 Vue 实现全屏图片文字缩放切换特效 步骤 创建 Vue 项目:使用 Vue CLI 来快速创建一个新的 Vue 项目。设计组件结构:创建一个包含图片和文字的组件,并实现缩放和切换效果。实现样式:使用 CSS 来实现全屏显示、缩放和切换动画…...
360嵌入式开发面试题及参考答案
解释一下 802.11ax 和 802.11ac/n 有什么区别 速度与带宽 802.11n 支持的最高理论速率为 600Mbps,802.11ac 进一步提升,单流最高可达 866.7Mbps,多流情况下能达到更高,如 1.3Gbps 等。而 802.11ax(Wi-Fi 6)引入了更多先进技术,理论最高速率可达 9.6Gbps,相比前两者有大…...
python recv的概念和使用案例
recv 是网络编程中用于从套接字接收数据的核心函数,常见于 TCP/UDP 通信。以下是其概念、用法和案例详解: 概念 作用:从已连接(TCP)或已绑定(UDP)的套接字接收数据。参数: bufsize:…...
白话DeepSeek-R1论文(三)| DeepSeek-R1蒸馏技术:让小模型“继承”大模型的推理超能力
最近有不少朋友来询问Deepseek的核心技术,陆续针对DeepSeek-R1论文中的核心内容进行解读,并且用大家都能听懂的方式来解读。这是第三篇趣味解读。 DeepSeek-R1蒸馏技术:让小模型“继承”大模型的推理超能力 当大模型成为“老师”,…...
Web3.js详解
Web1&Web2&Web3 以下是Web1、Web2和Web3的详细介绍,以及一个对比表格: Web1 定义:Web1指的是有着固定内容的非许可的开源网络。特点:在Web1时代,网站内容主要由网站管理员或创建者提供,用户只能…...
jvm - GC篇
如何减慢一个对象进入老年代的速度,如何降低GC的次数 堆内存细分 年轻代(Young Generation): 新创建的对象首先被分配在年轻代中。年轻代又被进一步划分为一个Eden区和两个Survivor区(通常称为S0和S1)。…...
vue2项目(一)
项目介绍 电商前台项目 技术架构:vuewebpackvuexvue-routeraxiosless.. 封装通用组件登录注册token购物车支付项目性能优化 一、项目初始化 使用vue create projrct_vue2在命令行窗口创建项目 1.1、脚手架目录介绍 ├── node_modules:放置项目的依赖 ├──…...
【Leetcode 热题 100】64. 最小路径和
问题背景 给定一个包含非负整数的 m n m \times n mn 网格 g r i d grid grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 数据约束 m g r i d . l e n g t h m grid.lengt…...
[LeetCode]day9 203.移除链表元素
203. 移除链表元素 - 力扣(LeetCode) 题目描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], v…...
Recommender Systems with Large Models
一、引言 信息爆炸时代,用户面临信息过载,传统推荐系统依赖经典算法,难以满足需求。大模型基于深度学习,经大规模预训练,具备强大能力,能实现更精准推荐,为推荐系统发展开辟新路径。 二、大模…...
TOF技术原理和静噪对策
本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、什么是TOF TOF 是Time of Flight的缩写,它是一种通过利用照射波和反射波之间的时间差来测量到物体的距离的测…...
MongoDB常见的运维工具总结介绍
MongoDB 提供了一些强大的运维工具,帮助管理员进行数据库监控、备份、恢复、性能优化等操作。以下是一些常见的 MongoDB 运维工具及其功能介绍: 1. MongoDB Atlas 功能:MongoDB Atlas 是 MongoDB 官方的云托管数据库服务,它提供…...
B-树:解锁大数据存储和与快速存储的密码
在我们学习数据结构的过程中,我们会学习到二叉搜索树、二叉平衡树、红黑树。 这些无一例外,是以一个二叉树展开的,那么对于我们寻找其中存在树中的数据,这个也是一个不错的方法。 但是,如若是遇到了非常大的数据容量…...
园区智能化系统实现管理与服务的智能化转型与创新进阶
内容概要 园区智能化系统的出现,标志着管理与服务向智能化转型的重要一步。这一系统不仅仅是一个技术解决方案,更是一个全面提升园区运营效率与安全性的独特工具。通过集成大数据分析、物联网和人工智能,园区智能化系统能够为各类园区如工业…...
【Java异步编程】CompletableFuture实现:异步任务的串行执行
文章目录 一. thenApply():转换计算结果1. 一个线程中执行或多个线程中执行2. 使用场景说明 二. thenRun():执行无返回值的操作1. 语法说明2. 使用场景说明 三. thenAccept():消费计算结果1. 语法说明a. 前后任务是否在一个线程中执行b. 要点…...
工业相机如何获得更好的图像色彩
如何获得更好的图像色彩 大部分的工业自动化检测中对物体的色彩信息并不敏感,因此会使用黑白的相机,但是在显微镜成像、颜色分类识别等领域,相机的色彩还原就显得格外重要,在调节相机色彩方面的参数时,有以下几个方面需…...
Python获取能唯一确定一棵给定的树的最少数量的拓扑序列
称一个 1 1 1~ n n n的排列 { p } { p 1 , p 2 , ⋯ , p n } \{p\}\{p_1,p_2,\cdots,p_n\} {p}{p1,p2,⋯,pn}是一棵n个点、点编号为 1 1 1至 n n n的树 T T T的拓扑序列,当且仅对于任意 1 ≤ i < n 1\leq i<n 1≤i<n,恰好存在唯一的 j &…...
PyTorch中的movedim、transpose与permute
在PyTorch中,movedim、transpose 和 permute这三个操作都可以用来重新排列张量(tensor)的维度,它们功能相似却又有所不同。 movedim 🔗 torch.movedim 用途:将张量的一个或多个维度移动到新的位置。参数&…...
C#面试常考随笔7:什么是匿名⽅法?还有Lambda表达式?
匿名方法本质上是一种没有显式名称的方法,它可以作为参数传递给需要委托类型的方法,常用于事件处理、回调函数等场景,能够让代码更加简洁和紧凑。 使用场景 事件处理:在处理事件时,不需要为每个事件处理程序单独定义…...
四、jQuery笔记
(一)jQuery概述 jQuery本身是js的一个轻量级的库,封装了一个对象jQuery,jquery的所有语法都在jQuery对象中 浏览器不认识jquery,只渲染html、css和js代码,需要先导入jQuery文件,官网下载即可 jQuery中文说明文档:https://hemin.cn/jq/ (二)jQuery要点 1、jQuery对象 …...
SQL进阶实战技巧:如何构建用户行为转移概率矩阵,深入洞察会话内活动流转?
目录 1 场景描述 1.1 用户行为转移概率矩阵概念 1.2 用户行为转移概率矩阵构建方法 (1) 数据收集...
TCP/IP 协议:互联网通信的基石
TCP/IP 协议:互联网通信的基石 引言 TCP/IP协议,全称为传输控制协议/互联网协议,是互联网上应用最为广泛的通信协议。它定义了数据如何在网络上传输,是构建现代互联网的基础。本文将深入探讨TCP/IP协议的原理、结构、应用以及其在互联网通信中的重要性。 TCP/IP 协议概述…...
第25节课:前端缓存策略—提升网页性能与用户体验
目录 前端缓存的重要性HTTP缓存HTTP缓存的基本原理常见的HTTP缓存头Cache-ControlExpiresETagLast-Modified HTTP缓存的类型强缓存协商缓存 服务端渲染与SSR服务端渲染(SSR)简介SSR的优势SSR的挑战实践:使用SSR框架构建Web应用Next.js安装Nex…...
完美世界C++游戏开发面试题及参考答案
堆栈数据结构有什么区别,举例说明 栈(Stack)和堆(Heap)是两种不同的数据结构,它们在多个方面存在显著区别: 存储方式 栈:栈是一种后进先出(LIFO)的数据结构,它的存储空间是连续的。栈由系统自动分配和释放,用于存储函数调用时的局部变量、函数参数、返回地址等信息…...
LabVIEW无人机航线控制系统
介绍了一种无人机航线控制系统,该系统利用LabVIEW软件与MPU6050九轴传感器相结合,实现无人机飞行高度、速度、俯仰角和滚动角的实时监控。系统通过虚拟仪器技术,有效实现了数据的采集、处理及回放,极大提高了无人机航线的控制精度…...
AtCoder Beginner Contest 391(ABCDE)
A - Lucky Direction 翻译: 给你一个字符串 D,代表八个方向(北、东、西、南、东北、西北、东南、西南)之一。方向与其代表字符串之间的对应关系如下。 北: N东: E西: W南: S东…...
MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…...
HTB:LinkVortex[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用gobuster对靶机进行路径FUZZ 使用ffuf堆靶机…...
3D图形学与可视化大屏:什么是材质属性,有什么作用?
一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时,一部分光被均匀地向各个方向散射,形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如,一个红色的漫反射颜色会使物体在…...
什么是门控循环单元?
一、概念 门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN),由Cho等人在2014年提出。GRU是LSTM的简化版本,通过减少门的数量和简化结构,保留了LSTM的长时间依赖…...
