当前位置: 首页 > news >正文

高仿网易云的笔记记录-day4

对网页进行设计

在components中创建app-header和app-footer文件夹和index.tsx

在他们之中写网页逻辑

使用styled-components来对页面写样式

现在终端安装:

npm install styled-component -D

在对应组件的文件夹中创建style.ts(如在app-header下创建)

在整个项目下面创建声明文件style.d.ts

// src/styled.d.ts import 'styled-components' declare module 'styled-components' { export interface DefaultTheme { color: { primary: string secondary: string } size: Record<string, unknown> // ✅ 修复:使用 Record mixin: Record<string, never> } }

因为是ts文件所以需要针对该依赖安装类型声明

npm install @types/styled-components -D
export const HeaderWrapper = styled.div``

这行代码做了三件重要的事情:

1. ​创建样式化组件

  • styled.div表示你要创建一个<div>元素的样式化版本

  • 它返回一个React 组件,这个组件会自动应用你定义的 CSS 样式

2. ​定义组件名称

  • HeaderWrapper是你给这个样式化组件起的名字

  • 这个名字应该描述性地表达这个组件的用途

3. ​导出组件

  • export关键字表示这个组件可以被其他文件导入使用

将heaferWrapper导出到index.tsx里面就可以使用了,在style.ts中继续编写组件

(注意!export const HeaderWrapper = styled.div``由两个点括起来)

在哪里编辑总体主题?

在assets中创建theme文件夹和index,在其中编辑theme主题

// theme.js const theme = { color: { primary: '#C20C0C', secondary: '' }, size: {}, mixin: { wrapv1: ` width: 1100px; margin: 0 auto; ` } } export default theme

混入:mixin

格式为;

mixin: { // 页面内容区域居中 wrapv1: ` width: 1100px; margin: 0 auto; `, // 文字超出显示省略号 textEllipsis: ` white-space: nowrap; overflow: hidden; text-overflow: ellipsis; `, // 水平居中 flexCenter: ` display: flex; justify-content: center; align-items: center; `

使用改固定样式来编写高复用率的样式款式 `

mixin: { wrapv1: ` width: 1100px; margin: 0 auto; `, flexCenter: ` display: flex; justify-content: center; align-items: center; ` }

在src下创建文件夹src/styled.d.ts文件

// src/styled.d.ts import 'styled-components'; declare module 'styled-components' { export interface DefaultTheme { color: { primary: string; secondary: string; }; size: Record<string, unknown>; // 或者更具体的类型 mixin: { wrapv1: string; }; } }

然后去到整个文件的目录的index.ts,导入ThemeProvider,编辑好对应的属性

用ThemeProvider包裹好:

<ThemeProvider theme={theme}> <HashRouter> <App /> </HashRouter> </ThemeProvider>

使用ThemeProvider包裹好后,theme中设置的混入就可以让全部人使用了

但是!我们不用定义混用而是使用直接定义类,然后给对应组件添加类名

后续导入先行项目材料(精灵图、css)

对顶部header继续设计

对header部分数据进行填写,在data创建header-titles.json

将数据统一到json数据中管理

[ { "title": "发现音乐", "type": "path", "link": "/discover" }, { "title": "我的音乐", "type": "path", "link": "/mine" }, { "title": "关注", "type": "path", "link": "/focus" }, { "title": "商城", "type": "link", "link": "https://music.163.com/store/product" }, { "title": "音乐人", "type": "link", "link": "https://music.163.com/st/musician" }, { "title": "下载客户端", "type": "path", "link": "/download" } ]

然后在index中调用:

import headerTitles from '@/assets/data/header_title.json'
<div className="title-list"> {headerTitles.map((item) => { return ( <div className="item" key={item.title}> {showItem(item)} </div> ) })} </div>

编辑showItem中的if等逻辑

function showItem(item: any) { if (item.type === 'path') { return <Link to={item.path}>{item.title}</Link> } else { return ( <a href={item.link} target="_blank" rel="noopener noreferrer"> {item.title} </a> ) } }
http://www.jsqmd.com/news/524245/

相关文章:

  • 2026年 假肢厂家推荐排行榜,大腿假肢/小腿假肢/上肢假肢/儿童假肢/成人假肢/老人假肢定制装配与康复中心深度解析 - 品牌企业推荐师(官方)
  • 腾讯QClaw全面开放!我扒了它的底裤,发现了这些骚操作和硬伤…
  • 德阳租车公司排行:越野车租车电话、专业商务租车、保姆车租赁电话、商务车租赁、四川租车、四川租车公司、大巴车租赁选择指南 - 优质品牌商家
  • 开贴记录STM32工程遇到的各种问题及解决方法
  • 如何快速生成WiFi连接二维码:React 18状态管理最佳实践
  • 从入门到实战:22讲通关Go语言,云原生时代的后端开发必修课
  • 2026 最新国内企业/慕课/教育等多场景数字化转型服务商 TOP5 权威评测!广东等地AI驱动标杆榜单发布 - 十大品牌榜
  • AI专著写作不用愁!实用工具推荐,快速完成学术巨著
  • 豆包AI推广联系哪家公司?2026企业获客服务商选型指南 - 品牌2026
  • OBS高级配置优化:如何提升直播质量和性能表现
  • dhfveigfeihvbjsd
  • 基于单片机智能风扇控制系统设计-毕设课设
  • 豆包上的公司是怎么来的?2026年企业“被推荐”的底层逻辑 - 品牌2026
  • Gephi图可视化平台:10个快速上手技巧与完整入门指南
  • 从美伊战火到10万亿产业,HALO资产如何重构世界秩序?
  • 从零构建Prometheus+Grafana监控体系:MySQL性能可视化实战
  • Qt事件常用类,QLabel的QFrame交互
  • 2026 最新国内数智化方案厂家 TOP5 评测!广东等地AI驱动实证权威榜单发布,赋能多领域数字化升级 - 十大品牌榜
  • 从TVC到微电影:2026年西安铿锵如何定义陕西品牌影像新标准 - 深度智识库
  • java面试知识点总结
  • 告别手动配置!保姆级教程:在Ubuntu 22.04上搞定BNC 2.12.17依赖库(附libqtwebkit4安装避坑指南)
  • Go 项目目录结构最佳实践:少即是多,实用至上
  • **发散创新:基于RBAC模型的项目治理权限系统设计与实战**在现代软件
  • 基于单片机智能光控路灯系统设计
  • 无人机巡检电网技术进展与中外对比
  • ATP3011 I²C语音桥接芯片驱动设计与嵌入式集成
  • YOLOv8与YOLOv5对比:性能提升在哪里?实测数据告诉你答案
  • 别再只盯着RLHF了!用Python手把手教你给大模型写个“自动判题器”(RLVR实战)
  • 信创版Openclaw怎么选?企业级智能体自动化选型与全景盘点指南
  • Qemu mdev GPA->HVA映射逻辑