/* ===================================================================== scholar-blue · 学院蓝主题(参考语言:经典学院派门户) 设计语言:深蓝顶栏/品牌行 + 白底主导航(吸顶反蓝) + 主蓝半透明下拉面板 + 居中双线栏目标题 + 日期方块 + 深蓝圆环纹理页脚 色彩令牌全部走 CSS 变量,theme.json color 参数经 :root 覆盖真实生效。 ===================================================================== */ /* --------------------------------------------------------------------- 1. 设计令牌(与 theme.json params 一一对应,禁止出现未消费的声明) --------------------------------------------------------------------- */ :root { --sp-primary: #0a5aa8; /* 主色:顶栏/品牌行/标题/强调 */ --sp-primary-dark: #033d70; /* 主色加深:hover/渐变端/页脚深端 */ --sp-primary-light: #1167bb; /* 主色提亮:亮线条/hover 链接/角标 */ --sp-nav-bg: #ffffff; /* 主导航条底色(白条学院风) */ --sp-footer-bg: #0b4781; /* 页脚主底 */ --sp-text: #333333; /* 正文 */ --sp-text-light: #777777; /* 次要文字 */ --sp-bg: #eff2f6; /* 页面底色 */ --sp-card-bg: #ffffff; /* 卡片底 */ --sp-border: #e3e7ee; /* 边框/分隔线 */ --sp-ink-on-dark: #ffffff; /* 深底主文字 */ --sp-ink-on-dark-soft: rgba(255,255,255,.72); /* 深底次要文字 */ --sp-ink-on-dark-faint: rgba(255,255,255,.45); --sp-panel: rgba(10,90,168,.94); /* 下拉面板(主色半透明) */ --sp-shadow-sm: 0 1px 4px rgba(3,61,112,.08); --sp-shadow-md: 0 6px 18px rgba(3,61,112,.12); --sp-shadow-lg: 0 14px 34px rgba(3,61,112,.18); --sp-radius: 6px; --sp-radius-lg: 10px; --sp-speed: .28s; --sp-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif; } /* --------------------------------------------------------------------- 2. Reset 与基础 --------------------------------------------------------------------- */ * { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; } body { font-family: var(--sp-font); font-size: 14px; line-height: 1.7; color: var(--sp-text); background: var(--sp-bg); word-break: break-word; } ul, ol { list-style: none; } a { color: var(--sp-primary); text-decoration: none; transition: color var(--sp-speed) ease; } a:hover { color: var(--sp-primary-light); } img { max-width: 100%; display: block; border: 0; } button { font-family: inherit; cursor: pointer; } input, button, select, textarea { font-size: inherit; color: inherit; } ::selection { background: var(--sp-primary); color: #fff; } /* 跳转链接:仅键盘聚焦时可见 */ .skip-link { position: absolute; left: -999px; top: 0; z-index: 300; background: var(--sp-primary-dark); color: #fff; padding: 8px 18px; border-radius: 0 0 var(--sp-radius) 0; } .skip-link:focus { left: 0; color: #fff; } /* 通用容器 */ .sp-container { width: 1200px; max-width: calc(100% - 40px); margin: 0 auto; } /* 屏幕阅读器专用 */ .sp-visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } /* 置顶徽章 */ .sp-top-badge { display: inline-block; flex: none; padding: 0 7px; line-height: 18px; font-size: 12px; color: #fff; background: var(--sp-primary-light); border-radius: 2px; letter-spacing: 1px; } /* 空状态 */ .sp-empty { padding: 56px 20px; text-align: center; color: var(--sp-text-light); } .sp-empty p:first-child { font-size: 16px; margin-bottom: 8px; } .sp-empty-hint { font-size: 13px; color: var(--sp-text-light); opacity: .75; } /* --------------------------------------------------------------------- 3. 顶栏(深蓝细条:日期 + 院系切换) --------------------------------------------------------------------- */ .sp-topbar { background: linear-gradient(90deg, var(--sp-primary-dark), var(--sp-primary)); color: var(--sp-ink-on-dark-soft); font-size: 13px; } .sp-topbar-inner { width: 1200px; max-width: calc(100% - 40px); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; min-height: 36px; } .sp-topbar-date { letter-spacing: .5px; } .sp-topbar-side { position: relative; } /* 院系切换:细字 + 箭头,展开为深蓝面板 */ .sp-colleges { position: relative; } .sp-colleges-toggle { display: inline-flex; align-items: center; gap: 6px; padding: 4px 2px; cursor: pointer; } .sp-colleges-toggle a { color: var(--sp-ink-on-dark-soft); } .sp-colleges-toggle a:hover { color: #fff; } .sp-colleges-arrow { font-style: normal; font-size: 10px; transition: transform var(--sp-speed) ease; } .sp-colleges:hover .sp-colleges-arrow { transform: rotate(180deg); } .sp-colleges-menu { position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px; max-height: 280px; overflow: auto; background: var(--sp-panel); backdrop-filter: blur(4px); border-top: 2px solid var(--sp-primary-light); border-radius: 0 0 var(--sp-radius) var(--sp-radius); box-shadow: var(--sp-shadow-lg); padding: 6px 0; opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity var(--sp-speed) ease, transform var(--sp-speed) ease, visibility var(--sp-speed); z-index: 120; } .sp-colleges:hover .sp-colleges-menu, .sp-colleges:focus-within .sp-colleges-menu { opacity: 1; visibility: visible; transform: translateY(0); } .sp-colleges-menu li a { display: block; padding: 7px 16px; color: var(--sp-ink-on-dark); font-size: 13px; border-left: 2px solid transparent; transition: background var(--sp-speed) ease, border-color var(--sp-speed) ease, padding-left var(--sp-speed) ease; } .sp-colleges-menu li a:hover { background: var(--sp-primary-dark); border-left-color: var(--sp-primary-light); padding-left: 20px; color: #fff; } .sp-colleges-menu li.active a { background: rgba(255,255,255,.08); border-left-color: var(--sp-primary-light); color: #fff; } /* --------------------------------------------------------------------- 4. 品牌行(深蓝主区:徽标 + 站名 + 圆角搜索) --------------------------------------------------------------------- */ .sp-brandbar { background: linear-gradient(100deg, var(--sp-primary-dark) 0%, var(--sp-primary) 62%, var(--sp-primary-light) 130%); color: var(--sp-ink-on-dark); position: relative; overflow: hidden; } /* 品牌行右侧淡圆环装饰(CSS 绘制,无图片依赖) */ .sp-brandbar::before, .sp-brandbar::after { content: ""; position: absolute; border-radius: 50%; border: 26px solid rgba(255,255,255,.05); pointer-events: none; } .sp-brandbar::before { width: 320px; height: 320px; right: -80px; top: -170px; } .sp-brandbar::after { width: 200px; height: 200px; right: 180px; bottom: -140px; border-width: 16px; } .sp-brandbar-inner { width: 1200px; max-width: calc(100% - 40px); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 22px 0; position: relative; z-index: 1; } .sp-brand { display: flex; align-items: center; gap: 14px; min-width: 0; } /* 徽标容器:白衬圆角方块,校徽任何底色都干净 */ .sp-brand-badge { flex: none; width: 58px; height: 58px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.94); border-radius: var(--sp-radius); box-shadow: 0 2px 8px rgba(3,61,112,.35); overflow: hidden; } .sp-brand-badge--plain { color: var(--sp-primary); } .sp-logo { width: 100%; height: 100%; object-fit: contain; } .sp-site-name { color: var(--sp-ink-on-dark); font-size: 27px; font-weight: 700; letter-spacing: 2px; line-height: 1.3; text-shadow: 0 2px 6px rgba(3,61,112,.4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 560px; } .sp-site-name:hover { color: #fff; } /* 搜索:白色胶囊(学院风记忆点) */ .sp-search { flex: none; display: flex; align-items: center; width: 300px; max-width: 36%; background: #fff; border-radius: 999px; padding: 3px 4px 3px 18px; box-shadow: 0 3px 10px rgba(3,61,112,.28); } .sp-search input { flex: 1; min-width: 0; border: 0; outline: none; background: transparent; font-size: 13px; color: var(--sp-text); line-height: 30px; } .sp-search input::placeholder { color: #a9b3c0; } .sp-search button { flex: none; width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--sp-primary); color: #fff; display: inline-flex; align-items: center; justify-content: center; transition: background var(--sp-speed) ease, transform var(--sp-speed) ease; } .sp-search button:hover { background: var(--sp-primary-light); transform: scale(1.06); } /* --------------------------------------------------------------------- 5. 主导航(白底条 + 主蓝半透明下拉面板 + 吸顶反蓝) --------------------------------------------------------------------- */ .sp-nav { background: var(--sp-nav-bg); box-shadow: var(--sp-shadow-sm); position: relative; z-index: 100; } /* 顶部主蓝细线:把导航条与品牌行缝在一起 */ .sp-nav::before { content: ""; display: block; height: 3px; background: linear-gradient(90deg, var(--sp-primary), var(--sp-primary-light)); } .sp-nav-inner { width: 1200px; max-width: calc(100% - 40px); margin: 0 auto; position: relative; } .sp-nav-toggle { display: none; } .sp-nav-list { display: flex; justify-content: space-between; } .sp-nav-list > li { position: relative; flex: 1 1 auto; text-align: center; } .sp-nav-list > li > a { display: flex; align-items: center; justify-content: center; gap: 5px; position: relative; padding: 0 10px; height: 52px; font-size: 16px; font-weight: 600; letter-spacing: 1px; color: var(--sp-primary-dark); white-space: nowrap; transition: color var(--sp-speed) ease, background var(--sp-speed) ease; } /* 底部指示条:hover/当前项 */ .sp-nav-list > li > a::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 0; height: 3px; background: var(--sp-primary); transform: translateX(-50%); transition: width var(--sp-speed) ease; } .sp-nav-list > li:hover > a, .sp-nav-list > li.active > a { color: var(--sp-primary); background: rgba(10,90,168,.06); } .sp-nav-list > li:hover > a::after, .sp-nav-list > li.active > a::after { width: 56%; } .sp-caret { font-style: normal; font-size: 11px; opacity: .65; transition: transform var(--sp-speed) ease; } .sp-nav-list > li:hover .sp-caret { transform: rotate(180deg); } /* —— 下拉面板:主蓝半透明、顶部亮线、项 hover 加深 + 左亮条(红线第一优先级) —— */ .sp-sub { position: absolute; left: 50%; top: 100%; transform: translate(-50%, 10px); min-width: 176px; background: var(--sp-panel); backdrop-filter: blur(6px); border-top: 3px solid var(--sp-primary-light); border-radius: 0 0 var(--sp-radius) var(--sp-radius); box-shadow: var(--sp-shadow-lg); padding: 6px 0; text-align: left; opacity: 0; visibility: hidden; transition: opacity var(--sp-speed) ease, transform var(--sp-speed) ease, visibility var(--sp-speed); z-index: 110; } .sp-nav-list > li:hover .sp-sub, .sp-nav-list > li:focus-within .sp-sub { opacity: 1; visibility: visible; transform: translate(-50%, 0); } /* 面板小尖角 */ .sp-sub::before { content: ""; position: absolute; left: 50%; top: -8px; width: 12px; height: 12px; background: var(--sp-primary); transform: translateX(-50%) rotate(45deg); border-radius: 2px 0 0 0; } .sp-sub li a { display: block; position: relative; margin: 2px 8px; padding: 9px 14px 9px 22px; font-size: 14px; color: var(--sp-ink-on-dark); border-radius: 4px; white-space: nowrap; transition: background var(--sp-speed) ease, padding-left var(--sp-speed) ease, color var(--sp-speed) ease; } /* 项前细刻度线 */ .sp-sub li a::before { content: ""; position: absolute; left: 10px; top: 50%; width: 4px; height: 4px; margin-top: -2px; background: rgba(255,255,255,.5); border-radius: 50%; transition: background var(--sp-speed) ease, box-shadow var(--sp-speed) ease; } .sp-sub li a:hover { background: var(--sp-primary-dark); padding-left: 26px; color: #fff; } .sp-sub li a:hover::before { background: var(--sp-primary-light); box-shadow: 0 0 6px var(--sp-primary-light); } /* —— 吸顶反蓝(.sp-nav--fixed 由 main.js 滚动加挂) —— */ .sp-nav--fixed { position: fixed; left: 0; right: 0; top: 0; background: linear-gradient(90deg, var(--sp-primary-dark), var(--sp-primary)); box-shadow: var(--sp-shadow-md); animation: sp-nav-drop var(--sp-speed) ease; } @keyframes sp-nav-drop { from { transform: translateY(-100%); } to { transform: translateY(0); } } .sp-nav--fixed::before { height: 0; } .sp-nav--fixed .sp-nav-list > li > a { color: var(--sp-ink-on-dark); } .sp-nav--fixed .sp-nav-list > li:hover > a, .sp-nav--fixed .sp-nav-list > li.active > a { color: #fff; background: rgba(255,255,255,.1); } .sp-nav--fixed .sp-nav-list > li > a::after { background: var(--sp-primary-light); } /* 吸顶态下拉:底色更沉,与蓝条衔接 */ .sp-nav--fixed .sp-sub { background: rgba(3,61,112,.96); } .sp-nav--fixed .sp-sub::before { background: var(--sp-primary-dark); } /* 吸顶占位,防跳变(main.js 加挂时同步高度,解锁即移除) */ .sp-nav-holder { display: block; } /* --------------------------------------------------------------------- 6. 首页 banner(通栏轮播 + 圆形箭头 + 底部圆点) --------------------------------------------------------------------- */ .sp-banner { position: relative; overflow: hidden; background: var(--sp-primary-dark); } .sp-banner-slides { position: relative; height: 520px; } .sp-banner-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .8s ease, visibility .8s ease; } .sp-banner-slide.active { opacity: 1; visibility: visible; z-index: 1; } .sp-banner-slide img { width: 100%; height: 100%; object-fit: cover; } /* 底部渐隐遮罩上承标题 */ .sp-banner-slide::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 120px; background: linear-gradient(180deg, transparent, rgba(3,61,112,.66)); pointer-events: none; } .sp-banner-slide.active img { animation: sp-banner-zoom 6.5s ease forwards; } @keyframes sp-banner-zoom { from { transform: scale(1); } to { transform: scale(1.045); } } .sp-banner-title { position: absolute; left: 6%; bottom: 34px; z-index: 2; max-width: 70%; color: #fff; font-size: 24px; font-weight: 600; letter-spacing: 1px; text-shadow: 0 2px 8px rgba(3,61,112,.6); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* 圆形半透明箭头(建平语言) */ .sp-banner-arrow { position: absolute; top: 50%; z-index: 3; width: 52px; height: 52px; margin-top: -26px; border: 2px solid rgba(255,255,255,.75); border-radius: 50%; background: rgba(3,61,112,.25); color: #fff; font-size: 26px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; padding-bottom: 4px; opacity: 0; transition: opacity var(--sp-speed) ease, background var(--sp-speed) ease, border-color var(--sp-speed) ease; } .sp-banner:hover .sp-banner-arrow { opacity: 1; } .sp-banner-arrow:hover { background: var(--sp-primary); border-color: #fff; } .sp-banner-arrow.prev { left: 26px; } .sp-banner-arrow.next { right: 26px; } /* 圆点指示器 */ .sp-banner-dots { position: absolute; left: 0; right: 0; bottom: 18px; z-index: 3; display: flex; justify-content: center; gap: 10px; } .sp-banner-dots button { width: 10px; height: 10px; border: 0; border-radius: 50%; background: rgba(255,255,255,.55); transition: background var(--sp-speed) ease, transform var(--sp-speed) ease; } .sp-banner-dots button:hover { background: #fff; } .sp-banner-dots button.active { background: #fff; transform: scale(1.25); box-shadow: 0 0 0 3px rgba(255,255,255,.25); } /* --------------------------------------------------------------------- 7. 区块标题(居中双线 + 下短横)与区块通用 --------------------------------------------------------------------- */ .sp-section { margin-top: 40px; } .sp-block-head { position: relative; text-align: center; padding: 14px 0 12px; border-top: 1px solid var(--sp-border); border-bottom: 1px solid var(--sp-border); } .sp-block-head h2 { display: inline-block; position: relative; font-size: 22px; font-weight: 700; letter-spacing: 3px; color: var(--sp-primary-dark); } /* 标题下短横:主蓝 3px */ .sp-block-tick { position: absolute; left: 50%; bottom: -2px; width: 42px; height: 3px; transform: translateX(-50%); background: var(--sp-primary); border-radius: 2px; } /* 栏目卡头变体:左右布局(标题居左 + 更多居右) */ .sp-block-head--bar { text-align: left; padding: 0 0 10px; border-top: 0; border-bottom: 2px solid var(--sp-primary); display: flex; align-items: baseline; justify-content: space-between; } .sp-block-head--bar h2 { font-size: 19px; letter-spacing: 1px; padding-left: 12px; position: relative; } /* 标题左侧竖条 */ .sp-block-head--bar h2::before { content: ""; position: absolute; left: 0; top: 6px; bottom: 6px; width: 4px; background: var(--sp-primary); border-radius: 2px; } .sp-block-head--bar .sp-block-tick { display: none; } .sp-more { font-size: 13px; font-weight: 400; color: var(--sp-text-light); letter-spacing: 0; transition: color var(--sp-speed) ease, transform var(--sp-speed) ease; } .sp-more:hover { color: var(--sp-primary); transform: translateX(3px); } /* --------------------------------------------------------------------- 8. 头条区(左:头条推荐列表 / 右:图片新闻) --------------------------------------------------------------------- */ .sp-headline { display: grid; grid-template-columns: 7fr 5fr; gap: 28px; } /* grid 项允许收缩到轨道内:否则 nowrap 省略文本会把 auto 最小宽撑破容器(移动端横向溢出) */ .sp-headline > * { min-width: 0; } .sp-headline-card, .sp-focus-card { background: var(--sp-card-bg); border-radius: var(--sp-radius-lg); box-shadow: var(--sp-shadow-sm); padding: 6px 22px 18px; } /* 头条推荐 */ .sp-headline-list li { display: flex; align-items: center; gap: 10px; padding: 10px 2px; border-bottom: 1px dashed var(--sp-border); } .sp-headline-list li:last-child { border-bottom: 0; } .sp-headline-list li a { flex: 1; min-width: 0; color: var(--sp-text); font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color var(--sp-speed) ease, padding-left var(--sp-speed) ease; } .sp-headline-list li a:hover { color: var(--sp-primary); padding-left: 4px; } .sp-headline-list time { flex: none; color: var(--sp-text-light); font-size: 13px; } /* 头条头条:大标题 + 元信息 */ .sp-headline-lead { display: block !important; padding: 14px 2px 16px !important; } .sp-lead-title { display: block; font-size: 19px !important; font-weight: 700; color: var(--sp-primary-dark) !important; line-height: 1.5; white-space: normal !important; overflow: hidden; max-height: 3em; } .sp-lead-title:hover { color: var(--sp-primary) !important; padding-left: 0 !important; } .sp-lead-meta { display: flex; align-items: center; gap: 10px; margin-top: 8px; font-size: 13px; color: var(--sp-text-light); } /* 图片新闻 */ .sp-focus-lead { display: block; margin-top: 14px; border-radius: var(--sp-radius); overflow: hidden; position: relative; } .sp-focus-cover { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--sp-bg); } .sp-focus-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } .sp-focus-lead:hover .sp-focus-cover img { transform: scale(1.05); } .sp-focus-title { position: absolute; left: 0; right: 0; bottom: 0; padding: 26px 14px 10px; color: #fff; font-size: 15px; font-weight: 600; background: linear-gradient(180deg, transparent, rgba(3,61,112,.82)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sp-focus-rows { margin-top: 10px; } .sp-focus-rows li a { display: flex; align-items: center; gap: 12px; padding: 8px 0; } .sp-row-cover { flex: none; width: 104px; height: 66px; border-radius: 4px; overflow: hidden; background: var(--sp-bg); } .sp-row-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } .sp-focus-rows li a:hover .sp-row-cover img { transform: scale(1.06); } .sp-row-title { flex: 1; min-width: 0; color: var(--sp-text); font-size: 14px; line-height: 1.55; max-height: 3.1em; overflow: hidden; transition: color var(--sp-speed) ease; } .sp-focus-rows li a:hover .sp-row-title { color: var(--sp-primary); } /* --------------------------------------------------------------------- 9. 栏目区块(白卡三列 + 日期方块行) --------------------------------------------------------------------- */ .sp-blocks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 14px; } .sp-block { background: var(--sp-card-bg); border-radius: var(--sp-radius-lg); box-shadow: var(--sp-shadow-sm); padding: 18px 20px 14px; display: flex; flex-direction: column; min-width: 0; transition: box-shadow var(--sp-speed) ease, transform var(--sp-speed) ease; } .sp-block:hover { box-shadow: var(--sp-shadow-md); transform: translateY(-2px); } .sp-block-list { flex: 1; } /* 区块头条(有封面图文 / 无封面纯文) */ .sp-block-featured { border-bottom: 1px solid var(--sp-border); } .sp-block-featured > a { display: block; padding: 12px 0 14px; } .sp-feat-cover { display: block; aspect-ratio: 16/9; border-radius: var(--sp-radius); overflow: hidden; background: var(--sp-bg); margin-bottom: 10px; } .sp-feat-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } .sp-block-featured > a:hover .sp-feat-cover img { transform: scale(1.04); } .sp-feat-title { display: block; font-size: 16px; font-weight: 700; color: var(--sp-primary-dark); line-height: 1.5; max-height: 3em; overflow: hidden; transition: color var(--sp-speed) ease; } .sp-block-featured > a:hover .sp-feat-title { color: var(--sp-primary); } .sp-feat-summary { display: block; margin-top: 6px; font-size: 13px; color: var(--sp-text-light); line-height: 1.65; max-height: 3.3em; overflow: hidden; } .sp-feat-meta { display: flex; align-items: center; gap: 10px; margin-top: 8px; font-size: 12px; color: var(--sp-text-light); } /* 列表行:日期方块 + 标题(建平通知公告语言) */ .sp-block-item { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px dashed var(--sp-border); } .sp-block-item:last-child { border-bottom: 0; } .sp-date-chip { flex: none; width: 46px; text-align: center; border-radius: 4px; overflow: hidden; background: var(--sp-bg); border: 1px solid var(--sp-border); transition: background var(--sp-speed) ease, border-color var(--sp-speed) ease; } .sp-date-chip b { display: block; font-size: 17px; line-height: 24px; font-weight: 700; color: var(--sp-primary); background: rgba(10,90,168,.08); transition: color var(--sp-speed) ease; } .sp-date-chip i { display: block; font-style: normal; font-size: 10px; line-height: 16px; color: var(--sp-text-light); transform: scale(.92); } .sp-block-item:hover .sp-date-chip { background: var(--sp-primary); border-color: var(--sp-primary); } .sp-block-item:hover .sp-date-chip b { color: #fff; background: transparent; } .sp-block-item:hover .sp-date-chip i { color: rgba(255,255,255,.8); } .sp-block-item-title { flex: 1; min-width: 0; font-size: 14px; color: var(--sp-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color var(--sp-speed) ease; } .sp-block-item:hover .sp-block-item-title { color: var(--sp-primary); } /* --------------------------------------------------------------------- 10. 列表/详情/单页公共:页面卡 + 面包屑 + 页题 --------------------------------------------------------------------- */ .sp-page { padding: 28px 0 48px; } .sp-page-card { background: var(--sp-card-bg); border-radius: var(--sp-radius-lg); box-shadow: var(--sp-shadow-sm); padding: 26px 32px 34px; min-height: 420px; } .sp-crumb { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--sp-text-light); padding-bottom: 14px; border-bottom: 1px solid var(--sp-border); margin-bottom: 20px; } .sp-crumb a { color: var(--sp-text-light); } .sp-crumb a:hover { color: var(--sp-primary); } .sp-crumb-sep { color: #c3cad4; } .sp-crumb-current { color: var(--sp-primary); } .sp-page-title { position: relative; font-size: 23px; font-weight: 700; letter-spacing: 1px; color: var(--sp-primary-dark); padding-left: 16px; margin-bottom: 22px; } .sp-page-title::before { content: ""; position: absolute; left: 0; top: 5px; bottom: 5px; width: 5px; border-radius: 3px; background: linear-gradient(180deg, var(--sp-primary), var(--sp-primary-light)); } /* --------------------------------------------------------------------- 11. 列表页:图文行 + 行式列表 + 分页 --------------------------------------------------------------------- */ .sp-article-list > li { border-bottom: 1px solid var(--sp-border); } .sp-article-list > li:last-child { border-bottom: 0; } /* 图文行 */ .sp-article-row { display: flex; gap: 20px; padding: 18px 2px; } .sp-item-cover { flex: none; width: 216px; aspect-ratio: 3/2; border-radius: var(--sp-radius); overflow: hidden; background: var(--sp-bg); } .sp-item-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; } .sp-article-row:hover .sp-item-cover img { transform: scale(1.05); } .sp-item-body { flex: 1; min-width: 0; padding-top: 4px; } .sp-item-title a { font-size: 17px; font-weight: 600; color: var(--sp-text); line-height: 1.5; transition: color var(--sp-speed) ease; } .sp-item-title a:hover { color: var(--sp-primary); } .sp-item-summary { margin-top: 8px; font-size: 13px; color: var(--sp-text-light); line-height: 1.7; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .sp-item-meta { display: flex; align-items: center; gap: 12px; margin-top: 10px; font-size: 12px; color: var(--sp-text-light); } /* 行式(无封面):刻度符号 + 标题 + 右侧日期 */ .sp-article-line { display: flex; align-items: center; gap: 12px; padding: 13px 2px; } .sp-line-tick { flex: none; width: 6px; height: 6px; background: var(--sp-primary); transform: rotate(45deg); opacity: .85; transition: transform var(--sp-speed) ease; } .sp-article-line:hover .sp-line-tick { transform: rotate(45deg) scale(1.35); } .sp-line-main { flex: 1; min-width: 0; } .sp-line-title { display: block; font-size: 15px; color: var(--sp-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color var(--sp-speed) ease, padding-left var(--sp-speed) ease; } .sp-article-line:hover .sp-line-title { color: var(--sp-primary); padding-left: 4px; } .sp-article-line .sp-item-summary { margin-top: 4px; -webkit-line-clamp: 1; } .sp-line-side { flex: none; display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--sp-text-light); } /* 分页 */ .sp-pagination { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 30px; } .sp-pagination a { min-width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; font-size: 14px; color: var(--sp-text); background: var(--sp-bg); border: 1px solid var(--sp-border); border-radius: 4px; transition: all var(--sp-speed) ease; } .sp-pagination a:hover { color: #fff; background: var(--sp-primary); border-color: var(--sp-primary); } .sp-pagination a.active { color: #fff; background: var(--sp-primary); border-color: var(--sp-primary); font-weight: 700; box-shadow: 0 3px 8px rgba(10,90,168,.35); } .sp-pagination a.disabled { opacity: .45; pointer-events: none; } /* --------------------------------------------------------------------- 12. 详情/单页:文章排版 --------------------------------------------------------------------- */ .sp-article-title { text-align: center; font-size: 24px; font-weight: 700; color: var(--sp-primary-dark); line-height: 1.5; padding: 6px 20px 0; } .sp-article-meta { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px 22px; padding: 14px 0 18px; margin-bottom: 24px; font-size: 13px; color: var(--sp-text-light); border-bottom: 1px solid var(--sp-border); position: relative; } /* 标题下居中短横(与区块标题语言呼应) */ .sp-article-meta::before { content: ""; position: absolute; left: 50%; top: -12px; width: 42px; height: 3px; transform: translateX(-50%); background: var(--sp-primary); border-radius: 2px; } .sp-article-content { font-size: 15px; line-height: 1.9; color: var(--sp-text); } .sp-article-content p { margin: 0 0 14px; } .sp-article-content h1, .sp-article-content h2, .sp-article-content h3, .sp-article-content h4 { margin: 22px 0 12px; color: var(--sp-primary-dark); font-weight: 700; } .sp-article-content h2 { font-size: 19px; } .sp-article-content h3 { font-size: 17px; } .sp-article-content h4 { font-size: 15px; } .sp-article-content img { max-width: 100%; height: auto; border-radius: var(--sp-radius); margin: 6px auto 14px; box-shadow: var(--sp-shadow-sm); } .sp-article-content ul, .sp-article-content ol { margin: 0 0 14px; padding-left: 26px; } .sp-article-content ul li { list-style: disc; } .sp-article-content ol li { list-style: decimal; } .sp-article-content li { margin-bottom: 6px; } .sp-article-content blockquote { margin: 14px 0; padding: 12px 18px; background: rgba(10,90,168,.05); border-left: 4px solid var(--sp-primary); border-radius: 0 var(--sp-radius) var(--sp-radius) 0; color: var(--sp-text-light); } .sp-article-content table { width: 100%; border-collapse: collapse; margin: 14px 0; font-size: 14px; } .sp-article-content th, .sp-article-content td { border: 1px solid var(--sp-border); padding: 8px 12px; text-align: left; } .sp-article-content th { background: rgba(10,90,168,.06); color: var(--sp-primary-dark); font-weight: 600; } .sp-article-content a { color: var(--sp-primary-light); text-decoration: underline; } .sp-article-content hr { border: 0; height: 1px; background: var(--sp-border); margin: 20px 0; } .sp-article-content video, .sp-article-content audio { max-width: 100%; } /* 上下篇 */ .sp-sibling { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 34px; padding-top: 22px; border-top: 1px solid var(--sp-border); } .sp-sib, .sp-sib-none { display: block; padding: 12px 16px; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-bg); min-width: 0; transition: border-color var(--sp-speed) ease, background var(--sp-speed) ease, box-shadow var(--sp-speed) ease; } .sp-sib:hover { border-color: var(--sp-primary); background: var(--sp-card-bg); box-shadow: var(--sp-shadow-sm); } .sp-sib.next { text-align: right; } .sp-sib-label { display: block; font-size: 12px; color: var(--sp-primary); letter-spacing: 2px; margin-bottom: 4px; } .sp-sib-title { display: block; font-size: 14px; color: var(--sp-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sp-sib-none { opacity: .6; } .sp-sib-none .sp-sib-label { color: var(--sp-text-light); } /* --------------------------------------------------------------------- 13. 页脚(深蓝渐变 + 同心圆环纹理 + 三栏 + 底条) --------------------------------------------------------------------- */ .sp-footer { position: relative; margin-top: 56px; color: var(--sp-ink-on-dark); background: linear-gradient(160deg, var(--sp-footer-bg) 0%, var(--sp-primary-dark) 100%); overflow: hidden; } /* 同心圆环纹理(CSS 绘制,呼应校徽环形语言) */ .sp-ring { position: absolute; border-radius: 50%; border: 2px solid rgba(255,255,255,.06); pointer-events: none; } .sp-ring--1 { width: 460px; height: 460px; right: -140px; top: -160px; border-width: 30px; } .sp-ring--2 { width: 300px; height: 300px; right: -60px; top: -80px; border-width: 18px; } .sp-ring--3 { width: 520px; height: 520px; left: -200px; bottom: -300px; border-width: 34px; } .sp-footer-inner { width: 1200px; max-width: calc(100% - 40px); margin: 0 auto; position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr 1.2fr 1.4fr; gap: 40px; padding: 44px 0 36px; } .sp-footer-inner > * { min-width: 0; } .sp-footer-brand { display: flex; align-items: center; gap: 14px; } .sp-footer-badge { flex: none; width: 66px; height: 66px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.94); border-radius: var(--sp-radius); overflow: hidden; box-shadow: 0 2px 10px rgba(3,61,112,.4); } .sp-footer-badge--plain { color: var(--sp-primary); } .sp-footer-logo { width: 100%; height: 100%; object-fit: contain; } .sp-footer-site { font-size: 21px; font-weight: 700; letter-spacing: 1.5px; line-height: 1.45; text-shadow: 0 2px 6px rgba(3,61,112,.4); } .sp-footer-info { padding-top: 6px; } .sp-footer-line { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; font-size: 13px; color: var(--sp-ink-on-dark-soft); line-height: 1.7; } .sp-dot { flex: none; width: 6px; height: 6px; background: var(--sp-primary-light); border-radius: 50%; transform: translateY(-2px); box-shadow: 0 0 6px rgba(17,103,187,.9); } .sp-footer-links { padding-top: 6px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 28px; } .sp-group-name { display: inline-block; font-size: 13px; font-weight: 600; color: #fff; padding-bottom: 4px; margin-bottom: 6px; border-bottom: 2px solid var(--sp-primary-light); } .sp-links-row { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-bottom: 10px; } .sp-links-row a { font-size: 13px; color: var(--sp-ink-on-dark-soft); transition: color var(--sp-speed) ease, padding-left var(--sp-speed) ease; } .sp-links-row a:hover { color: #fff; padding-left: 2px; } .sp-footer-bottom { position: relative; z-index: 1; border-top: 1px solid rgba(255,255,255,.14); text-align: center; padding: 16px 0; font-size: 13px; color: var(--sp-ink-on-dark-faint); letter-spacing: 1px; } /* --------------------------------------------------------------------- 14. 响应式:1200 / 992 / 768 三档 --------------------------------------------------------------------- */ @media (max-width: 1240px) { .sp-container, .sp-topbar-inner, .sp-brandbar-inner, .sp-nav-inner { max-width: calc(100% - 40px); } } @media (max-width: 992px) { .sp-site-name { font-size: 22px; max-width: 380px; } .sp-search { width: 240px; } .sp-nav-list { flex-wrap: wrap; justify-content: flex-start; } .sp-nav-list > li { flex: 0 0 auto; } .sp-nav-list > li > a { height: 46px; font-size: 15px; padding: 0 12px; } .sp-headline { grid-template-columns: 1fr; } .sp-blocks { grid-template-columns: repeat(2, 1fr); } .sp-banner-slides { height: 380px; } .sp-banner-title { font-size: 19px; bottom: 28px; } .sp-footer-inner { grid-template-columns: 1fr 1fr; } } @media (max-width: 768px) { /* —— 品牌行收纳 —— */ .sp-brandbar-inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 0; } .sp-site-name { font-size: 19px; max-width: none; white-space: normal; } .sp-brand { justify-content: center; } .sp-search { width: 100%; max-width: none; } /* —— 移动端导航:抽屉展开 —— */ .sp-nav-toggle { display: inline-flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 40px; padding: 8px; border: 1px solid var(--sp-border); border-radius: var(--sp-radius); background: var(--sp-card-bg); } .sp-nav-toggle span { display: block; height: 2px; background: var(--sp-primary); border-radius: 2px; transition: transform var(--sp-speed) ease, opacity var(--sp-speed) ease; } .sp-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); } .sp-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; } .sp-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); } .sp-nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; } /* 吸顶在移动端直接融入文档流配色 */ .sp-nav--fixed { position: sticky; animation: none; } .sp-nav-list { display: none; position: absolute; left: -20px; right: -20px; top: 100%; flex-direction: column; background: var(--sp-card-bg); box-shadow: var(--sp-shadow-md); border-top: 1px solid var(--sp-border); padding: 6px 16px 12px; max-height: 68vh; overflow: auto; } .sp-nav-list.sp-open { display: flex; } .sp-nav-list > li { text-align: left; border-bottom: 1px solid var(--sp-border); } .sp-nav-list > li:last-child { border-bottom: 0; } .sp-nav-list > li > a { height: 46px; justify-content: flex-start; } .sp-nav-list > li > a::after { display: none; } /* 移动端二级:手风琴内联展开(.sp-sub-open 由 main.js 控制) */ .sp-sub { position: static; display: none; transform: none; opacity: 1; visibility: visible; background: var(--sp-bg); border-top: 0; box-shadow: none; border-radius: 0; margin: 0 -8px 8px; padding: 4px 0; } .sp-sub::before { display: none; } .sp-sub li a { color: var(--sp-text); margin: 0 8px; } .sp-sub li a:hover { background: rgba(10,90,168,.08); color: var(--sp-primary); } .sp-sub li a::before { background: var(--sp-primary); opacity: .5; } .sp-nav-list li.sp-sub-open .sp-sub { display: block; } .sp-nav-list li.has-sub > a { cursor: pointer; } /* —— 内容收纳 —— */ .sp-banner-slides { height: 240px; } .sp-banner-title { font-size: 15px; left: 16px; bottom: 20px; max-width: 85%; } .sp-banner-arrow { display: none; } .sp-section { margin-top: 28px; } .sp-blocks { grid-template-columns: 1fr; } .sp-block-head h2 { font-size: 19px; } .sp-article-row { flex-direction: column; gap: 12px; } .sp-item-cover { width: 100%; } .sp-article-line { flex-wrap: wrap; } .sp-line-side { width: 100%; padding-left: 18px; } .sp-page-card { padding: 18px 16px 24px; } .sp-article-title { font-size: 20px; padding: 0; } .sp-article-meta { gap: 4px 14px; } .sp-sibling { grid-template-columns: 1fr; } .sp-sib-title { white-space: normal; } .sp-footer-inner { grid-template-columns: 1fr; gap: 26px; padding: 32px 0 26px; } .sp-footer-links { grid-template-columns: 1fr; } .sp-ring--1 { width: 300px; height: 300px; border-width: 20px; } } /* --------------------------------------------------------------------- 15. 动效偏好:尊重系统减弱动态设置 --------------------------------------------------------------------- */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } } /* B4 友链 Logo:与名称并排小图(高度 ~20px,垂直居中;过宽截断不撑破页脚) */ .links-group a .link-logo, .sp-links-row a .link-logo { height: 20px; width: auto; max-width: 64px; object-fit: contain; vertical-align: middle; margin-right: 4px; border-radius: 2px; }