wip: 临时提交

This commit is contained in:
Ray.Hao
2025-05-26 23:21:14 +08:00
parent 0d899feeaf
commit dfb9a735d6
6 changed files with 76 additions and 45 deletions

View File

@@ -37,16 +37,58 @@ defineProps({
color: $sidebar-logo-text-color;
}
}
</style>
<style lang="scss">
// 全局样式:针对顶部布局和混合布局的特殊处理
.layout-top,
.layout-mix {
.logo {
width: $sidebar-width;
}
// 在顶部和混合布局中,移除背景色,使其透明
background-color: transparent !important;
&.hideSidebar {
.logo {
width: $sidebar-width-collapsed;
.title {
// 确保标题颜色适配当前主题
color: var(--menu-text);
}
}
}
// 顶部布局的响应式宽度控制
.layout-top {
.layout__header-left .logo {
flex-shrink: 0; // 防止Logo被压缩
width: $sidebar-width; // 默认宽度显示logo+文字
margin-right: 20px;
// 中屏设备优化800px-1100px适度缩小但保持显示文字
@media (min-width: 768px) and (max-width: 1100px) {
width: 180px; // 缩小到180px为菜单腾出空间
margin-right: 16px; // 减少右边距
}
// 小屏设备只显示logo使用收缩宽度
@media (max-width: 767px) {
width: $sidebar-width-collapsed; // 只显示logo54px
margin-right: 12px; // 减少右边距
}
}
}
// 混合布局的响应式宽度控制
.layout-mix {
.layout__header-logo .logo {
flex-shrink: 0;
width: $sidebar-width; // 默认宽度显示logo+文字
// 中屏设备优化800px-1100px适度缩小但保持显示文字
@media (min-width: 768px) and (max-width: 1100px) {
width: 180px; // 缩小到180px为菜单腾出空间
}
// 小屏设备只显示logo使用收缩宽度
@media (max-width: 767px) {
width: $sidebar-width-collapsed; // 只显示logo54px
}
}
}

View File

@@ -42,12 +42,12 @@ const iconComponent = computed(() => props.icon?.replace("el-icon-", ""));
.el-sub-menu,
.el-menu-item {
.el-icon {
margin-left: 20px;
margin: 0 10px;
}
}
[class^="i-svg:"] {
margin-left: 20px;
margin: 0 10px;
}
}
</style>

View File

@@ -52,7 +52,7 @@
<div
v-if="defaultSettings.showSettings"
class="navbar-actions__item"
@click="settingStore.settingsVisible = true"
@click="handleSettingsClick"
>
<div class="i-svg:setting" />
</div>
@@ -68,6 +68,13 @@ import { useAppStore, useSettingsStore, useUserStore } from "@/store";
import { SidebarColor, ThemeMode } from "@/enums/settings/theme.enum";
import { LayoutMode } from "@/enums";
// 导入子组件
import MenuSearch from "@/components/MenuSearch/index.vue";
import Fullscreen from "@/components/Fullscreen/index.vue";
import SizeSelect from "@/components/SizeSelect/index.vue";
import LangSelect from "@/components/LangSelect/index.vue";
import Notification from "@/components/Notification/index.vue";
const { t } = useI18n();
const appStore = useAppStore();
const settingStore = useSettingsStore();
@@ -127,6 +134,13 @@ function logout() {
});
});
}
/**
* 打开系统设置页面
*/
function handleSettingsClick() {
settingStore.settingsVisible = true;
}
</script>
<style lang="scss" scoped>
@@ -136,45 +150,37 @@ function logout() {
height: 100%;
&__item {
position: relative;
display: flex;
align-items: center;
justify-content: center;
min-width: 36px;
min-width: 44px; /* 增加最小点击区域到44px符合人机交互标准 */
height: 100%;
min-height: 44px;
padding: 0 8px;
text-align: center;
cursor: pointer;
transition: all 0.3s;
// 确保直接子元素居中
// 确保子元素居中
> * {
display: flex;
align-items: center;
justify-content: center;
}
// 确保 el-dropdown 也居中
:deep(.el-dropdown) {
// 确保 Element Plus 组件可以正常工作
:deep(.el-dropdown),
:deep(.el-tooltip) {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
// 修复可能的 SVG 图标容器
:deep(.icon-container),
:deep(.action-icon) {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
// 默认图标样式(明亮模式 + 左侧布局)
// 图标样式
:deep([class^="i-svg:"]) {
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 18px;
line-height: 1;
color: var(--el-text-color-regular);

View File

@@ -36,12 +36,9 @@ function toggleSideBar() {
<style lang="scss" scoped>
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
justify-content: space-between;
height: $navbar-height;
padding: 0 20px;
background: var(--el-bg-color);
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
&__actions {
display: flex;

View File

@@ -165,17 +165,8 @@ console.log("🎨 MixLayout rendered");
align-items: center;
min-width: 0;
height: 100%;
margin: 0 16px;
overflow: hidden;
@media (min-width: 768px) and (max-width: 1200px) {
margin: 0 12px;
}
@media (max-width: 767px) {
margin: 0 8px;
}
:deep(.el-menu) {
height: 100%;
background-color: transparent;

View File

@@ -71,7 +71,7 @@ const isLogoCollapsed = computed(() => width.value < 768);
overflow: hidden; // 防止溢出
// Logo 样式 - 使用SCSS变量管理宽度
:deep(.sidebar-logo) {
:deep(.logo) {
flex-shrink: 0; // 防止Logo被压缩
width: $sidebar-width; // 默认宽度显示logo+文字
height: $navbar-height;
@@ -91,14 +91,9 @@ const isLogoCollapsed = computed(() => width.value < 768);
margin-right: 12px; // 减少右边距
}
.sidebar-logo__link {
a {
height: 100%;
}
.logo {
width: 100%;
background-color: transparent;
}
}
}