Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换
使用 Vue 实现全屏焦点图片带图标导航按钮控制图片滑动切换
步骤
- 创建 Vue 项目:可以使用 Vue CLI 快速创建一个新的 Vue 项目。
- 设计组件结构:创建一个包含图片展示区域和导航按钮的组件。
- 实现图片滑动切换逻辑:通过点击导航按钮切换图片。
- 样式设计:设置全屏布局和样式。
代码实现
1. 创建 Vue 项目
首先,确保已经安装了 Vue CLI。如果没有安装,可以使用以下命令进行安装:
npm install -g @vue/cli
然后创建一个新的 Vue 项目:
vue create fullscreen-slider
cd fullscreen-slider
2. 编写组件代码
在 src/components 目录下创建一个 FullscreenSlider.vue 文件,代码如下:
<template><div class="fullscreen-slider"><!-- 图片展示区域 --><div class="slider-container"><!-- 遍历图片列表,显示当前图片 --><img:src="images[currentIndex]"alt="Slider Image"class="slider-image":key="currentIndex"/></div><!-- 导航按钮区域 --><div class="navigation-buttons"><!-- 上一张按钮 --><button @click="prevImage" class="nav-button"><i class="fas fa-chevron-left"></i></button><!-- 下一张按钮 --><button @click="nextImage" class="nav-button"><i class="fas fa-chevron-right"></i></button></div></div>
</template><script>
export default {name: 'FullscreenSlider',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'],// 当前显示的图片索引currentIndex: 0};},methods: {// 切换到上一张图片prevImage() {// 如果当前索引大于 0,则将索引减 1if (this.currentIndex > 0) {this.currentIndex--;} else {// 如果当前索引为 0,则切换到最后一张图片this.currentIndex = this.images.length - 1;}},// 切换到下一张图片nextImage() {// 如果当前索引小于图片列表长度减 1,则将索引加 1if (this.currentIndex < this.images.length - 1) {this.currentIndex++;} else {// 如果当前索引为最后一张图片的索引,则切换到第一张图片this.currentIndex = 0;}}}
};
</script><style scoped>
/* 全屏滑块容器 */
.fullscreen-slider {position: relative;width: 100vw;height: 100vh;overflow: hidden;
}/* 图片容器 */
.slider-container {width: 100%;height: 100%;
}/* 图片样式 */
.slider-image {width: 100%;height: 100%;object-fit: cover;
}/* 导航按钮容器 */
.navigation-buttons {position: absolute;top: 50%;left: 0;right: 0;transform: translateY(-50%);display: flex;justify-content: space-between;padding: 0 20px;
}/* 导航按钮样式 */
.nav-button {background: rgba(0, 0, 0, 0.5);border: none;color: white;font-size: 24px;padding: 10px;cursor: pointer;border-radius: 5px;
}/* 导航按钮悬停效果 */
.nav-button:hover {background: rgba(0, 0, 0, 0.8);
}
</style>
3. 在 App.vue 中使用组件
打开 src/App.vue 文件,将代码替换为以下内容:
<template><div id="app"><!-- 使用 FullscreenSlider 组件 --><FullscreenSlider /></div>
</template><script>
// 引入 FullscreenSlider 组件
import FullscreenSlider from './components/FullscreenSlider.vue';export default {name: 'App',components: {FullscreenSlider}
};
</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>
代码注释说明
-
HTML 部分:
<img>标签用于显示当前图片,通过:src绑定图片链接。<button>标签用于创建导航按钮,通过@click绑定点击事件。
-
JavaScript 部分:
data函数返回一个对象,包含图片列表和当前图片索引。prevImage方法用于切换到上一张图片。nextImage方法用于切换到下一张图片。
-
CSS 部分:
.fullscreen-slider设置全屏布局和溢出隐藏。.slider-image设置图片填充整个容器。.navigation-buttons设置导航按钮的位置和样式。
使用说明
- 运行项目:在项目根目录下运行以下命令启动开发服务器:
npm run serve
- 修改图片:在
FullscreenSlider.vue文件的data函数中,修改images数组,添加或替换图片链接。 - 样式调整:根据需要修改
FullscreenSlider.vue文件中的 CSS 样式,调整布局和外观。
注意事项
- 确保已经安装了 Font Awesome 图标库,用于显示导航按钮的图标。可以在
public/index.html文件中添加以下代码引入:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
相关文章:
Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换
使用 Vue 实现全屏焦点图片带图标导航按钮控制图片滑动切换 步骤 创建 Vue 项目:可以使用 Vue CLI 快速创建一个新的 Vue 项目。设计组件结构:创建一个包含图片展示区域和导航按钮的组件。实现图片滑动切换逻辑:通过点击导航按钮切换图片。…...
Linux系统上安装与配置 MySQL( CentOS 7 )
目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …...
Vue 3 30天精进之旅:Day 10 - Vue Router
在现代单页面应用(SPA)中,路由管理是必不可少的一部分。Vue Router是Vue.js官方的路由管理库,它使得在Vue应用中实现路由变得简单而灵活。今天的学习将围绕以下几个方面展开: Vue Router概述安装和基本配置定义路由路…...
人工智能如何驱动SEO关键词优化策略的转型与效果提升
内容概要 随着数字化时代的到来,人工智能(AI)技术对各行各业的影响日益显著,在搜索引擎优化(SEO)领域尤为如此。AI的应用不仅改变了关键词研究的方法,而且提升了内容生成和搜索优化的效率&…...
keil5如何添加.h 和.c文件,以及如何添加文件夹
1.简介 在hal库的编程中我们一般会生成如下的几个文件夹,在这几个文件夹内存储着各种外设所需要的函数接口.h文件,和实现函数具体功能的.c文件,但是有时我们想要创建自己的文件夹并在这些文件夹下面创造.h .c文件来实现某些功能,…...
BMC PSL function(22)-printf()
printf() 含义:Print text formatted to the C library printf() routine specification Format printf(format,[arg1,......,argn]) Parameter ParameterDefinitionformattext, variable names, and control characters that specify the content and format of output t…...
【数据结构】_复杂度
目录 1. 算法效率 2. 时间复杂度 2.1 时间复杂度概念 2.2 准确的时间复杂度函数式 2.3 大O渐进表示法 2.4 时间复杂度的常见量级 2.5 时间复杂度示例 3. 空间复杂度 3.1 空间复杂度概念 3.2 空间复杂度示例 1. 算法效率 一般情况下,衡量一个算法的好坏是…...
pytorch实现循环神经网络
人工智能例子汇总:AI常见的算法和例子-CSDN博客 PyTorch 提供三种主要的 RNN 变体: nn.RNN:最基本的循环神经网络,适用于短时依赖任务。nn.LSTM:长短时记忆网络,适用于长序列数据,能有效解决…...
Java 16进制 10进制 2进制数 相互的转换
在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑: 性能:使用内置的转换方法,如 Integer.toHexString()、Integer.…...
力扣动态规划-14【算法学习day.108】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
数据结构day02
1 线性表的定义和基本操作 1.1 线性表的定义 分析: 1.1.1 问题一:我们为什么探讨线性表的定义和基本操作 在研究数据结构时,需要重点关注三个方面:逻辑结构、物理结构以及数据的运算。在本节内容里,我们首先来介绍线…...
随笔 | 写在一月的最后一天
. 前言 这个月比预想中过的要快更多。突然回看这一个月,还有点不知从何提笔。 整个一月可以总结为以下几个关键词: 期许,保持期许出现休息 . 期许 关于期许,没有什么时候比一年伊始更适合设立目标和计划的了。但令人惭愧的…...
JVM方法区
一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…...
一文读懂fgc之cms
一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…...
MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
介绍 在开发商品模块时,通常使用分表的方式进行查询以及关联。在通过表连接的方式进行查询。每个商品都有不同的分类,每个不同分类下面都有商品规格可以选择,每个商品分类对应商品规格都有自己的价格和库存。在实际的开发中应该给这些表进行…...
HTB:Administrator[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...
开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…...
FBX SDK的使用:基础知识
Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…...
VisionMamba安装
1.安装python环境 conda create -n mamba python3.10.13 -y conda activate mamba2.安装torch环境 conda install cudatoolkit11.8 -c nvidia pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url https://download.pytorch.org/whl/cu1183.安装其他包 c…...
h2oGPT
文章目录 一、关于 h2oGPT二、现场演示特点 三、开始行动安装h2oGPT拼贴画演示资源文档指南开发致谢为什么选择 H2O.ai?免责声明 一、关于 h2oGPT 使用文档、图像、视频等与本地GPT进行私人聊天。100%私人,Apache 2.0。支持oLLaMa、Mixtral、llama. cpp…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
