diff --git a/.workbuddy/memory/2026-07-31.md b/.workbuddy/memory/2026-07-31.md index 4aae7a3..a589541 100644 --- a/.workbuddy/memory/2026-07-31.md +++ b/.workbuddy/memory/2026-07-31.md @@ -81,3 +81,8 @@ - **数据**: 全 mock,data() 中每项标注对应后端接口(如 /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 用法示例)。 diff --git a/icon-hover-demo.html b/icon-hover-demo.html new file mode 100644 index 0000000..e6be2fd --- /dev/null +++ b/icon-hover-demo.html @@ -0,0 +1,142 @@ + + + + + + 图标悬停圆形背景效果 + + + +

图标悬停圆形背景效果

+
+

把鼠标移到下面的 T 恤图标上,就会出现类似“铃铛”示例的浅灰圆形背景。

+ +
+ + + ↑ hover 查看效果 +
+ +

CSS 核心代码(可复制)

+
.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;
+}
+ +

Element Plus 用法示例

+
<el-button class="icon-hover-btn" link>
+  <el-icon size="22"><Upload /></el-icon>
+</el-button>
+
+ + diff --git a/index.html b/index.html index d12d054..5a4c44b 100644 --- a/index.html +++ b/index.html @@ -19,6 +19,7 @@ + 运输板块数字化管理平台 diff --git a/public/favicon.png b/public/favicon-bak.png similarity index 100% rename from public/favicon.png rename to public/favicon-bak.png diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..1278ac7 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/img/bg/img-logo.jpg b/public/img/bg/img-logo.jpg deleted file mode 100644 index f696429..0000000 Binary files a/public/img/bg/img-logo.jpg and /dev/null differ diff --git a/public/img/bg/img-logo.png b/public/img/bg/img-logo.png index a4bf80c..f0fd939 100644 Binary files a/public/img/bg/img-logo.png and b/public/img/bg/img-logo.png differ diff --git a/public/img/logo.png b/public/img/logo.png index 305c622..f0fd939 100644 Binary files a/public/img/logo.png and b/public/img/logo.png differ diff --git a/src/styles/theme/beautiful.scss b/src/styles/theme/beautiful.scss index bf96a2f..44b903c 100644 --- a/src/styles/theme/beautiful.scss +++ b/src/styles/theme/beautiful.scss @@ -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 { diff --git a/src/styles/theme/bule.scss b/src/styles/theme/bule.scss index 0c59765..98d58ea 100644 --- a/src/styles/theme/bule.scss +++ b/src/styles/theme/bule.scss @@ -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); } } } diff --git a/src/styles/theme/cool.scss b/src/styles/theme/cool.scss index 1ae469b..1d852b8 100644 --- a/src/styles/theme/cool.scss +++ b/src/styles/theme/cool.scss @@ -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); } } } diff --git a/src/styles/theme/d2.scss b/src/styles/theme/d2.scss index e5c61f4..3781c05 100644 --- a/src/styles/theme/d2.scss +++ b/src/styles/theme/d2.scss @@ -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 { diff --git a/src/styles/theme/hey.scss b/src/styles/theme/hey.scss index 96468a0..efd4226 100644 --- a/src/styles/theme/hey.scss +++ b/src/styles/theme/hey.scss @@ -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); diff --git a/src/styles/theme/index.scss b/src/styles/theme/index.scss index 8bfe8c8..d6a96bf 100644 --- a/src/styles/theme/index.scss +++ b/src/styles/theme/index.scss @@ -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); } } } diff --git a/src/styles/theme/iview.scss b/src/styles/theme/iview.scss index 4ecfdca..eb8afe1 100644 --- a/src/styles/theme/iview.scss +++ b/src/styles/theme/iview.scss @@ -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 { diff --git a/src/styles/theme/lte.scss b/src/styles/theme/lte.scss index ef2baea..78b3a9d 100644 --- a/src/styles/theme/lte.scss +++ b/src/styles/theme/lte.scss @@ -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); } } diff --git a/src/styles/theme/white.scss b/src/styles/theme/white.scss index cd5db57..5e7ed43 100644 --- a/src/styles/theme/white.scss +++ b/src/styles/theme/white.scss @@ -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); } } } diff --git a/src/styles/top.scss b/src/styles/top.scss index 1ed371f..d73f54b 100644 --- a/src/styles/top.scss +++ b/src/styles/top.scss @@ -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; } }