Files
workspace/code/fms/fms-vue/.tabs-preview.html
T
2026-09-21 23:13:14 +08:00

249 lines
8.9 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>AppTabs 静态预览(调试用,验证完删除)</title>
<style>
:root {
--fms-surface: #ffffff;
--fms-border: #dfe5ec;
--fms-text: #1f2329;
--fms-text-secondary: #6f7784;
--fms-primary: #0f172b;
--fms-primary-soft: color-mix(in srgb, #0f172b 12%, transparent);
--fms-secondary-hover: #f1f5f9;
}
/* 字体栈对齐应用真实栈(src/styles/index.css),否则预览不出字形墨迹的 1px 偏移 */
body { margin: 0; background: #f1f3f6; font-family: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif; }
.fms-tabs {
display: flex;
align-items: stretch;
height: 38px;
padding: 0;
overflow: hidden;
background: var(--fms-surface);
border-bottom: 1px solid var(--fms-border);
}
.fms-tabs-arrow {
display: flex;
align-items: center;
flex-shrink: 0;
padding: 0 8px;
color: var(--fms-text-secondary);
cursor: pointer;
}
.fms-tabs-arrow svg { width: 16px; height: 16px; }
.fms-tabs-arrow--left { border-right: 1px solid var(--fms-border); }
.fms-tabs-arrow--right { border-left: 1px solid var(--fms-border); }
.fms-tabs-tools { display: flex; align-items: stretch; flex-shrink: 0; }
.fms-tabs-tool {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
padding: 0 8px;
border-left: 1px solid var(--fms-border);
color: var(--fms-text-secondary);
cursor: pointer;
}
.fms-tabs-tool svg { width: 16px; height: 16px; }
.fms-tabs-tool:hover { background: var(--fms-secondary-hover); color: var(--fms-text); }
.fms-tabs-track {
display: flex;
flex: 1;
align-items: stretch;
min-width: 0;
padding-top: 3px;
overflow: hidden;
}
.fms-tabs-track::after { content: ''; flex: none; width: 24px; }
.fms-tab-item {
display: flex;
flex-shrink: 0;
height: 100%;
margin-right: -12px;
}
.fms-tab {
position: relative;
z-index: 0;
display: flex;
align-items: center;
height: 100%;
padding: 0;
border: none;
background: transparent;
font-family: inherit;
cursor: pointer;
user-select: none;
}
.fms-tab.is-active { z-index: 2; }
.fms-tab__inner {
position: relative;
display: flex;
align-items: center;
width: 100%;
height: 100%;
padding: 0 4px;
}
.fms-tab__divider {
position: absolute;
top: 50%;
left: 7px;
z-index: 1;
width: 1px;
height: 16px;
transform: translateY(-50%);
background: var(--fms-border);
}
.fms-tab__background {
position: absolute;
z-index: 1;
inset: 0;
padding: 0 6px;
}
.fms-tab__background-content {
display: block;
width: 100%;
height: 100%;
border-radius: 7px 7px 0 0;
}
.fms-tab__corner {
position: absolute;
bottom: 0;
width: 7px;
height: 7px;
fill: transparent;
}
.fms-tab__corner--left { left: -1px; }
.fms-tab__corner--right { right: -1px; }
.fms-tab__extra {
position: absolute;
top: 50%;
right: 10px;
z-index: 3;
display: flex;
align-items: center;
width: 16px;
height: 16px;
transform: translateY(-50%);
}
.fms-tab__close {
display: inline-flex;
align-items: center;
justify-content: center;
width: 12px;
height: 12px;
border-radius: 999px;
color: color-mix(in srgb, var(--fms-text) 80%, transparent);
}
.fms-tab__close svg { width: 12px; height: 12px; }
.fms-tab__main {
position: relative;
z-index: 2;
display: flex;
align-items: center;
height: 100%;
margin: 0 14px;
padding: 0 16px 0 8px;
overflow: hidden;
border-radius: 5px 5px 0 0;
color: var(--fms-text);
font-size: 14px;
line-height: 20px;
white-space: nowrap;
}
.fms-tab.is-unclosable .fms-tab__main { padding: 0 8px; }
.fms-tab__label { flex: 1; overflow: hidden; white-space: nowrap; transform: translateY(-1px); }
.fms-tab.is-active .fms-tab__background-content { background: var(--fms-primary-soft); }
.fms-tab.is-active .fms-tab__corner { fill: var(--fms-primary-soft); }
.fms-tab.is-active .fms-tab__main { color: var(--fms-primary); }
</style>
</head>
<body>
<div class="fms-tabs">
<span class="fms-tabs-arrow fms-tabs-arrow--left" aria-label="向左滚动页签">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m11 17-5-5 5-5"/><path d="m18 17-5-5 5-5"/></svg>
</span>
<div class="fms-tabs-track" role="tablist">
<div class="fms-tab-item is-active">
<button type="button" role="tab" class="fms-tab is-active is-unclosable" aria-selected="true">
<span class="fms-tab__inner">
<span class="fms-tab__background">
<span class="fms-tab__background-content"></span>
<svg class="fms-tab__corner fms-tab__corner--left" height="7" width="7" aria-hidden="true"><path d="M 0 7 A 7 7 0 0 0 7 0 L 7 7 Z" /></svg>
<svg class="fms-tab__corner fms-tab__corner--right" height="7" width="7" aria-hidden="true"><path d="M 0 0 A 7 7 0 0 0 7 7 L 0 7 Z" /></svg>
</span>
<span class="fms-tab__main"><span class="fms-tab__label">工作台</span></span>
</span>
</button>
</div>
<div class="fms-tab-item">
<button type="button" role="tab" class="fms-tab" aria-selected="false">
<span class="fms-tab__inner">
<span class="fms-tab__divider"></span>
<span class="fms-tab__background">
<span class="fms-tab__background-content"></span>
<svg class="fms-tab__corner fms-tab__corner--left" height="7" width="7" aria-hidden="true"><path d="M 0 7 A 7 7 0 0 0 7 0 L 7 7 Z" /></svg>
<svg class="fms-tab__corner fms-tab__corner--right" height="7" width="7" aria-hidden="true"><path d="M 0 0 A 7 7 0 0 0 7 7 L 0 7 Z" /></svg>
</span>
<span class="fms-tab__extra">
<span class="fms-tab__close" aria-label="关闭页签">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
</span>
</span>
<span class="fms-tab__main"><span class="fms-tab__label">联系人</span></span>
</span>
</button>
</div>
<div class="fms-tab-item">
<button type="button" role="tab" class="fms-tab" aria-selected="false">
<span class="fms-tab__inner">
<span class="fms-tab__divider"></span>
<span class="fms-tab__background">
<span class="fms-tab__background-content"></span>
<svg class="fms-tab__corner fms-tab__corner--left" height="7" width="7" aria-hidden="true"><path d="M 0 7 A 7 7 0 0 0 7 0 L 7 7 Z" /></svg>
<svg class="fms-tab__corner fms-tab__corner--right" height="7" width="7" aria-hidden="true"><path d="M 0 0 A 7 7 0 0 0 7 7 L 0 7 Z" /></svg>
</span>
<span class="fms-tab__extra">
<span class="fms-tab__close" aria-label="关闭页签">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
</span>
</span>
<span class="fms-tab__main"><span class="fms-tab__label">订单管理</span></span>
</span>
</button>
</div>
</div>
<span class="fms-tabs-arrow fms-tabs-arrow--right" aria-label="向右滚动页签">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 17 5-5-5-5"/><path d="m13 17 5-5-5-5"/></svg>
</span>
<div class="fms-tabs-tools">
<span class="fms-tabs-tool" title="页签操作">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="7" height="7" x="3" y="3" rx="1"/><rect width="7" height="7" x="14" y="3" rx="1"/><rect width="7" height="7" x="14" y="14" rx="1"/><rect width="7" height="7" x="3" y="14" rx="1"/></svg>
</span>
<span class="fms-tabs-tool" title="刷新当前页">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/></svg>
</span>
<span class="fms-tabs-tool" title="内容最大化">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><rect width="10" height="8" x="7" y="8" rx="1"/></svg>
</span>
</div>
</div>
</body>
</html>