A 顶部Header
TV
B 分类Tab栏 40vp
直播
推荐
热门
动画
影视
新征程
国创
番剧
C Banner 192vp
正在推荐 · T1选手的中文名字
D 视频卡片
🎵
▶ 263.9万
💬 8.6万 0:33
挑战! 有节奏地朗读T1选手的中文名字!
T1电子竞技俱乐部
🎂
▶ 196.5万
💬 4.2万 18:40
球形蛋糕抹面教程
马叔叔教蛋糕
▶ 22.5万
💬 8902 12:06
脸都不要了!切尔西2-8大巴黎,球迷60分钟直接退场
汉青书半霍去病
💇
▶ 105.9万
💬 3.1万 9:28
给我会三国语言的兄弟还原了第一次相遇的发型
山城小栗旬的理发日记
E 底部导航栏 56vp
首页
关注
+
会员购
我的

页面整体

属性说明
屏幕假定宽度360vp
页面背景色#F4F5F7卡片列表底色,所有区域外的背景
品牌主色(B站粉)#FB7299选中态、导航、下划线、+ 按钮均使用
主文字色#212121视频标题
次文字色#333333分类 Tab 未选中文字
辅助文字色#999999作者名
浅辅助文字色#AAAAAA搜索框 placeholder、头像文字
导航图标未选中色#888888底部导航未激活图标和文字
内容列表滚动纵向 ListList.scrollBar(BarState.Off)
文件结构 pages/Index.ets 入口导航 →
components/HomePage.ets Header + Tab →
components/VideoListContent.ets Banner + 网格 →
components/VideoCard.ets 单张卡片 →
viewmodel/VideoData.ets 数据模型

A 顶部 Header

属性说明
背景色Color.WhiteRow .backgroundColor(Color.White)
水平内边距left: 12vp, right: 12vpRow .padding
垂直内边距top: 8vp, bottom: 8vpRow .padding
子元素间距8vpRow space: 8
头像
尺寸36 × 36vpCircle .width(36).height(36)
占位背景色#E8E8E8Circle .fill('#E8E8E8')
占位文字"TV"fontSize: 10,color: #AAAAAA,Bold
搜索框
高度32vpRow .height(32)
背景色#F2F2F2.backgroundColor('#F2F2F2')
圆角16vp.borderRadius(16),高度的一半 → 胶囊形
水平内边距left: 8vp, right: 8vp.padding
图标与文字间距8vpRow space: 8
搜索图标🔍 emojifontSize: 13,color: #AAAAAA
提示文字"搜索感兴趣的内容"fontSize: 13,color: #AAAAAA
搜索框伸展.layoutWeight(1)占满剩余空间
右侧图标
铃铛图标资源$r('app.media.ic_bell')SVG 文件路径: resources/base/media/ic_bell.svg
私信图标资源$r('app.media.ic_message')SVG 文件路径: resources/base/media/ic_message.svg
图标尺寸24 × 24vp.width(24).height(24)

B 分类 Tab 栏

属性说明
容器高度40vpTabs .barHeight(40)
背景色Color.White.barBackgroundColor(Color.White)
滚动模式BarMode.Scrollable超出宽度可横向滑动
Tab 数量8 个直播 / 推荐 / 热门 / 动画 / 影视 / 新征程 / 国创 / 番剧
默认激活项index 1(推荐)@State activeCategory: number = 1
Tab 标签样式
文字字号15vp
未选中文字色#333333
选中文字色#FB7299B站粉
未选中字重FontWeight.Normal
选中字重FontWeight.Bold
选中下划线宽度16vpDivider .width(16)
选中下划线厚度2vpDivider .strokeWidth(2)
选中下划线颜色#FB7299
未选中下划线Color.Transparent透明占位,保持高度一致
文字与下划线间距4vpColumn space: 4
标签水平内边距left: 8, right: 8Column .padding
标签垂直内边距top: 4, bottom: 4Column .padding

C Banner 轮播图

