- PortalLink 模型已有 logoUrl,渲染缺口在模板:5 套 footer 增 th:if logo 图(url.upload 补基准+alt 名称+lazy) - 5 套 main.css 增 .link-logo(高20px/contain/垂直居中/过宽截断) - PortalSsrIT+2 例(有 logo 渲染图/无 logo 纯文字无 link-logo);mvn -o test 260/260 全绿
1308 lines
40 KiB
CSS
1308 lines
40 KiB
CSS
/* =====================================================================
|
|
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;
|
|
}
|