返回

从零开始使用 Vue 3 和 Canvas 实现哔哩哔哩首页 banner

前端

前言

前段时间,我在闲暇之余无意间发现哔哩哔哩弹幕网的首页 banner 换了,而且人物的眼睛还会一眨一眨的,鼠标移上去会有景深和位移的变化。这引起了我的好奇心,于是按 F12 观察了一波,发现这个效果是通过几张图片配合 CSS 实现的。

刚好最近 Vue 3.0 发布了,想搞个小项目练练手,就把这个项目提上了日程。本篇文章将详细介绍如何使用 Vue 3 和 Canvas 实现哔哩哔哩首页 banner。从获取原始图片到使用 Canvas 渲染,再到使用 CSS 实现位移和景深效果,本文将手把手教你一步步完成这个项目的制作。无论是作为前端开发人员还是对动画感兴趣的人,这篇文章都将为你提供有价值的信息和实操指南。

一、准备工作

在开始之前,我们需要先准备一些必要的工具和材料:

  • Node.js(用于安装和运行 Vue 3)
  • Vue 3 CLI(用于快速搭建 Vue 项目)
  • 几张原始图片(可从哔哩哔哩首页 banner 获取)
  • 代码编辑器(如 Visual Studio Code)

二、搭建 Vue 项目

  1. 安装 Node.js

确保你的电脑已经安装了 Node.js。如果没有,请前往 Node.js 官网下载并安装。

  1. 安装 Vue 3 CLI

在命令行中运行以下命令安装 Vue 3 CLI:

npm install -g @vue/cli
  1. 创建 Vue 项目

在命令行中运行以下命令创建一个新的 Vue 项目:

vue create vue-bilibili-banner
  1. 进入项目目录

进入刚创建的项目目录:

cd vue-bilibili-banner

三、获取原始图片

我们需要从哔哩哔哩首页 banner 获取原始图片。为此,我们可以使用 Chrome 浏览器的开发人员工具。

  1. 打开哔哩哔哩首页

在 Chrome 浏览器中打开哔哩哔哩首页。

  1. 按 F12 打开开发人员工具

在 Chrome 浏览器中,按 F12 打开开发人员工具。

  1. 找到 banner 图片的 URL

在开发人员工具的 Network 面板中,找到 banner 图片的 URL。

  1. 下载原始图片

右键单击 banner 图片的 URL,选择 "Copy link address"。然后,在命令行中运行以下命令下载原始图片:

wget https://example.com/banner.png

四、使用 Canvas 渲染图片

现在,我们已经获得了原始图片,接下来我们需要使用 Canvas 将它们渲染出来。

  1. 在 Vue 项目中创建 Canvas 组件

在 Vue 项目的 src 目录下,创建一个名为 Canvas.vue 的文件。这个文件将作为 Canvas 组件。

  1. 在 Canvas 组件中添加 Canvas 元素

在 Canvas.vue 文件中,添加以下代码:

<template>
  <canvas ref="canvas" width="1920" height="1080"></canvas>
</template>

<script>
export default {
  data() {
    return {
      canvas: null,
      ctx: null
    };
  },
  mounted() {
    this.canvas = this.$refs.canvas;
    this.ctx = this.canvas.getContext('2d');
    // 在这里渲染图片
  }
};
</script>
  1. 在 Canvas 组件中渲染图片

在 Canvas 组件的 mounted() 方法中,我们可以使用 Canvas API 来渲染图片。

// 在这里渲染图片
const image = new Image();
image.onload = () => {
  this.ctx.drawImage(image, 0, 0);
};
image.src = require('@/assets/banner.png');

五、使用 CSS 实现位移和景深效果

现在,我们已经将图片渲染到 Canvas 上了,接下来我们需要使用 CSS 来实现位移和景深效果。

  1. 在 Vue 项目中添加 CSS 文件

在 Vue 项目的 src 目录下,创建一个名为 style.css 的文件。这个文件将作为 CSS 文件。

  1. 在 CSS 文件中添加 CSS 代码

在 style.css 文件中,添加以下代码:

.canvas-container {
  position: relative;
  width: 1920px;
  height: 1080px;
  overflow: hidden;
}

.canvas {
  position: absolute;
  left: 0;
  top: 0;
}

.canvas-cursor {
  position: absolute;
  left: 0;
  top: 0;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background-color: #000;
  opacity: 0.5;
  pointer-events: none;
}
  1. 在 Vue 项目的 main.js 文件中引入 CSS 文件

在 Vue 项目的 main.js 文件中,添加以下代码来引入 CSS 文件:

import './style.css';

六、运行项目

现在,我们已经完成了所有的步骤,接下来可以运行项目了。

在命令行中运行以下命令运行项目:

npm run serve

然后,在浏览器中打开 http://localhost:8080 即可看到效果。

结语

本文详细介绍了如何使用 Vue 3 和 Canvas 实现哔哩哔哩首页 banner。从获取原始图片到使用 Canvas 渲染,再到使用 CSS 实现位移和景深效果,本文手把手教你一步步完成这个项目的制作。无论你是作为前端开发人员还是对动画感兴趣的人,这篇文章都将为你提供有价值的信息和实操指南。

希望这篇文章对你有帮助。如果你有任何问题或建议,欢迎在评论区留言。