返回

React全家桶搭建Web音乐App实战(四):专辑页开发及动画效果实现

前端

前言

在上一节中,我们已经完成了推荐页面的开发。这一节,我们将继续深入学习,重点讲解专辑页的开发及其动画效果的实现,包括进入动画和图片拉伸动画。话不多说,先让我们一起来看看效果图吧!

  1. 打开chrome浏览器,在地址栏输入QQ音乐官网:https://y.qq.com
  2. 打开后点击专辑。这个时候会弹出一个新的窗口,直接关闭它。
  3. 回到刚才的开发者工具,可以看到有一个请求,这个请求就是专辑页的请求。

专辑页开发

  1. 创建专辑页组件

首先,我们需要创建一个专辑页组件。在src文件夹中创建一个新的文件Album.js,并输入以下代码:

import React, { useState, useEffect } from "react";
import { useParams } from "react-router-dom";

const Album = () => {
  const { id } = useParams();
  const [album, setAlbum] = useState(null);

  useEffect(() => {
    fetch(`https://api.example.com/albums/${id}`)
      .then((res) => res.json())
      .then((data) => setAlbum(data));
  }, [id]);

  if (!album) {
    return <div>Loading...</div>;
  }

  return (
    <div className="album-page">
      <div className="album-cover">
        <img src={album.coverUrl} alt={album.name} />
      </div>
      <div className="album-info">
        <h1>{album.name}</h1>
        <p>{album.artist}</p>
        <p>{album.year}</p>
      </div>
      <div className="album-tracks">
        <ul>
          {album.tracks.map((track) => (
            <li key={track.id}>{track.name}</li>
          ))}
        </ul>
      </div>
    </div>
  );
};

export default Album;
  1. 注册专辑页组件

接下来,我们需要在App.js文件中注册专辑页组件。在<Switch>组件中添加以下代码:

<Route path="/albums/:id" component={Album} />

进入动画

  1. 安装动画库

首先,我们需要安装一个动画库来实现进入动画。这里我们使用react-transition-group库。在终端中输入以下命令:

npm install react-transition-group
  1. 导入动画库

Album.js文件中,导入react-transition-group库。

import { CSSTransition } from "react-transition-group";
  1. 添加动画类

Album.js文件中,在<div className="album-page">上添加fade-in类。

<div className="album-page fade-in">
  1. 创建动画样式

src文件夹中创建一个新的文件animations.css,并输入以下代码:

.fade-in {
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
}

.fade-in-active {
  opacity: 1;
}

图片拉伸动画

  1. 添加图片拉伸动画类

Album.js文件中,在<img src={album.coverUrl} alt={album.name} />上添加stretch类。

<img src={album.coverUrl} alt={album.name} className="stretch" />
  1. 创建动画样式

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

.stretch {
  transform: scale(1);
  transition: transform 0.5s ease-in-out;
}

.stretch-active {
  transform: scale(1.2);
}

结语

至此,我们就完成了专辑页的开发及其动画效果的实现。在本节中,我们学习了如何使用React全家桶构建一个Web音乐App,重点讲解了专辑页的开发及其动画效果的实现,包括进入动画和图片拉伸动画。希望本节的内容对您有所帮助,如果您有任何问题,欢迎随时提问。