首页 > 其他分享 >如何使用TypeScript和Styled-Components构建图像轮播组件

如何使用TypeScript和Styled-Components构建图像轮播组件

时间:2023-06-06 09:46:22浏览次数:49  
标签:TypeScript const 轮播 title Components props 组件 Banner 我们

近年来,OTT(over-the-top)视频流媒体平台变得更加创新和易于使用。在他们的用户界面中,电影和连续剧的标题排列得清晰可见。

在本教程中,我将指导您完成创建图像轮播组件的过程,该组件看起来就像您在许多 OTT 平台(想想 Netflix)上看到的一样。

我们将从创建原子组件开始,例如TagsDescriptionTitle等,它们将显示有关每个电影标题的各种信息。然后,我们将通过复合模式将这些组件拼接在一起,以创建一个Banner以图像形式显示每个电影标题的组件。最后,我们将使用该HeroBanner组件使用包构建图像轮播组件Swiper

(更多优质教程:java567.com,搜"ts")

到本文结束时,您将掌握创建美观且实用的图像轮播组件的知识和技能,这将给您的用户留下深刻印象。让我们开始吧!

图片97

目录

  • 先决条件

  • 如何构建横幅组件

  • 如何构建单个组件

  • 如何使用复合图案将所有组件缝合在一起

  • 如何构建图像轮播组件

  • 概括

先决条件

在继续下一节之前,请确保您熟悉以下主题:

  • CSS – 需要 CSS 的中级知识来设置我们将在本文中创建的小组件的样式。

  • Styled components——你需要熟悉 styled-components 是什么,因为我们将使用它来创建一个包含静态/动态 css 的组件版本。

  • 复合 模式——我们将使用此模式将各个组件拼接在一起,以便以后可以方便地使用它们。

  • TypeScript – 我们将在整个教程中使用TypeScript 。它在 JavaScript 之上提供了良好的类型安全。对它有一些基本的了解肯定会在这里有所收获。

如何构建横幅组件

下面的 gif 表示图像轮播组件。如果您不知道什么是图像轮播,那么让我给您做一个简要的概述。

图片98

图像轮播是一个组件,由旋转固定次数或可以在导航图标的帮助下旋转的图像组成。

在本教程中,我们将创建此组件。但在进入图像轮播之前,我们将从一个非常基本的组件开始,即横幅组件。

Banner Component 将成为一个帮助我们显示的组件:

  • 标题

  • 标签

  • 描述

  • 背景图

之后,在styled-components和 CSS的帮助下,我们会让它看起来像我们在大多数 OTT 平台上看到的一样漂亮。

构建此组件涉及以下步骤:

  1. 构建各个组件

  2. 将所有组件与复合图案拼接在一起

如何构建单个组件

截图 2023-06-03-at-8.33.17-AM

我们的横幅组件将由一些无法进一步分解的基本较小组件组成。这些组件称为原子组件。让我们首先构建最简单的组件,即 Title 组件:

首先,创建一个如下所示的功能组件:

 const Title = (props: { title: string }) => <div>{props.title}</div>;

我们还需要设置此组件的样式。我们创建一个带样式的 div 组件并将其放置在上面的 Title 组件中,如下所示:

 const StyledTitle = styled.div`
   font-size: 28px;
   font-weight: 600;
   color: white;
 `;
 ​
 const Title = (props: { title: string }) => (
   <StyledTitle>{props.title}</StyledTitle>
 );

我们阵容中的下一个组件是Tags组件。它是一个 div 元素,它映射到字符串(标签)并将它们显示在元素中span

创建一个函数式组件,它接受一个字符串数组作为 prop,并使用 map 函数将它们显示在 span 元素中:

 const Tags = (props: { tags: string[] }) => {
   return (
     <div>
      {props.tags.map((tag: string, index: number) => (
         <span key={`tag-${tag}-index`}>{tag}</span>
      ))}
     </div>
  );
 };

现在让我们创建一个样式化的 div 组件,作为上述 div 元素的替代品。我们创建这个包装器组件来将样式应用于子元素:

 const StyledTag = styled.div`
   padding: 0.5rem 0;
 ​
   & span {
     margin-right: 0.5rem;
     font-size: 1rem;
     font-weight: 500;
     color: rgba(255, 255, 255, 0.6);
   }
 `;

最后,我们将这些组件拼接在一起:

 const Tags = (props: { tags: string[] }) => {
   return (
     <StyledTag>
      {tags.map((tag: string, index: number) => (
         <span key={`tag-${tag}-index`}>{tag}</span>
      ))}
     </StyledTag>
  );
 };

