使用 ChatGPT 和 React 创建一个惊艳的3D卡片(一)

news/2024/7/15 18:54:35 标签: chatgpt, react.js, javascript, 前端, ecmascript

0bff3366f27ec157bdc74256ad7a4ff3.jpeg

本系列文章将使用 ChatGPT、React 和 CodeSandbox 处理错误、图像占位符和协作,来探索如何创建一个惊艳的 3D 卡片,利用鼠标位置创建光照效果。这种设计在现代网站布局中非常常见。我们将深入了解如何使用网络技术创建这种动态效果,并利用 ChatGPT 的强大功能来解决可能出现的任何问题。这将是一次令人兴奋和愉快的学习体验。

案例展示

最终完成的效果如下图所示,一个漂亮的毛玻璃背景卡片,鼠标放上去还有一种光照跟随的效果,今天的文章我们将完成最基础的布局结构,相关的动画和交互效果将在下面的文章进行介绍。

25ee7a128e9da9d94c599c25c95d1898.jpeg

初始提示词

在使用 Chat GPT,尤其是 GPT4 的过程中,我意识到了准确描述和设置明确的参数对于 AI 的工作有多么重要。例如,作为一名 Web 开发者,明确指定自己专精于 React 和 CSS,以及自己偏好使用的编码风格和库,是非常关键的。

提示词

You're a web developer that specializes in React and CSS.

- For CSS, use Styled-Components.
- Use CodeSandbox to quickly build prototypes.
- Provide steps to create a new project in CodeSandbox.
- Provide steps to install any third party libraries that we need.
- Create everything inside App.js

中文翻译

你是一位专精于 React 和 CSS 的 Web 开发者。在 CSS 中,使用 Styled-Components。使用 CodeSandbox 快速构建原型。提供在 CodeSandbox 中创建新项目的步骤。提供安装任何需要的第三方库的步骤。在 App.js 中创建所有内容。

在 ChatGPT-4 输入以上指令,你将会看到如下效果:

59b58a50dc0a1c71d5f7a25101762381.png

3a4467e72e322596a5b222fefb66e536.png

a6ba23b1f433667c9a1aa613d4410912.png

b106839677f91e2a3d19435a4e185364.png

233555834a1c3ec056fc4fcf909e0be1.png

CodeSandbox

CodeSandbox 是一个在线开发环境,可用于构建、共享和协作项目。它支持诸如 JavaScript、React、Vue 和 Angular 等语言、框架和库。它适用于实验和学习,面向各种经验水平的开发者。

创建一个新的 React 项目:

8ba9ee4c837224ad133be990f08434d2.jpeg

项目结构

Code Sandbox 允许您轻松在线共享和测试代码。它为您提供了自己的网站链接,可与他人共享您的项目。从一开始,您就可以访问 app 文件和 index 文件等文件,在这些文件中可以设置数据、脚本和库。此外,您可以在 styles.css 中自定义项目的通用样式,例如重置 CSS 或设置字体系列。对于主要布局,我们将使用 App.js。此文件包含基本的 HTML,并导入 style.css 文件进行样式设置。

95dcbb65e8bee54624a18c73a11b9b06.jpeg

Styled Components

Styled Components 在 React 应用程序中管理 CSS 变得轻而易举,它提供了可重用的、动态的组件,用于实现一致的设计。它还允许您在单个页面中在 React 和 CSS 之间无缝传递属性。

import styled from "styled-components";

卡片布局

我们的下一个任务是指示 Chat GPT 生成一个包括封面图片、标题、分隔符、另一个标题、一些文本以及作者的卡片,以及他们的头像和姓名。重要的是,我们需要提供详细而精确的描述,说明我们希望在卡片中显示的信息,以及应该显示的顺序。具体来说,我们希望封面图片首先出现,然后是标题、分隔符等等。通过提供这些规格,Chat GPT 将能够生成卡片所需的代码和布局。

提示词:

Create a card with cover image, title, divider, subtitle, text, author (avatar + name).

Center the card in the screen

在 ChatGPT-4 输入以上指令,你将会看到如下效果:

7ec73752bef6c816c7a7ecbf037dee47.png

import React from "react";
import styled from "styled-components";

const Container = styled.div`
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  background-color: #f5f5f5;
`;

const Card = styled.div`
  width: 300px;
  border: 1px solid #e8e8e8;
  border-radius: 5px;
  overflow: hidden;
  background-color: #ffffff;
`;

const CoverImage = styled.img`
  width: 100%;
  height: 180px;
  object-fit: cover;
`;

const Title = styled.h2`
  font-size: 1.5rem;
  margin: 0.5rem;
`;

const Divider = styled.hr`
  margin: 0.5rem 0;
  border: 0;
  border-top: 1px solid #e8e8e8;
`;

const Subtitle = styled.h3`
  font-size: 1.1rem;
  font-weight: 400;
  margin: 0.5rem;
`;

const Text = styled.p`
  margin: 0.5rem;
`;

const Author = styled.div`
  display: flex;
  align-items: center;
  margin: 0.5rem;
`;

