diff --git a/src/App.vue b/src/App.vue
index e0061e3..b507c52 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -134,20 +134,20 @@ onUnmounted(() => {
pointer-events: none;
}
-.offline-indicator {
- background-color: #ff6b6b;
- color: white;
- padding: 8px 16px;
- border-radius: 0 0 4px 4px;
- font-size: 14px;
- display: flex;
- align-items: center;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
- pointer-events: auto;
-}
-
-.offline-icon {
- margin-right: 8px;
+.offline-indicator {
+ background-color: #ff6b6b;
+ color: white;
+ padding: 0.5rem 1rem;
+ border-radius: 0 0 0.25rem 0.25rem;
+ font-size: 0.875rem;
+ display: flex;
+ align-items: center;
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
+ pointer-events: auto;
+}
+
+.offline-icon {
+ margin-right: 0.5rem;
}
.offline-text {
diff --git a/src/common/base.css b/src/common/base.css
index ac8b093..e5bdd08 100644
--- a/src/common/base.css
+++ b/src/common/base.css
@@ -3,24 +3,24 @@
** 否则页面将无法正常显示 **
************************************************************/
-html {
- font-size: 16px;
- user-select: none;
- -webkit-user-drag: none;
- -webkit-tap-highlight-color: transparent;
- touch-action: pan-y;
- overflow: hidden;
-}
-
-/* 禁止页面整体滚动 */
-body {
- overflow: hidden;
- position: fixed;
- width: 100%;
- height: 100%;
- -webkit-overflow-scrolling: touch;
- overscroll-behavior: none;
- touch-action: pan-y;
+html {
+ font-size: 18px;
+ user-select: none;
+ -webkit-user-drag: none;
+ -webkit-tap-highlight-color: transparent;
+ touch-action: pan-y;
+ overflow: hidden;
+}
+
+/* 禁止页面整体滚动 */
+body {
+ overflow: hidden;
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ -webkit-overflow-scrolling: touch;
+ overscroll-behavior: none;
+ touch-action: pan-y;
}
body {
diff --git a/src/components/Header.vue b/src/components/Header.vue
index 2015756..0f9b632 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -1,257 +1,257 @@
-
-
-
-
-
![]()
-
-
-
-
{{ title }}
-
-
![]()
-
-
-
-
-

-
-
-
-
-

-
-

-
-
-
-
-
-
![]()
-
-

-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
![]()
+
+
+
+
{{ title }}
+
+
![]()
+
+
+
+
+

+
+
+
+
+

+
+

+
+
+
+
+
+
![]()
+
+

+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Modal.vue b/src/components/Modal.vue
index 13fcb10..9d89656 100644
--- a/src/components/Modal.vue
+++ b/src/components/Modal.vue
@@ -246,8 +246,8 @@ defineExpose({ show })
font-size: var(--confirmFontSize, 1rem);
max-width: 75vw;
min-width: 20em;
- box-shadow: 0px 35px 35px -10px rgba(0, 0, 0, 0.33);
- border-radius: 10px;
+ box-shadow: 0rem 2.1875rem 2.1875rem -0.625rem rgba(0, 0, 0, 0.33);
+ border-radius: 0.625rem;
position: relative;
white-space: break-spaces;
word-break: break-all;
@@ -288,13 +288,13 @@ defineExpose({ show })
width: 100%;
padding: 0.8em;
font-size: 1em;
- border: 1px solid var(--confirmBtnBorder, #f1f1f1);
- border-radius: 4px;
+ border: 0.0625rem solid var(--confirmBtnBorder, #f1f1f1);
+ border-radius: 0.25rem;
box-sizing: border-box;
outline: none;
background: var(--confirmTheme, #fff);
color: var(--confirmColor, #636363);
- box-shadow: 0px 0px 4px inset rgba(0, 0, 0, 0.12);
+ box-shadow: 0rem 0rem 0.25rem inset rgba(0, 0, 0, 0.12);
}
.pd-input::placeholder {
diff --git a/src/components/NoteItem.vue b/src/components/NoteItem.vue
index fec9c05..b023bc1 100644
--- a/src/components/NoteItem.vue
+++ b/src/components/NoteItem.vue
@@ -1,411 +1,378 @@
-
-
-
-
-
-
-
-
-
{{ formattedDate }}
-
-
-
![]()
-
-
![]()
-
-
-
-
-
{{ displayContent }}
-
-

-
-
-
-
![]()
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
{{ formattedDate }}
+
+
+
![]()
+
+
![]()
+
+
+
+
+
{{ displayContent }}
+
+

+
+
+
+
![]()
+
+
+
+
diff --git a/src/components/RichTextEditor.vue b/src/components/RichTextEditor.vue
index 1ff3ce9..77e68f3 100644
--- a/src/components/RichTextEditor.vue
+++ b/src/components/RichTextEditor.vue
@@ -6,27 +6,22 @@
-
-
-
+
+
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
+
+
+
+
diff --git a/src/components/SettingGroup.vue b/src/components/SettingGroup.vue
index b4d5616..37dc8e4 100644
--- a/src/components/SettingGroup.vue
+++ b/src/components/SettingGroup.vue
@@ -1,75 +1,75 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/pages/NoteEditorPage.vue b/src/pages/NoteEditorPage.vue
index 96d59c2..279768f 100644
--- a/src/pages/NoteEditorPage.vue
+++ b/src/pages/NoteEditorPage.vue
@@ -446,27 +446,27 @@ onBeforeUnmount(async () => {
-webkit-overflow-scrolling: touch;
}
}
-.offline-banner {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- z-index: 10000;
- background-color: #ff6b6b;
- color: white;
- padding: 8px 16px;
- text-align: center;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
-}
-.offline-content {
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 14px;
- font-weight: 500;
-}
-.offline-icon {
- margin-right: 8px;
+.offline-banner {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+ background-color: #ff6b6b;
+ color: white;
+ padding: 0.5rem 1rem;
+ text-align: center;
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
+}
+.offline-content {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 0.875rem;
+ font-weight: 500;
+}
+.offline-icon {
+ margin-right: 0.5rem;
}
.note-container {
flex: 1;
diff --git a/src/pages/NoteListPage.vue b/src/pages/NoteListPage.vue
index 4116b6e..35217a1 100644
--- a/src/pages/NoteListPage.vue
+++ b/src/pages/NoteListPage.vue
@@ -395,21 +395,21 @@ const notes = computed(() => store.notes)
z-index: 10000;
background-color: #ff6b6b;
color: white;
- padding: 8px 16px;
+ padding: 0.5rem 1rem;
text-align: center;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
}
.offline-content {
display: flex;
align-items: center;
justify-content: center;
- font-size: 14px;
+ font-size: 0.875rem;
font-weight: 500;
}
.offline-icon {
- margin-right: 8px;
+ margin-right: 0.5rem;
}
.folder-list {
@@ -421,7 +421,7 @@ const notes = computed(() => store.notes)
background-color: var(--background-card);
border-radius: 0.5rem;
box-shadow: 0 0.125rem 0.25rem var(--shadow);
- border: 1px solid #f0ece7;
+ border: 0.0625rem solid #f0ece7;
overflow: hidden;
}
@@ -466,9 +466,9 @@ const notes = computed(() => store.notes)
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
-.note-list-leave-to {
- opacity: 0;
- transform: translateX(-30px);
+.note-list-leave-to {
+ opacity: 0;
+ transform: translateX(-1.875rem);
}
.note-list-move {
@@ -486,23 +486,23 @@ const notes = computed(() => store.notes)
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
-.folder-slide-enter-from {
- opacity: 0;
- transform: scale(0.8) translateY(-20px);
-}
-
-.folder-slide-enter-to {
- opacity: 1;
- transform: scale(1) translateY(0);
-}
-
-.folder-slide-leave-from {
- opacity: 1;
- transform: scale(1) translateY(0);
-}
-
-.folder-slide-leave-to {
- opacity: 0;
- transform: scale(0.8) translateY(-20px);
+.folder-slide-enter-from {
+ opacity: 0;
+ transform: scale(0.8) translateY(-1.25rem);
+}
+
+.folder-slide-enter-to {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+}
+
+.folder-slide-leave-from {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+}
+
+.folder-slide-leave-to {
+ opacity: 0;
+ transform: scale(0.8) translateY(-1.25rem);
}
diff --git a/src/utils/sizeUtils.js b/src/utils/sizeUtils.js
new file mode 100644
index 0000000..9734c4f
--- /dev/null
+++ b/src/utils/sizeUtils.js
@@ -0,0 +1,29 @@
+/**
+ * 获取根元素的字体大小(以像素为单位)
+ * @returns {number} 根元素的字体大小(像素)
+ */
+export function getRootFontSize() {
+ return parseFloat(getComputedStyle(document.documentElement).fontSize);
+}
+
+/**
+ * 将像素值转换为rem值
+ * @param {number} px - 像素值
+ * @param {number} [rootFontSize] - 根字体大小,如果不提供则自动获取
+ * @returns {number} rem值
+ */
+export function pxToRem(px, rootFontSize = null) {
+ const fontSize = rootFontSize || getRootFontSize();
+ return px / fontSize;
+}
+
+/**
+ * 将像素值转换为rem字符串(带rem单位)
+ * @param {number} px - 像素值
+ * @param {number} [rootFontSize] - 根字体大小,如果不提供则自动获取
+ * @returns {string} rem字符串
+ */
+export function pxToRemStr(px, rootFontSize = null) {
+ const remValue = pxToRem(px, rootFontSize);
+ return `${remValue}rem`;
+}
\ No newline at end of file