style(theme): 更新各主题logo及顶部栏样式,统一白底阴影效果

- 所有主题的 avue-logo 背景改为白色,并添加 0 2px 8px rgba(0,0,0,0.06) 阴影效果
- 各主题顶部栏背景及文字颜色调整,提升整体对比度与视觉统一性
- 统一调整下拉菜单、面包屑、图标等元素颜色为 rgba(0,0,0,0.85) 或 0.65,增强易读性
- 修正部分输入框和色彩选择器的边框及背景颜色,增强一致性
- index.html 添加 favicon.ico 作为页面图标
- 新增图标悬停显示浅灰圆形背景效果示例页面 icon-hover-demo.html
- icon-hover-demo.html 包含核心 CSS 代码和 Element Plus 的示例用法,方便复用和参考
This commit is contained in:
2026-07-31 19:22:05 +08:00
parent c270258b7b
commit 368e027426
18 changed files with 223 additions and 57 deletions

View File

@@ -81,3 +81,8 @@
- **数据**: 全 mockdata() 中每项标注对应后端接口(如 /blade-business/waybill/count、/trend、/cargoStat 等),后续替换真实接口即可
- **预览**: `npm run build` 通过dev server `http://localhost:2889/`
- **注意**: 快捷入口 path 依据 views 目录结构推断(/business/waybill-manage 等),需与后端菜单 path 一致才能跳转
## 图标悬停圆形背景效果示例
- 按用户提供的两张截图T 恤默认图标 / 铃铛带圆形背景图标),实现了一个悬停时显示浅灰圆形背景的图标按钮效果。
- 产物: `/Users/gxwebsoft/VUE/tms-erp-web-ws/icon-hover-demo.html`(含 CSS 核心代码与 Element Plus 用法示例)。

142
icon-hover-demo.html Normal file
View File

