From 8d08589b4c0faaddecd3aa36a262bd34d28c73a2 Mon Sep 17 00:00:00 2001 From: MrKBear Date: Thu, 2 Dec 2021 20:50:04 +0800 Subject: [PATCH] Add StatusBar GUI Style --- miniprogram/app.scss | 27 +++++- miniprogram/image/ui/last_semester_0.svg | 17 ++++ miniprogram/image/ui/next_semester_0.svg | 18 ++++ miniprogram/image/ui/selectArror_0.svg | 15 +++ miniprogram/pages/Timetable/StatusBar.scss | 105 +++++++++++++++++++++ miniprogram/pages/Timetable/StatusBar.ts | 57 +++++++++-- miniprogram/pages/Timetable/Timetable.scss | 9 +- miniprogram/pages/Timetable/Timetable.wxml | 29 +++++- 8 files changed, 254 insertions(+), 23 deletions(-) create mode 100644 miniprogram/image/ui/last_semester_0.svg create mode 100644 miniprogram/image/ui/next_semester_0.svg create mode 100644 miniprogram/image/ui/selectArror_0.svg create mode 100644 miniprogram/pages/Timetable/StatusBar.scss diff --git a/miniprogram/app.scss b/miniprogram/app.scss index a622558..50e6753 100644 --- a/miniprogram/app.scss +++ b/miniprogram/app.scss @@ -1,17 +1,34 @@ +$theme-color-blue: #3EA3D8; +$theme-color-red: #FF9393; + +$theme-color-light-layout: #F8F8F8; +$theme-color-light-background: #f4f0f1; +$theme-color-light-title: rgba(0, 0, 0, .65); +$theme-color-light-text: rgba(0, 0, 0, .55); + +$theme-color-dark-layout: #191919; +$theme-color-dark-background: #1f1f1f; +$theme-color-dark-title: rgba(255, 255, 255, .65); +$theme-color-dark-text: rgba(255, 255, 255, .55); + +$black-filter: brightness(0) opacity(.65); +$white-filter: brightness(100) opacity(.65); +$blue-filter: opacity(.65); + + + page { background-color: #f4f0f1; - color: rgba(0, 0, 0, .55); + color: $theme-color-light-text; font-weight: 500; font-size: .9em; - font-family: 'Lucida Sans', - 'Lucida Sans Regular', 'Lucida Grande', - 'Lucida Sans Unicode', 'Geneva', 'Verdana', 'sans-serif'; + font-family: Hiragino Sans GB, MicroSoft YaHei; } @media (prefers-color-scheme: dark){ page { background-color: #1f1f1f; - color: rgba(255, 255, 255, .55); + color: $theme-color-dark-text; } } \ No newline at end of file diff --git a/miniprogram/image/ui/last_semester_0.svg b/miniprogram/image/ui/last_semester_0.svg new file mode 100644 index 0000000..3b6c848 --- /dev/null +++ b/miniprogram/image/ui/last_semester_0.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/miniprogram/image/ui/next_semester_0.svg b/miniprogram/image/ui/next_semester_0.svg new file mode 100644 index 0000000..c04e4dc --- /dev/null +++ b/miniprogram/image/ui/next_semester_0.svg @@ -0,0 +1,18 @@ + + + + + + + diff --git a/miniprogram/image/ui/selectArror_0.svg b/miniprogram/image/ui/selectArror_0.svg new file mode 100644 index 0000000..ce8565e --- /dev/null +++ b/miniprogram/image/ui/selectArror_0.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/miniprogram/pages/Timetable/StatusBar.scss b/miniprogram/pages/Timetable/StatusBar.scss new file mode 100644 index 0000000..02b431a --- /dev/null +++ b/miniprogram/pages/Timetable/StatusBar.scss @@ -0,0 +1,105 @@ +@import "../../app.scss"; +$status-bar-left-top-icon-width: 30px; + +view.status-bar { + top: 0; + width: 100%; + display: flex; + position: fixed; + justify-content: space-between; + background-color: #F8F8F8; + + view.select { + flex: 1; + display: flex; + height: 100%; + align-items: center; + padding-left: 18px; + + image { + width: $status-bar-left-top-icon-width; + height: $status-bar-left-top-icon-width; + filter: $black-filter; + } + + view.semester { + height: 100%; + display: flex; + padding-left: 5px; + flex-direction: column; + justify-content: center; + + view.semester-title { + @extend %status-bar-title; + } + + view.semester-intro { + @extend %status-bar-subtitle; + } + } + } + + view.capsule-holder { + flex: 1; + height: 100%; + } + + view.content { + flex: 1; + height: 100%; + display: flex; + justify-content: center; + + view.week { + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + height: 100%; + + view.week-title { + @extend %status-bar-title; + } + + view.week-intro { + @extend %status-bar-subtitle; + } + } + } +} + +view.status-bar-blank { + width: 100%; +} + +%status-bar-title { + font-size: 1.15em; + line-height: 1.15em; + margin-bottom: 5px; + color: $theme-color-light-title; +} + +%status-bar-subtitle { + font-size: .85em; + line-height: .85em; + color: $theme-color-light-text; +} + +@media (prefers-color-scheme: dark){ + + %status-bar-title { + color: $theme-color-dark-title; + } + + %status-bar-subtitle { + color: $theme-color-dark-text; + } + + view.status-bar { + background-color: #191919; + + view.select image { + filter: $white-filter; + } + } +} diff --git a/miniprogram/pages/Timetable/StatusBar.ts b/miniprogram/pages/Timetable/StatusBar.ts index a0f2b96..a72f395 100644 --- a/miniprogram/pages/Timetable/StatusBar.ts +++ b/miniprogram/pages/Timetable/StatusBar.ts @@ -3,12 +3,40 @@ import { LevelLogLabel, LifeCycleLogLabel, colorRadio } from "../../core/PresetL import { LogLabel } from "../../core/LogLabel"; import { Logger } from "../../core/Logger"; +/** + * 在 UI 中显示的数据 + */ +type DisplayData = { + + /** + * 显示内容 + */ + val:string; + + /** + * 唯一键值 用来做判断 + */ + key:string; +}; + +/** + * 模组事件 + */ +type StatusBarEvent = { + m: DisplayData +}; + /** * 顶部状态栏 */ -class StatusBar extends Modular +class StatusBar extends Modular implements Partial { + /** + * 导航栏高度补偿 + */ + public static readonly StatusBarHeightExtend:number = 5; + /** * 页面日志输出标签 */ @@ -18,9 +46,15 @@ implements Partial { data = { - // 状态栏高度 + // 导航栏高度 barHeight: 65, - } + + // 状态栏高度 + barTop: 20, + + // 胶囊占位 + capsule: 94 + }; /** * 设置顶部状态栏高度 @@ -51,22 +85,29 @@ implements Partial { } // 计算顶部导航栏高度 - let barHeight = btnPosI.height + btnPosI.top + statusBarHeight + btnPosI.bottom + let barHeight = btnPosI.height + btnPosI.top + btnPosI.bottom; + + // 计算胶囊展位 + let capsule = btnPosI.right + btnPosI.width; this.setData({ // 不知道为什么总是差 4px 距离 // 别问为什么 加上就对了 - barHeight: barHeight + 4 + barHeight: barHeight + 4 + StatusBar.StatusBarHeightExtend, + barTop: statusBarHeight - StatusBar.StatusBarHeightExtend, + capsule: capsule }); - Logger.log(`计算并设置 StatusBar 的高度为: ${ barHeight + 4 }px`, + Logger.log(`计算并设置 StatusBar 的高度为: ${ barHeight + 4 }px, ` + + `状态栏高度: ${ statusBarHeight }px, 胶囊占位: ${ capsule }px`, LevelLogLabel.DebugLabel, StatusBar.StatusBarLabel); } public onLoad() { - Logger.log("StatusBar模块加载...", + + Logger.log("StatusBar 模块加载...", LevelLogLabel.TraceLabel, LifeCycleLogLabel.OnLoadLabel, StatusBar.StatusBarLabel); this.setHeight(); @@ -74,5 +115,5 @@ implements Partial { } -export default StatusBar; +export default StatusBar; export { StatusBar }; \ No newline at end of file diff --git a/miniprogram/pages/Timetable/Timetable.scss b/miniprogram/pages/Timetable/Timetable.scss index b47f370..f36c35f 100644 --- a/miniprogram/pages/Timetable/Timetable.scss +++ b/miniprogram/pages/Timetable/Timetable.scss @@ -1,9 +1,2 @@ -view.status-bar { - background-color: #F8F8F8; -} +@import "./StatusBar.scss" -@media (prefers-color-scheme: dark){ - view.status-bar { - background-color: #191919; - } -} diff --git a/miniprogram/pages/Timetable/Timetable.wxml b/miniprogram/pages/Timetable/Timetable.wxml index 72d1bdf..5f761d9 100644 --- a/miniprogram/pages/Timetable/Timetable.wxml +++ b/miniprogram/pages/Timetable/Timetable.wxml @@ -1,5 +1,30 @@ - + + + + + + + 大四 + 2021-2022 + + -afdff \ No newline at end of file + + + + + 第1周 + 非本周 + + + + + + + + + + + \ No newline at end of file