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 的示例用法,方便复用和参考
@@ -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 用法示例)。
|
||||
|
||||
142
icon-hover-demo.html
Normal 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"><el-button class="icon-hover-btn" link>
|
||||
<el-icon size="22"><Upload /></el-icon>
|
||||
</el-button></pre>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 794 B |
|
Before Width: | Height: | Size: 235 KiB |
|
Before Width: | Height: | Size: 450 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 57 KiB |
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||