@@ -0,0 +1,142 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>图标悬停圆形背景效果</title>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background: #f5f7fa;
padding: 40px;
color: #333;
}
h1 { font-size: 18px; margin: 0 0 24px; }
h2 { font-size: 14px; margin: 32px 0 12px; color: #666; }
.card {
background: #fff;
border-radius: 12px;
padding: 24px;
max-width: 600px;
box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}
.row {
display: flex;
align-items: center;
gap: 24px;
padding: 16px 0;
}
/* 核心样式:图标按钮悬停圆形背景 */
.icon-hover-btn {
position: relative;
width: 40px;
height: 40px;
display: inline-flex;
align-items: center;
justify-content: center;
border: none;
border-radius: 50%;
background: transparent;
color: #333;
cursor: pointer;
outline: none;
transition: color 0.2s ease;
}
.icon-hover-btn::before {
content: "";
position: absolute;
inset: 0;
border-radius: 50%;
background: #f2f3f5;
transform: scale(0.6);
opacity: 0;
transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;
}
.icon-hover-btn:hover::before,
.icon-hover-btn:focus-visible::before {
transform: scale(1);
opacity: 1;
}
.icon-hover-btn svg {
position: relative;
z-index: 1;
width: 22px;
height: 22px;
pointer-events: none;
}
.code-block {
background: #f8f9fa;
border: 1px solid #ebeef5;
border-radius: 8px;
padding: 16px;
font-size: 12px;
line-height: 1.6;
overflow-x: auto;
white-space: pre;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
}
</style>
</head>
<body>
<h1>图标悬停圆形背景效果</h1>
<div class="card">
<p>把鼠标移到下面的 T 恤图标上,就会出现类似“铃铛”示例的浅灰圆形背景。</p>
<div class="row">
<button class="icon-hover-btn" aria-label="T恤">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
<path d="M7 3l3 3h4l3-3 4 4-3 2v11a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V9L3 7l4-4z" />
</svg>
</button>
<span style="color:#999;font-size:13px;">↑ hover 查看效果</span>
</div>
<h2>CSS 核心代码(可复制)</h2>
<pre class="code-block">.icon-hover-btn {
position: relative;
width: 40px;
height: 40px;
display: inline-flex;
align-items: center;
justify-content: center;
border: none;
border-radius: 50%;
background: transparent;
color: #333;
cursor: pointer;
transition: color 0.2s ease;
}
.icon-hover-btn::before {
content: "";
position: absolute;
inset: 0;
border-radius: 50%;
background: #f2f3f5;
transform: scale(0.6);
opacity: 0;
transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
opacity 0.2s ease;
}
.icon-hover-btn:hover::before,
.icon-hover-btn:focus-visible::before {
transform: scale(1);
opacity: 1;
}
.icon-hover-btn svg {
position: relative;
z-index: 1;
width: 22px;
height: 22px;
}</pre>
<h2>Element Plus 用法示例</h2>
<pre class="code-block">&lt;el-button class="icon-hover-btn" link&gt;
&lt;el-icon size="22"&gt;&lt;Upload /&gt;&lt;/el-icon&gt;
&lt;/el-button&gt;</pre>
</div>
</body>
</html>

View File

@@ -19,6 +19,7 @@
<link rel="stylesheet" href="/iconfont/common/iconfont.css" />
<link rel="stylesheet" href="/css/loading.css" />
<link rel="stylesheet" href="/css/saber.css" />
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<title>运输板块数字化管理平台</title>
</head>

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -26,7 +26,8 @@
}
.avue-logo {
background: linear-gradient(90deg, #006cff, #399efd) !important;
background: #fff !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.avue-tags {

View File

@@ -1,7 +1,23 @@
.theme-bule {
.avue-top, .avue-logo {
background: #004ca7;
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
color: rgba(0, 0, 0, 0.85);
}
.avue-top {
.top-bar__right,
.avue-breadcrumb,
.top-bar__item,
.el-dropdown,
.el-dropdown-link {
color: rgba(0, 0, 0, 0.85);
i {
color: rgba(0, 0, 0, 0.65);
}
}
}
.avue-sidebar {
@@ -12,25 +28,21 @@
}
}
.el-dropdown {
color: #fff;
}
.avue-logo {
.avue-logo_title {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
}
.avue-breadcrumb {
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
.top-bar__item {
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
@@ -39,13 +51,13 @@
.el-menu-item {
i,
span {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
&:hover {
i,
span {
color: #fff;
color: var(--el-color-primary);
}
}
}

View File

@@ -34,7 +34,8 @@
}
.avue-top {
background: linear-gradient(120deg, #25aff3, #008ad3);
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.avue-tags {
@@ -62,7 +63,7 @@
.avue-logo {
background: #fff;
box-shadow: none;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.avue-sidebar--tip {
@@ -71,20 +72,20 @@
}
.el-dropdown {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
.avue-logo_title {
font-weight: 400;
color: #008ad3;
color: rgba(0, 0, 0, 0.85);
}
.logo_title,
.avue-breadcrumb {
color: #fff;
color: rgba(0, 0, 0, 0.85);
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
@@ -92,13 +93,13 @@
.el-menu-item {
i,
span {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
&:hover {
i,
span {
color: #fff;
color: var(--el-color-primary);
}
}
}
@@ -169,7 +170,7 @@
.top-bar__item {
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
}

View File

@@ -1,8 +1,8 @@
.theme-d2 {
.avue-logo {
color: var(--el-color-primary);
background-color: #ebf1f6;
box-shadow: none;
color: rgba(0, 0, 0, 0.85);
background-color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
.avue-logo_title {
font-size: 20px;
@@ -11,8 +11,8 @@
}
.avue-top {
background-color: #ebf1f6;
box-shadow: none;
background-color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.avue-main {

View File

@@ -33,7 +33,7 @@
.avue-logo {
background-color: #fff;
box-shadow: none;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
.avue-logo_title {
color: var(--el-color-primary);

View File

@@ -47,16 +47,17 @@
.theme-cool,
.theme-beautiful {
.avue-logo {
background: var(--el-color-primary) !important;
background-color: var(--el-color-primary) !important;
color: #fff;
background: #fff !important;
background-color: #fff !important;
color: rgba(0, 0, 0, 0.85);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
.avue-logo_title,
.avue-logo_subtitle,
.logo-title {
color: #fff;
color: rgba(0, 0, 0, 0.85);
background-image: none;
-webkit-text-fill-color: #fff;
-webkit-text-fill-color: rgba(0, 0, 0, 0.85);
}
}
}

View File

@@ -1,7 +1,7 @@
.theme-iview {
.avue-logo {
background: #001529;
box-shadow: none;
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
text-align: center;
.avue-logo_title {

View File

@@ -1,11 +1,12 @@
.theme-lte {
.avue-logo {
background-color: var(--el-color-primary);
background-color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
.avue-logo_title {
font-weight: 500;
font-size: 20px;
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
}

View File

@@ -36,7 +36,8 @@
.avue-top,
.avue-logo,
.tags-container {
background-color: var(--el-color-primary);
background-color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.avue-sidebar--tip {
@@ -45,20 +46,20 @@
}
.el-dropdown {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
.avue-logo_title {
font-weight: 400;
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
.logo_title,
.avue-breadcrumb {
color: #fff;
color: rgba(0, 0, 0, 0.85);
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
@@ -66,13 +67,13 @@
.el-menu-item {
i,
span {
color: #fff;
color: rgba(0, 0, 0, 0.85);
}
&:hover {
i,
span {
color: #fff;
color: var(--el-color-primary);
}
}
}
@@ -137,7 +138,7 @@
.top-bar__item {
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
}
}
}

View File

@@ -3,8 +3,8 @@
.avue-top {
position: relative;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
color: rgba(0, 0, 0, .65);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
color: rgba(0, 0, 0, 0.85);
font-size: 28px;
height: variables.$top_height;
line-height: variables.$top_height;
@@ -20,10 +20,10 @@
.avue-breadcrumb {
height: 100%;
color: #fff;
color: rgba(0, 0, 0, 0.65);
i {
color: #fff;
color: rgba(0, 0, 0, 0.65);
font-size: 30px !important;
}
@@ -56,7 +56,7 @@
.el-input__wrapper {
font-size: 13px;
border: none;
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.45);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
background-color: #fff;
border-radius: 4px;
}
@@ -97,7 +97,7 @@
right: 10px;
display: flex;
align-items: center;
color: #fff;
color: rgba(0, 0, 0, 0.85);
i,
.el-icon,
@@ -107,7 +107,7 @@
}
.el-color-picker__trigger {
border-color: rgba(255, 255, 255, 0.85);
border-color: rgba(0, 0, 0, 0.15);
}
.el-color-picker__icon {
@@ -132,30 +132,31 @@
height: 100%;
padding-left: 50px;
box-sizing: border-box;
background: var(--el-color-primary);
background: #fff;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: inherit;
font-weight: 400;
font-weight: 500;
color: rgba(0, 0, 0, 0.85);
}
.avue-logo {
height: variables.$top_height;
line-height: variables.$top_height;
background-color: var(--el-color-primary);
background-color: #fff;
font-size: 20px;
overflow: hidden;
box-sizing: border-box;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
color: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
color: rgba(0, 0, 0, 0.85);
&_title {
display: block;
text-align: center;
font-weight: bold;
font-size: 20px;
color: #fff;
color: inherit;
}
&_subtitle {
@@ -163,6 +164,6 @@
text-align: center;
font-size: 18px;
font-weight: bold;
color: #fff;
color: inherit;
}
}