Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换

news/2025/2/1 6:37:47 标签: vue.js, 前端, javascript

使用 Vue 实现全屏焦点图片带图标导航按钮控制图片滑动切换

步骤

  1. 创建 Vue 项目:可以使用 Vue CLI 快速创建一个新的 Vue 项目。
  2. 设计组件结构:创建一个包含图片展示区域和导航按钮的组件。
  3. 实现图片滑动切换逻辑:通过点击导航按钮切换图片。
  4. 样式设计:设置全屏布局和样式。

代码实现

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,则将索引减 1
      if (this.currentIndex > 0) {
        this.currentIndex--;
      } else {
        // 如果当前索引为 0,则切换到最后一张图片
        this.currentIndex = this.images.length - 1;
      }
    },
    // 切换到下一张图片
    nextImage() {
      // 如果当前索引小于图片列表长度减 1,则将索引加 1
      if (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 设置导航按钮的位置和样式。

使用说明

  1. 运行项目:在项目根目录下运行以下命令启动开发服务器:
npm run serve
  1. 修改图片:在 FullscreenSlider.vue 文件的 data 函数中,修改 images 数组,添加或替换图片链接。
  2. 样式调整:根据需要修改 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">

http://www.niftyadmin.cn/n/5839085.html

相关文章

2025-1-28-sklearn学习(47) (48) 万家灯火亮年至,一声烟花开新来。

文章目录 sklearn学习(47) & (48)sklearn学习(47) 把它们放在一起47.1 模型管道化47.2 用特征面进行人脸识别47.3 开放性问题: 股票市场结构 sklearn学习(48) 寻求帮助48.1 项目邮件列表48.2 机器学习从业者的 Q&A 社区 sklearn学习(47) & (48) 文章参考网站&…

riscv xv6学习笔记

文章目录 前言util实验sleeputil实验pingpongutil实验primesxv6初始化代码分析syscall实验tracesyscall实验sysinfoxv6内存学习笔记pgtbl实验Print a page tablepgtbl实验A kernel page table per processxv6 trap学习trap实验Backtracetrap实验Alarmlazy实验Lazy allocationxv…

计算机网络一点事(21)

第四章 网络层 功能&#xff1a;服务传输层&#xff0c;封装ip数据报&#xff08;主机到主机&#xff09; IP地址以32b表示&#xff0c;以8b为一组记十进制数 异构网络互连&#xff1a;网络结构&#xff0c;主机类型不同 路由器相互配合出IP数据报生成表&#xff0c;根据表…

Git 出现 Please use your personal access token instead of the password 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 1. 问题所示 执行Git提交代码的时候,出现如下所示: lixiaosong@IT07 MINGW64 /f/java_project/JavaDemo (master) $ git push -u origin --all libpng warning: iCCP: known incorrect sRGB profile libpng warning

数据完整性-03

一个数据库通常代表一个完整的业务单元&#xff0c;内部包含多张表&#xff0c;每张表用于存储相关的数据。为了确保数据的准确性和有效性&#xff0c;在创建表时&#xff0c;可以通过设置字段的类型和约束条件&#xff0c;来强制验证和限制数据的存储方式&#xff0c;从而保证…

SQL NOW() 函数详解

SQL NOW() 函数详解 引言 在SQL数据库中&#xff0c;NOW() 函数是一个常用的日期和时间函数&#xff0c;用于获取当前的时间戳。本文将详细介绍 NOW() 函数的用法、参数、返回值以及在实际应用中的注意事项。 函数概述 NOW() 函数返回当前的日期和时间&#xff0c;格式为 Y…

DDD - 微服务架构模型_领域驱动设计(DDD)分层架构 vs 整洁架构(洋葱架构) vs 六边形架构(端口-适配器架构)

文章目录 引言1. 概述2. 领域驱动设计&#xff08;DDD&#xff09;分层架构模型2.1 DDD的核心概念2.2 DDD架构分层解析 3. 整洁架构&#xff1a;洋葱架构与依赖倒置3.1 整洁架构的核心思想3.2 整洁架构的层次结构 4. 六边形架构&#xff1a;解耦核心业务与外部系统4.1 六边形架…

如何在 ACP 中建模复合罐

概括 本篇博文介绍了 ANSYS Composite PrepPost (ACP) 缠绕向导。此工具允许仅使用几个条目自动定义高压罐中常见的悬垂复合结构。 ACP 绕线向导 将必要的信息输入到绕组向导中。重要的是要注意“参考半径”&#xff0c;它代表圆柱截面的半径&#xff0c;以及“轴向”&#x…