属性说明
外层容器内边距8vp(四边)Column .padding({ left:8, right:8, top:8, bottom:8 })
外层背景色#F4F5F7与页面背景一致,形成视觉边距
Swiper 高度192vpSwiper .height(192)
圆角4vpSwiper .borderRadius(4).clip(true)
自动播放trueSwiper .autoPlay(true)
切换间隔3000msSwiper .interval(3000)
循环播放trueSwiper .loop(true)
指示器颜色#66FFFFFF(40%透明白)非激活圆点颜色
指示器选中色Color.White
封面数量3 张BANNER_COVERS 数组,与 BANNER_TITLES 下标一一对应
封面图片
图片宽度100%Image .width('100%')
图片高度192vpImage .height(192)
图片缩放模式ImageFit.Cover裁剪填满容器
底部标题浮层(渐变遮罩)
渐变方向GradientDirection.Top从底部向上由黑到透明
遮罩起始色#CC000000(80%黑)
标题内边距left:8, right:8, top:16, bottom:28bottom:28 确保文字不被指示器遮挡
标题字号13vp
标题颜色Color.White
标题字重FontWeight.Medium
标题前缀"正在推荐 · "硬编码前缀 + BANNER_TITLES[index]

D 视频卡片

属性说明
卡片背景色Color.WhiteColumn .backgroundColor(Color.White)
圆角4vpColumn .borderRadius(4).clip(true)
布局方式两列等宽Row space:8 + 每卡片 .layoutWeight(1)
行外边距left:8, right:8, bottom:8ListItem Row .padding
封面图片层
宽高比1.78 (16:9)Image .aspectRatio(1.78)
缩放模式ImageFit.Cover裁剪填满
占位背景色#E8E8E8图片加载前显示
信息浮层(Stack 底部对齐)
渐变方向GradientDirection.Top从底部向上
遮罩起始色#BB000000(73%黑)
浮层内边距left:8, right:8, top:16, bottom:4Row .padding
文字字号10vp播放量 / 弹幕数 / 时长
文字颜色Color.White
排列方式播放量靠左,弹幕+时长靠右Row 中间使用 Blank()
标题区
区域高度40vpColumn .height(40)(固定,保证对齐)
内边距left:8, right:8, top:8Column .padding
文字字号13vp
文字颜色#212121
行高20vpText .lineHeight(20)
最大行数2超出用 截断
作者行
内边距8vp(四边)Row .padding({ left:8, right:8, top:8, bottom:8 })
子元素间距4vpRow space: 4
圆点尺寸4 × 4vpCircle .width(4).height(4)
圆点颜色#FB7299Circle .fill('#FB7299')
作者名字号11vp
作者名颜色#999999
作者名最大行数1超出截断

E 底部导航栏

属性说明
高度56vpRow .height(56)
背景色Color.White
顶部分割线0.5vp / #E8E8E8Row .border({ width: { top: 0.5 }, color: '#E8E8E8' })
Tab 分布5 项(4 个 Tab + 1 个 + 按钮)全部 .layoutWeight(1)
Tab 索引0=首页 1=关注 (+跳过) 3=会员购 4=我的索引 2 为 + 按钮,不切换页面
普通导航项(@Builder navItem)
图标尺寸24 × 24vpImage .width(24).height(24)
图标与文字间距4vpColumn space: 4
文字字号10vp
未选中文字色#888888
选中文字色#FB7299B站粉
图标资源(首页)$r('app.media.tab_home_normal/selected')SVG 格式,normal=#888888,selected=#FB7299
图标资源(关注)$r('app.media.tab_follow_normal/selected')同上
图标资源(会员购)$r('app.media.tab_vip_normal/selected')同上
图标资源(我的)$r('app.media.tab_me_normal/selected')同上
中间 + 发布按钮
按钮宽度48vpRow .width(48)
按钮高度32vpRow .height(32)
背景色#FB7299
圆角8vpRow .borderRadius(8)
+ 字号22vpText .fontSize(22)
+ 文字色Color.White
+ 字重FontWeight.Bold