const Avatar = styled.img`
  width: 40px;
  height: 40px;
  border-radius: 50%;
  margin-right: 10px;
`;

const AuthorName = styled.span`
  font-weight: 600;
`;

function App() {
  return (
    <Container>
      <Card>
        <CoverImage src="https://via.placeholder.com/300x180" alt="Cover" />
        <Title>Card Title</Title>
        <Divider />
        <Subtitle>Card Subtitle</Subtitle>
        <Text>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
          eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </Text>
        <Author>
          <Avatar src="https://via.placeholder.com/40" alt="Author" />
          <AuthorName>John Doe</AuthorName>
        </Author>
      </Card>
    </Container>
  );
}

export default App;

将代码完整复制到SandBox,你会看到如下效果,基本的结构就完成了:

49b9b7920d10fabfc2e54b53139467ed.png

接下来我们添加自己的图片素材,替换上图的卡片、头像,如下两张图:

cc08ee1972b1febd9654d94448fa8967.jpeg

头像

42722f8180c5c227374cc6f1b626d2c5.png

卡片头图

将其传至SandBox的Src目录下,如下图所示:

3fce0ac2cfdf06631a5388680fb8dff4.png

接下来我们来修改代码,引入对应的图片,示例代码如下:

import cardImage from "./card-image.png";
import cardAvatar from "./card-avatar.png";

接下来修改app()对应的代码,修改如下:

function App() {
  return (
    <Container>
      <Card>
        <CoverImage src={cardImage} alt="Cover" />
        <Title>Card Title</Title>
        <Divider />
        <Subtitle>Card Subtitle</Subtitle>
        <Text>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
          eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </Text>
        <Author>
          <Avatar src={cardAvatar} alt="Author" />
          <AuthorName>John Doe</AuthorName>
        </Author>
      </Card>
    </Container>
  );
}

最终最基础的卡片布局,我们在ChatGpt4的帮助下完成了,效果如下图所示:

1e71c30672ae670f7b187846e77c69fd.png

结束

今天的文章就到这里,我们在GPT4的帮助下完成了最基础的卡片结构布局,下面的文章我们将继续完成后续的动画和交互效果,让卡片变得更加酷炫。文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。

https://designcode.io/

基于《Design and Code with ChatGPT and Midjourney》视频教程和文章笔记翻译分享

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

相关阅读

ChatGpt入门指南:用提示词构建网站和应用

Midjourney入门指南:简单提示词,搞定高质量应用设计


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

相关文章

ASIC-WORLD Verilog(5)基础语法下篇

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加了自己的理解&#xff09;分享给大家。 这是网站原文&…

OpenHarmony标准系统开机时长优化

简介 万物互联时代&#xff0c;产品性能至关重要&#xff0c;而系统启动时间是系统性能的重要组成部分&#xff0c;因为用户必须等待系统启动完成后才能使用设备。对于经常需要进行冷启动的汽车等设备而言&#xff0c;较短的启动时间至关重要&#xff08;没有人喜欢在等待几十秒…

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序)&#xff1a; 普通流&#xff08;标准流&#xff09;浮动定位 1 标准流&#xff08;普通流/文档流&#xff09; 所谓的标准流: 就是标签按照规定…

接口的使用

目录 接口的基本介绍 接口的注意事项和使用细节 接口vs继承 接口体现多态 接口体现多态数组 接口体现多态传递现象 接口的习题 第一题 第二题 接口的基本介绍 接口就是给出一些没有实现的方法&#xff0c;封装到一起&#xff0c;到某个类要使用的时候&#xff0c;在根…

JMM之先行发生原则(happens-before)详解

1、概述 在JMM规范下&#xff0c;如果一个操作执行的结果需要对另一个操作可见&#xff0c;那么这两个操作之间必须存在happers-before(先行发生)原则。 例如 int x 10 ; int y x; 这两行代码中第二个操作 yx &#xff0c;因为需要将x值赋值给y&#xff0c;所以第一行代码的…

OpenTex 企业内容管理平台

OpenText 企业内容管理平台 将内容服务与领先应用程序集成&#xff0c;弥合内容孤岛、加快信息流并扩大治理 什么是内容服务集成&#xff1f; 内容服务集成通过将内容管理平台与处于流程核心的独立应用程序和系统连接起来&#xff0c;支持并扩展了 ECM 的传统优势。 最好的内…

MyBatis动态SQL教程:灵活处理复杂SQL场景,提升性能与可维护性

MyBatis动态SQL教程 简介 MyBatis是一个Java持久化框架&#xff0c;它提供了简单而强大的方式来与数据库交互。其中&#xff0c;动态SQL是MyBatis的一个重要特性&#xff0c;它允许在SQL语句中使用条件语句、循环语句和参数替换&#xff0c;从而实现灵活的SQL查询和更新操作。…

Java基础——Collection与Map常用的API

&#xff08;1&#xff09;Collection集合&#xff1a; Collection是单列集合的祖宗接口&#xff0c;它的功能是全部单例集合都可以继承使用。 &#xff08;2&#xff09;Collection常用API&#xff1a; 方法名称说明public boolean add(E e)把给定的对象添加到当前集合中pub…