同样,我们创建另一个组件,称为Description组件。它有助于显示电影标题的描述。它也是一个功能组件,它接受描述道具并使用样式化组件显示它:

 const StyledDescription = styled.div`
   text-align: start;
   color: rgba(255, 255, 255, 0.8);
   display: -webkit-box;
   max-width: 50%;
   -webkit-line-clamp: 4;
   -webkit-box-orient: vertical;
   overflow: hidden;
 `;
 ​
 const Description = (props: { description: string }) => (
   <StyledDescription>{description}</StyledDescription>
 );

最后,我们将创建Banner组件。该组件的目的是显示电影标题的背景图像以及传递给它的子项。让我们创建这个组件的一个非常基本的版本:

 const Banner = (props) => {
   return (
     <div
       style={{
         backgroundImage: `url(${props.image})`,
         width: "100%",
         height: "400px",
      }}
     >
       <div>{props.children}</div>
     </div>
  );
 };
 ​
 <Banner image="https://m.media-amazon.com/images/M/MV5BZjRlNDUxZjAtOGQ4OC00OTNlLTgxNmQtYTBmMDgwZmNmNjkxXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_.jpg">
   <h1 style={{ color: "yellow" }}>Die hard</h1>
 </Banner>;

如果我们执行这个组件,它会做我们期望的事情,“显示背景图像和子组件”,如下所示:

图片-101

但是风格似乎不对——我们不希望这个组件看起来这么难看。我们需要的是应用 CSS 将事物放在正确的位置

标签:TypeScript,const,轮播,title,Components,props,组件,Banner,我们
From: https://www.cnblogs.com/web-666/p/17459643.html

相关文章

  • TypeScript Vs JavaScript 区别
    一、观察1.JS平常的复制类型letval;val=123;val="123";val=true;val=[1,3,5];注意点:由于JS是弱类型的,所以只要定义了一个变量,就可以往这个变量中存储任意类型的数据也正是因为如此,所以会给我们带来一个问题2.假设a是一个数组,b是一个数值func......
  • TypeScript开篇
    1.什么是TypeScript(TS)?Typescript为JS带来了类型能力,如今已被越来越多的大型前端项目选用。Typescript的出现大大改善了开发体验,增强了代码的可维护性和稳定性。TypeScript简称TSTS和JS之间的关系其实就是Less/Sass和CSS之间的关系就像Less/Sass是对CSS进行扩展一样,T......
  • 使用 TypeScript 探索面向对象编程
    在软件开发领域,面向对象编程(OOP)已成为创建复杂且可扩展应用程序的基本范例。支持OOP概念的最流行的编程语言之一是TypeScript。TypeScript是JavaScript的超集,它增加了静态类型和其他功能以增强代码的可维护性和可读性。在这篇博客中,我们将探讨TypeScript中面向对象编程......
  • 专业人士使用的7个秘密TypeScript技巧
    TypeScript是一种出色的工具,可以让我们的生活更轻松并避免错误,但有时使用起来会让人不知所措。 动图 本文概述了所有专业人士都使用的7个TypeScript技巧,它们将使您的生活更轻松。(更多优质教程:java567.com,搜"ts")1.类型推断Typescript足够聪明,可以在您帮助缩小数据类型......
  • TypeScript编程 读书笔记
    @目录TypeScript编程读书笔记TypeScript概述关于编译器类型系统javascript和typescript类型系统比较类型全解什么是类型类型术语类型浅谈anyunknownbooleannumberbigintstringsymbol对象类型别名、并集、交集类型别名并集类型和交集类型数组元组null、undefined、void和never枚举......
  • html+css简单易懂的轮播图实现
    实现轮播图感觉好复杂啊,这个比较简单的实现了但是还是没有怎么理解代码,只能先发出来慢慢学习学习了话不多说,直接上代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......
  • codeforces Connected Components(寻找补图的连通块)
    http://codeforces.com/contest/920/problem/EE.ConnectedComponents?timelimitpertestmemorylimitpertestinputoutputn verticesand  edges.Insteadof......
  • 基于skitter的轮播图炫酷效果,幻灯片的体验
    概述包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端详细你还在用原生的js编写轮播图吗?还在为乏味的切换效果烦恼吗?在现在插件横飞的年代,快准狠才是重点,这次给大家推荐一款轮播图切换插件skitter。官方文档可以参考skitter 不过是全英文哦,......
  • 有JSDoc还需要TypeScript吗
    这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。然后意识到你已经打开了一个麻烦的玩意儿。如果你在为一个网站或一个库写代码,你就需要引入编译的步......
  • 前端 React + vite + Typescript 后端 java + springmvc + jwt 跨域 解决方案
    首先后端配置跨域:web.xml文件: <!--配置跨域--><filter><filter-name>header</filter-name><filter-class>org.zhiyi.config.Cross</filter-class></filter><filter-mapping><......