feat: 增加宁德时代的图表

This commit is contained in:
R524809
2026-09-24 17:14:03 +08:00
parent 3a3d19d5dd
commit f646ee6718
15 changed files with 1459 additions and 240 deletions
+105 -14
View File
@@ -323,30 +323,109 @@ button {
.content { min-width: 0; }
.tabs {
/* ── 页头:tab 栏 + 参数行 ─────────────────────────
sticky 只挂在容器上,里面两行一起钉住。底色比过去(.6)更实、并加一层模糊:
现在压在卡片上方的是两行内容,透过去的字会干扰读数。 */
.tab-header {
position: sticky;
top: 20px;
z-index: 5;
margin-bottom: 18px;
padding: 5px;
background: rgba(255, 255, 255, .82);
border: 1px solid var(--line);
border-radius: 9px;
backdrop-filter: blur(10px);
}
.tabs {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 18px;
padding: 5px;
background: rgba(255, 255, 255, .6);
border: 1px solid var(--line);
border-radius: 9px;
}
.tab-button { padding: 7px 11px; }
/* ── tab 级参数控件(现价) ─────────────────────────
独立一行,贴在 tab 栏下沿;一条虚线分隔说明「这不是导航,是改口径的输入」。
没有参数的 tab 会被 JS 置 hidden,此时整行(含分隔线)不占位。 */
.tab-controls {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin-top: 5px;
padding: 6px 3px 1px;
border-top: 1px dashed var(--line);
}
/* hidden 属性会被上面的 display:flex 盖掉,显式收回来 */
.tab-controls[hidden] { display: none; }
.param-field {
display: flex;
align-items: baseline;
gap: 5px;
padding: 4px 8px;
background: #f4f2ee;
border: 1px solid transparent;
border-radius: 6px;
transition: border-color .15s, background .15s;
}
.param-field:hover { border-color: var(--line); }
.param-field:focus-within { background: var(--surface); border-color: var(--accent); }
.param-label { color: var(--muted); font-size: 12px; white-space: nowrap; }
/* 输入框只留一条下划线:数字是这里的主角,不要给它加边框抢视线 */
.param-input {
width: 94px;
padding: 1px 2px;
border: 0;
border-bottom: 1px solid var(--line);
background: transparent;
color: var(--ink);
font: inherit;
font-size: 13px;
font-variant-numeric: tabular-nums;
font-weight: 600;
text-align: right;
}
.param-input:focus { outline: none; border-bottom-color: var(--accent); }
.param-input[data-invalid="true"] { color: #a63f32; border-bottom-color: #a63f32; }
/* 上下箭头在 Chrome 里只在悬停/聚焦时出现,保留(步进 1 元比手敲快) */
.param-input::-webkit-inner-spin-button { opacity: .45; }
.param-unit { color: var(--muted); font-size: 12px; }
/* 合法区间常驻:输入越界时它变红,不用猜上下限 */
.param-range { color: var(--muted); font-size: 11px; white-space: nowrap; }
.param-input[data-invalid="true"] ~ .param-range { color: #a63f32; }
.param-reset {
padding: 5px 8px;
border: 1px solid transparent;
border-radius: 6px;
background: transparent;
color: var(--muted);
font-size: 12px;
white-space: nowrap;
}
.param-reset:hover:not(:disabled) { color: var(--accent); border-color: var(--line); }
.param-reset:disabled { opacity: .35; cursor: default; }
.cards { display: grid; gap: 28px; }
/* scroll-margin-top = 页头底边(sticky top 20 + 页头实测高 89)+ 18px 呼吸:
页头是 tab 栏 + 参数行两行,比过去的单行 tab 栏高约 43px,锚点跳转时标题才不会被盖住。
页头高度会随 tab 换行浮动,这里按单行 tab 的最常见形态取值。 */
.card {
overflow: hidden;
background: var(--surface);
border-radius: 10px;
box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
scroll-margin-top: 84px;
scroll-margin-top: 128px;
}
.card-bar {
@@ -417,24 +496,36 @@ button {
}
.company-sidebar .sidebar-title { display: none; }
.company-list { display: flex; overflow-x: auto; }
/* 隐藏横向滚动条(与 .tabs 同处理):classic 滚动条会占掉 15px 高度,
把贴在公司栏下方的页头压住 —— 而页头的 sticky top 是写死的 50px。 */
.company-list { scrollbar-width: none; }
.company-list::-webkit-scrollbar { display: none; }
.company-button { flex: 0 0 auto; width: auto; }
.tabs {
.tab-header {
top: 50px;
z-index: 6;
overflow-x: auto;
overflow-y: hidden;
flex-wrap: nowrap;
margin: 0 -12px 18px;
padding: 5px 12px;
padding: 5px 12px 7px;
border-width: 0 0 1px;
border-radius: 0;
background: rgba(245, 244, 241, .96);
backdrop-filter: blur(10px);
}
/* tab 按钮多时横向滚动 —— sticky 容器不能自己滚(会把参数行一起带走),
所以滚动只加在 .tabs 上,并用负 margin 抵消容器横向 padding 让滚动区撑到屏幕边 */
.tabs {
overflow-x: auto;
overflow-y: hidden;
flex-wrap: nowrap;
margin: 0 -12px;
padding: 0 12px;
scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab-button { flex: 0 0 auto; }
.card { scroll-margin-top: 120px; }
/* 参数行自成一行,不再跟 tab 栏抢横向空间:窄屏直接换行,分隔线通到屏幕两边 */
.tab-controls { margin: 5px -12px 0; padding: 7px 12px 1px; }
/* 公司栏 50 + 页头 91(tab 栏 33 + 参数行 41 及间距)+ 18px 呼吸 */
.card { scroll-margin-top: 160px; }
.card-bar { align-items: flex-start; flex-wrap: wrap; }
.cart-button { margin-left: auto; }
.cart-bar { left: 12px; right: 12px; transform: none; flex-wrap: wrap; }