build / build-push (push) Successful in 51s
线上 10027 首页配了 home_layout 后走 themes/common 通用骨架,派生皮肤只换了页头页脚, 正文仍是骨架内置蓝灰卡(外加 cherry-bloom 的粉紫配色),用户判定"完全不能用"。 - 新增 academic-navy(学府藏蓝,an-)/campus-azure(青蓝校园,cz-):以 scholar-blue 为基座, 各自自带 fragments/home-blocks.html 与 home.html 分发,news_grid/media_focus/compact/ image_wall/card/ticker/gallery/links 八种区块形态全部由皮肤渲染,未知类型才回落通用骨架 - 两套皮肤 :root 把私有变量别名到 --primary/--text/--card-bg/--border/--radius 契约变量; 中文行锁 nowrap+min-width:0+ellipsis,grid 轨道用 minmax(0,1fr) 防窄视口压塌 - 新闻背景带 .an-sec-bg/.cz-sec-bg 压 z-index:0、卡片抬到 1:绝对定位层默认画在普通流之上, 不抬起会整张卡片泛成底图色(无头截图实测) - common 骨架空态守卫改包 th:block(th:replace 优先级 100 先于 th:if 300) - 删除 cherry-bloom/violet-iris;sql/upgrade_theme_academic_skins.sql 幂等改指存量站点 (站点缓存 CacheNames.SITE TTL 30 分钟,改库后需重启或在管理端重存站点) - 测试:AcademicSkinContractTest(区块自带/分发/CJK 行/变量别名/主色必须学术蓝/背景带层级/ 预览图不得沿用基座)、HomeBlocksCssContractTest、PortalHomeLayoutIT 端到端断言零 plb- 输出; 全量 383 项通过
1498 lines
47 KiB
CSS
1498 lines
47 KiB
CSS
/* =====================================================================
|
||
academic-navy · 学府藏蓝(基座 scholar-blue,参考语言:综合类高校官网门户)
|
||
设计语言:藏蓝顶栏/品牌行 + 白底主导航(吸顶反蓝) + 金线标题 + 日期方块行
|
||
+ 布局模式双栏要闻(左图文右密行)+ 藏蓝要闻速递条 + 深色圆环页脚
|
||
色彩令牌全部走 CSS 变量,theme.json color 参数经 :root 覆盖真实生效。
|
||
===================================================================== */
|
||
|
||
/* ---------------------------------------------------------------------
|
||
1. 设计令牌(与 theme.json params 一一对应,禁止出现未消费的声明)
|
||
--------------------------------------------------------------------- */
|
||
:root {
|
||
--an-primary: #0b4a8f; /* 主色:藏蓝,顶栏/品牌行/标题/强调 */
|
||
--an-primary-dark: #063161; /* 主色加深:hover/渐变端/页脚深端 */
|
||
--an-primary-light: #1a6cb5; /* 主色提亮:亮线条/hover 链接/角标 */
|
||
--an-accent: #b8934a; /* 点缀金:标题下划细线/日期方块描边(高校官网常见金线) */
|
||
--an-nav-bg: #ffffff; /* 主导航条底色(白条学院风) */
|
||
--an-footer-bg: #0a2b4d; /* 页脚主底 */
|
||
--an-text: #2b3644; /* 正文 */
|
||
--an-text-light: #6b7889; /* 次要文字 */
|
||
--an-bg: #f1f4f9; /* 页面底色 */
|
||
--an-card-bg: #ffffff; /* 卡片底 */
|
||
--an-border: #dbe3ee; /* 边框/分隔线 */
|
||
|
||
--an-ink-on-dark: #ffffff; /* 深底主文字 */
|
||
--an-ink-on-dark-soft: rgba(255,255,255,.74); /* 深底次要文字 */
|
||
--an-ink-on-dark-faint: rgba(255,255,255,.46);
|
||
--an-panel: rgba(11,74,143,.95); /* 下拉面板(主色半透明) */
|
||
--an-shadow-sm: 0 1px 4px rgba(6,49,97,.08);
|
||
--an-shadow-md: 0 6px 18px rgba(6,49,97,.12);
|
||
--an-shadow-lg: 0 14px 34px rgba(6,49,97,.18);
|
||
--an-radius: 4px;
|
||
--an-radius-lg: 8px;
|
||
--an-speed: .28s;
|
||
--an-font: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif;
|
||
|
||
/* 皮肤契约别名:站点配了 home_layout 时首页走 common/fragments/home-blocks 骨架,
|
||
该骨架只认契约变量(--primary/--text/…)。不别名过去,换肤就只换了页头页脚、正文区块仍是骨架内置色。 */
|
||
--primary: var(--an-primary);
|
||
--primary-dark: var(--an-primary-dark);
|
||
--primary-light: var(--an-primary-light);
|
||
--text: var(--an-text);
|
||
--text-light: var(--an-text-light);
|
||
--bg: var(--an-bg);
|
||
--card-bg: var(--an-card-bg);
|
||
--border: var(--an-border);
|
||
--radius: var(--an-radius-lg);
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
2. Reset 与基础
|
||
--------------------------------------------------------------------- */
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
|
||
html { -webkit-text-size-adjust: 100%; }
|
||
|
||
body {
|
||
font-family: var(--an-font);
|
||
font-size: 14px;
|
||
line-height: 1.7;
|
||
color: var(--an-text);
|
||
background: var(--an-bg);
|
||
word-break: break-word;
|
||
}
|
||
|
||
ul, ol { list-style: none; }
|
||
|
||
a { color: var(--an-primary); text-decoration: none; transition: color var(--an-speed) ease; }
|
||
a:hover { color: var(--an-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(--an-primary); color: #fff; }
|
||
|
||
/* 跳转链接:仅键盘聚焦时可见 */
|
||
.skip-link {
|
||
position: absolute; left: -999px; top: 0; z-index: 300;
|
||
background: var(--an-primary-dark); color: #fff;
|
||
padding: 8px 18px; border-radius: 0 0 var(--an-radius) 0;
|
||
}
|
||
.skip-link:focus { left: 0; color: #fff; }
|
||
|
||
/* 通用容器 */
|
||
.an-container {
|
||
width: 1200px; max-width: calc(100% - 40px);
|
||
margin: 0 auto;
|
||
}
|
||
|
||
/* 屏幕阅读器专用 */
|
||
.an-visually-hidden {
|
||
position: absolute; width: 1px; height: 1px;
|
||
margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
|
||
}
|
||
|
||
/* 置顶徽章 */
|
||
.an-top-badge {
|
||
display: inline-block; flex: none;
|
||
padding: 0 7px; line-height: 18px;
|
||
font-size: 12px; color: #fff;
|
||
background: var(--an-primary-light);
|
||
border-radius: 2px;
|
||
letter-spacing: 1px;
|
||
}
|
||
|
||
/* 空状态 */
|
||
.an-empty {
|
||
padding: 56px 20px;
|
||
text-align: center;
|
||
color: var(--an-text-light);
|
||
}
|
||
.an-empty p:first-child { font-size: 16px; margin-bottom: 8px; }
|
||
.an-empty-hint { font-size: 13px; color: var(--an-text-light); opacity: .75; }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
3. 顶栏(深蓝细条:日期 + 院系切换)
|
||
--------------------------------------------------------------------- */
|
||
.an-topbar {
|
||
background: linear-gradient(90deg, var(--an-primary-dark), var(--an-primary));
|
||
color: var(--an-ink-on-dark-soft);
|
||
font-size: 13px;
|
||
}
|
||
|
||
.an-topbar-inner {
|
||
width: 1200px; max-width: calc(100% - 40px);
|
||
margin: 0 auto;
|
||
display: flex; align-items: center; justify-content: space-between;
|
||
min-height: 36px;
|
||
}
|
||
|
||
.an-topbar-date { letter-spacing: .5px; }
|
||
|
||
.an-topbar-side { position: relative; }
|
||
|
||
/* 院系切换:细字 + 箭头,展开为深蓝面板 */
|
||
.an-colleges { position: relative; }
|
||
|
||
.an-colleges-toggle {
|
||
display: inline-flex; align-items: center; gap: 6px;
|
||
padding: 4px 2px;
|
||
cursor: pointer;
|
||
}
|
||
.an-colleges-toggle a { color: var(--an-ink-on-dark-soft); }
|
||
.an-colleges-toggle a:hover { color: #fff; }
|
||
|
||
.an-colleges-arrow {
|
||
font-style: normal; font-size: 10px;
|
||
transition: transform var(--an-speed) ease;
|
||
}
|
||
.an-colleges:hover .an-colleges-arrow { transform: rotate(180deg); }
|
||
|
||
.an-colleges-menu {
|
||
position: absolute; right: 0; top: calc(100% + 6px);
|
||
min-width: 180px; max-height: 280px; overflow: auto;
|
||
background: var(--an-panel);
|
||
backdrop-filter: blur(4px);
|
||
border-top: 2px solid var(--an-primary-light);
|
||
border-radius: 0 0 var(--an-radius) var(--an-radius);
|
||
box-shadow: var(--an-shadow-lg);
|
||
padding: 6px 0;
|
||
opacity: 0; visibility: hidden; transform: translateY(-6px);
|
||
transition: opacity var(--an-speed) ease, transform var(--an-speed) ease, visibility var(--an-speed);
|
||
z-index: 120;
|
||
}
|
||
.an-colleges:hover .an-colleges-menu,
|
||
.an-colleges:focus-within .an-colleges-menu {
|
||
opacity: 1; visibility: visible; transform: translateY(0);
|
||
}
|
||
|
||
.an-colleges-menu li a {
|
||
display: block;
|
||
padding: 7px 16px;
|
||
color: var(--an-ink-on-dark);
|
||
font-size: 13px;
|
||
border-left: 2px solid transparent;
|
||
transition: background var(--an-speed) ease, border-color var(--an-speed) ease, padding-left var(--an-speed) ease;
|
||
}
|
||
.an-colleges-menu li a:hover {
|
||
background: var(--an-primary-dark);
|
||
border-left-color: var(--an-primary-light);
|
||
padding-left: 20px;
|
||
color: #fff;
|
||
}
|
||
.an-colleges-menu li.active a {
|
||
background: rgba(255,255,255,.08);
|
||
border-left-color: var(--an-primary-light);
|
||
color: #fff;
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
4. 品牌行(深蓝主区:徽标 + 站名 + 圆角搜索)
|
||
--------------------------------------------------------------------- */
|
||
.an-brandbar {
|
||
background: linear-gradient(100deg, var(--an-primary-dark) 0%, var(--an-primary) 62%, var(--an-primary-light) 130%);
|
||
color: var(--an-ink-on-dark);
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
/* 品牌行右侧淡圆环装饰(CSS 绘制,无图片依赖) */
|
||
.an-brandbar::before,
|
||
.an-brandbar::after {
|
||
content: "";
|
||
position: absolute;
|
||
border-radius: 50%;
|
||
border: 26px solid rgba(255,255,255,.05);
|
||
pointer-events: none;
|
||
}
|
||
.an-brandbar::before { width: 320px; height: 320px; right: -80px; top: -170px; }
|
||
.an-brandbar::after { width: 200px; height: 200px; right: 180px; bottom: -140px; border-width: 16px; }
|
||
|
||
.an-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;
|
||
}
|
||
|
||
.an-brand {
|
||
display: flex; align-items: center; gap: 14px;
|
||
min-width: 0;
|
||
}
|
||
|
||
/* 徽标容器:白衬圆角方块,校徽任何底色都干净 */
|
||
.an-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(--an-radius);
|
||
box-shadow: 0 2px 8px rgba(6,49,97,.35);
|
||
overflow: hidden;
|
||
}
|
||
.an-brand-badge--plain { color: var(--an-primary); }
|
||
.an-logo { width: 100%; height: 100%; object-fit: contain; }
|
||
|
||
.an-site-name {
|
||
color: var(--an-ink-on-dark);
|
||
font-size: 27px;
|
||
font-weight: 700;
|
||
letter-spacing: 2px;
|
||
line-height: 1.3;
|
||
text-shadow: 0 2px 6px rgba(6,49,97,.4);
|
||
white-space: nowrap;
|
||
overflow: hidden; text-overflow: ellipsis;
|
||
max-width: 560px;
|
||
}
|
||
.an-site-name:hover { color: #fff; }
|
||
|
||
/* 搜索:白色胶囊(学院风记忆点) */
|
||
.an-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(6,49,97,.28);
|
||
}
|
||
.an-search input {
|
||
flex: 1; min-width: 0;
|
||
border: 0; outline: none;
|
||
background: transparent;
|
||
font-size: 13px; color: var(--an-text);
|
||
line-height: 30px;
|
||
}
|
||
.an-search input::placeholder { color: #a9b3c0; }
|
||
.an-search button {
|
||
flex: none;
|
||
width: 32px; height: 32px;
|
||
border: 0; border-radius: 50%;
|
||
background: var(--an-primary);
|
||
color: #fff;
|
||
display: inline-flex; align-items: center; justify-content: center;
|
||
transition: background var(--an-speed) ease, transform var(--an-speed) ease;
|
||
}
|
||
.an-search button:hover { background: var(--an-primary-light); transform: scale(1.06); }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
5. 主导航(白底条 + 主蓝半透明下拉面板 + 吸顶反蓝)
|
||
--------------------------------------------------------------------- */
|
||
.an-nav {
|
||
background: var(--an-nav-bg);
|
||
box-shadow: var(--an-shadow-sm);
|
||
position: relative;
|
||
z-index: 100;
|
||
}
|
||
/* 顶部主蓝细线:把导航条与品牌行缝在一起 */
|
||
.an-nav::before {
|
||
content: "";
|
||
display: block; height: 3px;
|
||
background: linear-gradient(90deg, var(--an-primary), var(--an-primary-light));
|
||
}
|
||
|
||
.an-nav-inner {
|
||
width: 1200px; max-width: calc(100% - 40px);
|
||
margin: 0 auto;
|
||
position: relative;
|
||
}
|
||
|
||
.an-nav-toggle { display: none; }
|
||
|
||
.an-nav-list {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.an-nav-list > li { position: relative; flex: 1 1 auto; text-align: center; }
|
||
|
||
.an-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(--an-primary-dark);
|
||
white-space: nowrap;
|
||
transition: color var(--an-speed) ease, background var(--an-speed) ease;
|
||
}
|
||
/* 底部指示条:hover/当前项 */
|
||
.an-nav-list > li > a::after {
|
||
content: "";
|
||
position: absolute; left: 50%; bottom: 0;
|
||
width: 0; height: 3px;
|
||
background: var(--an-primary);
|
||
transform: translateX(-50%);
|
||
transition: width var(--an-speed) ease;
|
||
}
|
||
.an-nav-list > li:hover > a,
|
||
.an-nav-list > li.active > a {
|
||
color: var(--an-primary);
|
||
background: rgba(11,74,143,.06);
|
||
}
|
||
.an-nav-list > li:hover > a::after,
|
||
.an-nav-list > li.active > a::after { width: 56%; }
|
||
|
||
.an-caret {
|
||
font-style: normal; font-size: 11px;
|
||
opacity: .65;
|
||
transition: transform var(--an-speed) ease;
|
||
}
|
||
.an-nav-list > li:hover .an-caret { transform: rotate(180deg); }
|
||
|
||
/* —— 下拉面板:主蓝半透明、顶部亮线、项 hover 加深 + 左亮条(红线第一优先级) —— */
|
||
.an-sub {
|
||
position: absolute; left: 50%; top: 100%;
|
||
transform: translate(-50%, 10px);
|
||
min-width: 176px;
|
||
background: var(--an-panel);
|
||
backdrop-filter: blur(6px);
|
||
border-top: 3px solid var(--an-primary-light);
|
||
border-radius: 0 0 var(--an-radius) var(--an-radius);
|
||
box-shadow: var(--an-shadow-lg);
|
||
padding: 6px 0;
|
||
text-align: left;
|
||
opacity: 0; visibility: hidden;
|
||
transition: opacity var(--an-speed) ease, transform var(--an-speed) ease, visibility var(--an-speed);
|
||
z-index: 110;
|
||
}
|
||
.an-nav-list > li:hover .an-sub,
|
||
.an-nav-list > li:focus-within .an-sub {
|
||
opacity: 1; visibility: visible;
|
||
transform: translate(-50%, 0);
|
||
}
|
||
|
||
/* 面板小尖角 */
|
||
.an-sub::before {
|
||
content: "";
|
||
position: absolute; left: 50%; top: -8px;
|
||
width: 12px; height: 12px;
|
||
background: var(--an-primary);
|
||
transform: translateX(-50%) rotate(45deg);
|
||
border-radius: 2px 0 0 0;
|
||
}
|
||
|
||
.an-sub li a {
|
||
display: block;
|
||
position: relative;
|
||
margin: 2px 8px;
|
||
padding: 9px 14px 9px 22px;
|
||
font-size: 14px;
|
||
color: var(--an-ink-on-dark);
|
||
border-radius: 4px;
|
||
white-space: nowrap;
|
||
transition: background var(--an-speed) ease, padding-left var(--an-speed) ease, color var(--an-speed) ease;
|
||
}
|
||
/* 项前细刻度线 */
|
||
.an-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(--an-speed) ease, box-shadow var(--an-speed) ease;
|
||
}
|
||
.an-sub li a:hover {
|
||
background: var(--an-primary-dark);
|
||
padding-left: 26px;
|
||
color: #fff;
|
||
}
|
||
.an-sub li a:hover::before {
|
||
background: var(--an-primary-light);
|
||
box-shadow: 0 0 6px var(--an-primary-light);
|
||
}
|
||
|
||
/* —— 吸顶反蓝(.an-nav--fixed 由 main.js 滚动加挂) —— */
|
||
.an-nav--fixed {
|
||
position: fixed; left: 0; right: 0; top: 0;
|
||
background: linear-gradient(90deg, var(--an-primary-dark), var(--an-primary));
|
||
box-shadow: var(--an-shadow-md);
|
||
animation: an-nav-drop var(--an-speed) ease;
|
||
}
|
||
@keyframes an-nav-drop {
|
||
from { transform: translateY(-100%); }
|
||
to { transform: translateY(0); }
|
||
}
|
||
.an-nav--fixed::before { height: 0; }
|
||
.an-nav--fixed .an-nav-list > li > a { color: var(--an-ink-on-dark); }
|
||
.an-nav--fixed .an-nav-list > li:hover > a,
|
||
.an-nav--fixed .an-nav-list > li.active > a {
|
||
color: #fff;
|
||
background: rgba(255,255,255,.1);
|
||
}
|
||
.an-nav--fixed .an-nav-list > li > a::after { background: var(--an-primary-light); }
|
||
/* 吸顶态下拉:底色更沉,与蓝条衔接 */
|
||
.an-nav--fixed .an-sub { background: rgba(6,49,97,.96); }
|
||
.an-nav--fixed .an-sub::before { background: var(--an-primary-dark); }
|
||
|
||
/* 吸顶占位,防跳变(main.js 加挂时同步高度,解锁即移除) */
|
||
.an-nav-holder { display: block; }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
6. 首页 banner(通栏轮播 + 圆形箭头 + 底部圆点)
|
||
--------------------------------------------------------------------- */
|
||
.an-banner {
|
||
position: relative;
|
||
overflow: hidden;
|
||
background: var(--an-primary-dark);
|
||
}
|
||
.an-banner-slides { position: relative; height: 520px; }
|
||
|
||
.an-banner-slide {
|
||
position: absolute; inset: 0;
|
||
opacity: 0; visibility: hidden;
|
||
transition: opacity .8s ease, visibility .8s ease;
|
||
}
|
||
.an-banner-slide.active { opacity: 1; visibility: visible; z-index: 1; }
|
||
|
||
.an-banner-slide img {
|
||
width: 100%; height: 100%;
|
||
object-fit: cover;
|
||
}
|
||
/* 底部渐隐遮罩上承标题 */
|
||
.an-banner-slide::after {
|
||
content: "";
|
||
position: absolute; left: 0; right: 0; bottom: 0;
|
||
height: 120px;
|
||
background: linear-gradient(180deg, transparent, rgba(6,49,97,.66));
|
||
pointer-events: none;
|
||
}
|
||
.an-banner-slide.active img { animation: an-banner-zoom 6.5s ease forwards; }
|
||
@keyframes an-banner-zoom {
|
||
from { transform: scale(1); }
|
||
to { transform: scale(1.045); }
|
||
}
|
||
|
||
.an-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(6,49,97,.6);
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
}
|
||
|
||
/* 圆形半透明箭头(建平语言) */
|
||
.an-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(6,49,97,.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(--an-speed) ease, background var(--an-speed) ease, border-color var(--an-speed) ease;
|
||
}
|
||
.an-banner:hover .an-banner-arrow { opacity: 1; }
|
||
.an-banner-arrow:hover { background: var(--an-primary); border-color: #fff; }
|
||
.an-banner-arrow.prev { left: 26px; }
|
||
.an-banner-arrow.next { right: 26px; }
|
||
|
||
/* 圆点指示器 */
|
||
.an-banner-dots {
|
||
position: absolute; left: 0; right: 0; bottom: 18px;
|
||
z-index: 3;
|
||
display: flex; justify-content: center; gap: 10px;
|
||
}
|
||
.an-banner-dots button {
|
||
width: 10px; height: 10px;
|
||
border: 0; border-radius: 50%;
|
||
background: rgba(255,255,255,.55);
|
||
transition: background var(--an-speed) ease, transform var(--an-speed) ease;
|
||
}
|
||
.an-banner-dots button:hover { background: #fff; }
|
||
.an-banner-dots button.active {
|
||
background: #fff;
|
||
transform: scale(1.25);
|
||
box-shadow: 0 0 0 3px rgba(255,255,255,.25);
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
7. 区块标题(居中双线 + 下短横)与区块通用
|
||
--------------------------------------------------------------------- */
|
||
.an-section { margin-top: 40px; }
|
||
|
||
.an-block-head {
|
||
position: relative;
|
||
text-align: center;
|
||
padding: 14px 0 12px;
|
||
border-top: 1px solid var(--an-border);
|
||
border-bottom: 1px solid var(--an-border);
|
||
}
|
||
.an-block-head h2 {
|
||
display: inline-block;
|
||
position: relative;
|
||
font-size: 22px;
|
||
font-weight: 700;
|
||
letter-spacing: 3px;
|
||
color: var(--an-primary-dark);
|
||
}
|
||
/* 标题下短横:主蓝 3px */
|
||
.an-block-tick {
|
||
position: absolute; left: 50%; bottom: -2px;
|
||
width: 42px; height: 3px;
|
||
transform: translateX(-50%);
|
||
background: var(--an-primary);
|
||
border-radius: 2px;
|
||
}
|
||
|
||
/* 栏目卡头变体:左右布局(标题居左 + 更多居右) */
|
||
.an-block-head--bar {
|
||
text-align: left;
|
||
padding: 0 0 10px;
|
||
border-top: 0;
|
||
border-bottom: 2px solid var(--an-primary);
|
||
display: flex; align-items: baseline; justify-content: space-between;
|
||
}
|
||
.an-block-head--bar h2 {
|
||
font-size: 19px;
|
||
letter-spacing: 1px;
|
||
padding-left: 12px;
|
||
position: relative;
|
||
}
|
||
/* 标题左侧竖条 */
|
||
.an-block-head--bar h2::before {
|
||
content: "";
|
||
position: absolute; left: 0; top: 6px; bottom: 6px;
|
||
width: 4px;
|
||
background: var(--an-primary);
|
||
border-radius: 2px;
|
||
}
|
||
.an-block-head--bar .an-block-tick { display: none; }
|
||
|
||
.an-more {
|
||
font-size: 13px;
|
||
font-weight: 400;
|
||
color: var(--an-text-light);
|
||
letter-spacing: 0;
|
||
transition: color var(--an-speed) ease, transform var(--an-speed) ease;
|
||
}
|
||
.an-more:hover { color: var(--an-primary); transform: translateX(3px); }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
8. 头条区(左:头条推荐列表 / 右:图片新闻)
|
||
--------------------------------------------------------------------- */
|
||
.an-headline {
|
||
display: grid;
|
||
grid-template-columns: 7fr 5fr;
|
||
gap: 28px;
|
||
}
|
||
/* grid 项允许收缩到轨道内:否则 nowrap 省略文本会把 auto 最小宽撑破容器(移动端横向溢出) */
|
||
.an-headline > * { min-width: 0; }
|
||
|
||
.an-headline-card,
|
||
.an-focus-card {
|
||
background: var(--an-card-bg);
|
||
border-radius: var(--an-radius-lg);
|
||
box-shadow: var(--an-shadow-sm);
|
||
padding: 6px 22px 18px;
|
||
}
|
||
|
||
/* 头条推荐 */
|
||
.an-headline-list li {
|
||
display: flex; align-items: center; gap: 10px;
|
||
padding: 10px 2px;
|
||
border-bottom: 1px dashed var(--an-border);
|
||
}
|
||
.an-headline-list li:last-child { border-bottom: 0; }
|
||
.an-headline-list li a {
|
||
flex: 1; min-width: 0;
|
||
color: var(--an-text);
|
||
font-size: 15px;
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
|
||
}
|
||
.an-headline-list li a:hover { color: var(--an-primary); padding-left: 4px; }
|
||
.an-headline-list time { flex: none; color: var(--an-text-light); font-size: 13px; }
|
||
|
||
/* 头条头条:大标题 + 元信息 */
|
||
.an-headline-lead {
|
||
display: block !important;
|
||
padding: 14px 2px 16px !important;
|
||
}
|
||
.an-lead-title {
|
||
display: block;
|
||
font-size: 19px !important;
|
||
font-weight: 700;
|
||
color: var(--an-primary-dark) !important;
|
||
line-height: 1.5;
|
||
white-space: normal !important;
|
||
overflow: hidden;
|
||
max-height: 3em;
|
||
}
|
||
.an-lead-title:hover { color: var(--an-primary) !important; padding-left: 0 !important; }
|
||
.an-lead-meta {
|
||
display: flex; align-items: center; gap: 10px;
|
||
margin-top: 8px;
|
||
font-size: 13px; color: var(--an-text-light);
|
||
}
|
||
|
||
/* 图片新闻 */
|
||
.an-focus-lead {
|
||
display: block;
|
||
margin-top: 14px;
|
||
border-radius: var(--an-radius);
|
||
overflow: hidden;
|
||
position: relative;
|
||
}
|
||
.an-focus-cover { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--an-bg); }
|
||
.an-focus-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
|
||
.an-focus-lead:hover .an-focus-cover img { transform: scale(1.05); }
|
||
.an-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(6,49,97,.82));
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
}
|
||
|
||
.an-focus-rows { margin-top: 10px; }
|
||
.an-focus-rows li a {
|
||
display: flex; align-items: center; gap: 12px;
|
||
padding: 8px 0;
|
||
}
|
||
.an-row-cover {
|
||
flex: none;
|
||
width: 104px; height: 66px;
|
||
border-radius: 4px;
|
||
overflow: hidden;
|
||
background: var(--an-bg);
|
||
}
|
||
.an-row-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
|
||
.an-focus-rows li a:hover .an-row-cover img { transform: scale(1.06); }
|
||
.an-row-title {
|
||
flex: 1; min-width: 0;
|
||
color: var(--an-text);
|
||
font-size: 14px;
|
||
line-height: 1.55;
|
||
max-height: 3.1em;
|
||
overflow: hidden;
|
||
transition: color var(--an-speed) ease;
|
||
}
|
||
.an-focus-rows li a:hover .an-row-title { color: var(--an-primary); }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
9. 栏目区块(白卡三列 + 日期方块行)
|
||
--------------------------------------------------------------------- */
|
||
.an-blocks {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 24px;
|
||
margin-top: 14px;
|
||
}
|
||
|
||
.an-block {
|
||
background: var(--an-card-bg);
|
||
border-radius: var(--an-radius-lg);
|
||
box-shadow: var(--an-shadow-sm);
|
||
padding: 18px 20px 14px;
|
||
display: flex; flex-direction: column;
|
||
min-width: 0;
|
||
transition: box-shadow var(--an-speed) ease, transform var(--an-speed) ease;
|
||
}
|
||
.an-block:hover { box-shadow: var(--an-shadow-md); transform: translateY(-2px); }
|
||
|
||
.an-block-list { flex: 1; }
|
||
|
||
/* 区块头条(有封面图文 / 无封面纯文) */
|
||
.an-block-featured { border-bottom: 1px solid var(--an-border); }
|
||
.an-block-featured > a {
|
||
display: block;
|
||
padding: 12px 0 14px;
|
||
}
|
||
.an-feat-cover {
|
||
display: block;
|
||
aspect-ratio: 16/9;
|
||
border-radius: var(--an-radius);
|
||
overflow: hidden;
|
||
background: var(--an-bg);
|
||
margin-bottom: 10px;
|
||
}
|
||
.an-feat-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
|
||
.an-block-featured > a:hover .an-feat-cover img { transform: scale(1.04); }
|
||
|
||
.an-feat-title {
|
||
display: block;
|
||
font-size: 16px; font-weight: 700;
|
||
color: var(--an-primary-dark);
|
||
line-height: 1.5;
|
||
max-height: 3em;
|
||
overflow: hidden;
|
||
transition: color var(--an-speed) ease;
|
||
}
|
||
.an-block-featured > a:hover .an-feat-title { color: var(--an-primary); }
|
||
.an-feat-summary {
|
||
display: block;
|
||
margin-top: 6px;
|
||
font-size: 13px; color: var(--an-text-light);
|
||
line-height: 1.65;
|
||
max-height: 3.3em;
|
||
overflow: hidden;
|
||
}
|
||
.an-feat-meta {
|
||
display: flex; align-items: center; gap: 10px;
|
||
margin-top: 8px;
|
||
font-size: 12px; color: var(--an-text-light);
|
||
}
|
||
|
||
/* 列表行:日期方块 + 标题(建平通知公告语言) */
|
||
.an-block-item {
|
||
display: flex; align-items: center; gap: 12px;
|
||
padding: 8px 0;
|
||
border-bottom: 1px dashed var(--an-border);
|
||
}
|
||
.an-block-item:last-child { border-bottom: 0; }
|
||
|
||
.an-date-chip {
|
||
flex: none;
|
||
width: 46px;
|
||
text-align: center;
|
||
border-radius: 4px;
|
||
overflow: hidden;
|
||
background: var(--an-bg);
|
||
border: 1px solid var(--an-border);
|
||
transition: background var(--an-speed) ease, border-color var(--an-speed) ease;
|
||
}
|
||
.an-date-chip b {
|
||
display: block;
|
||
font-size: 17px; line-height: 24px;
|
||
font-weight: 700;
|
||
color: var(--an-primary);
|
||
background: rgba(11,74,143,.08);
|
||
transition: color var(--an-speed) ease;
|
||
}
|
||
.an-date-chip i {
|
||
display: block;
|
||
font-style: normal;
|
||
font-size: 10px; line-height: 16px;
|
||
color: var(--an-text-light);
|
||
transform: scale(.92);
|
||
}
|
||
.an-block-item:hover .an-date-chip {
|
||
background: var(--an-primary);
|
||
border-color: var(--an-primary);
|
||
}
|
||
.an-block-item:hover .an-date-chip b { color: #fff; background: transparent; }
|
||
.an-block-item:hover .an-date-chip i { color: rgba(255,255,255,.8); }
|
||
|
||
.an-block-item-title {
|
||
flex: 1; min-width: 0;
|
||
font-size: 14px;
|
||
color: var(--an-text);
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
transition: color var(--an-speed) ease;
|
||
}
|
||
.an-block-item:hover .an-block-item-title { color: var(--an-primary); }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
10. 列表/详情/单页公共:页面卡 + 面包屑 + 页题
|
||
--------------------------------------------------------------------- */
|
||
.an-page { padding: 28px 0 48px; }
|
||
|
||
.an-page-card {
|
||
background: var(--an-card-bg);
|
||
border-radius: var(--an-radius-lg);
|
||
box-shadow: var(--an-shadow-sm);
|
||
padding: 26px 32px 34px;
|
||
min-height: 420px;
|
||
}
|
||
|
||
.an-crumb {
|
||
display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
|
||
font-size: 13px;
|
||
color: var(--an-text-light);
|
||
padding-bottom: 14px;
|
||
border-bottom: 1px solid var(--an-border);
|
||
margin-bottom: 20px;
|
||
}
|
||
.an-crumb a { color: var(--an-text-light); }
|
||
.an-crumb a:hover { color: var(--an-primary); }
|
||
.an-crumb-sep { color: #c3cad4; }
|
||
.an-crumb-current { color: var(--an-primary); }
|
||
|
||
.an-page-title {
|
||
position: relative;
|
||
font-size: 23px;
|
||
font-weight: 700;
|
||
letter-spacing: 1px;
|
||
color: var(--an-primary-dark);
|
||
padding-left: 16px;
|
||
margin-bottom: 22px;
|
||
}
|
||
.an-page-title::before {
|
||
content: "";
|
||
position: absolute; left: 0; top: 5px; bottom: 5px;
|
||
width: 5px;
|
||
border-radius: 3px;
|
||
background: linear-gradient(180deg, var(--an-primary), var(--an-primary-light));
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
11. 列表页:图文行 + 行式列表 + 分页
|
||
--------------------------------------------------------------------- */
|
||
.an-article-list > li { border-bottom: 1px solid var(--an-border); }
|
||
.an-article-list > li:last-child { border-bottom: 0; }
|
||
|
||
/* 图文行 */
|
||
.an-article-row {
|
||
display: flex; gap: 20px;
|
||
padding: 18px 2px;
|
||
}
|
||
.an-item-cover {
|
||
flex: none;
|
||
width: 216px; aspect-ratio: 3/2;
|
||
border-radius: var(--an-radius);
|
||
overflow: hidden;
|
||
background: var(--an-bg);
|
||
}
|
||
.an-item-cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
|
||
.an-article-row:hover .an-item-cover img { transform: scale(1.05); }
|
||
|
||
.an-item-body { flex: 1; min-width: 0; padding-top: 4px; }
|
||
.an-item-title a {
|
||
font-size: 17px; font-weight: 600;
|
||
color: var(--an-text);
|
||
line-height: 1.5;
|
||
transition: color var(--an-speed) ease;
|
||
}
|
||
.an-item-title a:hover { color: var(--an-primary); }
|
||
.an-item-summary {
|
||
margin-top: 8px;
|
||
font-size: 13px; color: var(--an-text-light);
|
||
line-height: 1.7;
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 2;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
}
|
||
.an-item-meta {
|
||
display: flex; align-items: center; gap: 12px;
|
||
margin-top: 10px;
|
||
font-size: 12px; color: var(--an-text-light);
|
||
}
|
||
|
||
/* 行式(无封面):刻度符号 + 标题 + 右侧日期 */
|
||
.an-article-line {
|
||
display: flex; align-items: center; gap: 12px;
|
||
padding: 13px 2px;
|
||
}
|
||
.an-line-tick {
|
||
flex: none;
|
||
width: 6px; height: 6px;
|
||
background: var(--an-primary);
|
||
transform: rotate(45deg);
|
||
opacity: .85;
|
||
transition: transform var(--an-speed) ease;
|
||
}
|
||
.an-article-line:hover .an-line-tick { transform: rotate(45deg) scale(1.35); }
|
||
|
||
.an-line-main { flex: 1; min-width: 0; }
|
||
.an-line-title {
|
||
display: block;
|
||
font-size: 15px;
|
||
color: var(--an-text);
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
|
||
}
|
||
.an-article-line:hover .an-line-title { color: var(--an-primary); padding-left: 4px; }
|
||
.an-article-line .an-item-summary { margin-top: 4px; -webkit-line-clamp: 1; }
|
||
|
||
.an-line-side {
|
||
flex: none;
|
||
display: flex; align-items: center; gap: 10px;
|
||
font-size: 13px; color: var(--an-text-light);
|
||
}
|
||
|
||
/* 分页 */
|
||
.an-pagination {
|
||
display: flex; justify-content: center; flex-wrap: wrap; gap: 8px;
|
||
margin-top: 30px;
|
||
}
|
||
.an-pagination a {
|
||
min-width: 36px; height: 36px;
|
||
display: inline-flex; align-items: center; justify-content: center;
|
||
padding: 0 10px;
|
||
font-size: 14px;
|
||
color: var(--an-text);
|
||
background: var(--an-bg);
|
||
border: 1px solid var(--an-border);
|
||
border-radius: 4px;
|
||
transition: all var(--an-speed) ease;
|
||
}
|
||
.an-pagination a:hover {
|
||
color: #fff;
|
||
background: var(--an-primary);
|
||
border-color: var(--an-primary);
|
||
}
|
||
.an-pagination a.active {
|
||
color: #fff;
|
||
background: var(--an-primary);
|
||
border-color: var(--an-primary);
|
||
font-weight: 700;
|
||
box-shadow: 0 3px 8px rgba(11,74,143,.35);
|
||
}
|
||
.an-pagination a.disabled {
|
||
opacity: .45; pointer-events: none;
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
12. 详情/单页:文章排版
|
||
--------------------------------------------------------------------- */
|
||
.an-article-title {
|
||
text-align: center;
|
||
font-size: 24px;
|
||
font-weight: 700;
|
||
color: var(--an-primary-dark);
|
||
line-height: 1.5;
|
||
padding: 6px 20px 0;
|
||
}
|
||
|
||
.an-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(--an-text-light);
|
||
border-bottom: 1px solid var(--an-border);
|
||
position: relative;
|
||
}
|
||
/* 标题下居中短横(与区块标题语言呼应) */
|
||
.an-article-meta::before {
|
||
content: "";
|
||
position: absolute; left: 50%; top: -12px;
|
||
width: 42px; height: 3px;
|
||
transform: translateX(-50%);
|
||
background: var(--an-primary);
|
||
border-radius: 2px;
|
||
}
|
||
|
||
.an-article-content {
|
||
font-size: 15px;
|
||
line-height: 1.9;
|
||
color: var(--an-text);
|
||
}
|
||
.an-article-content p { margin: 0 0 14px; }
|
||
.an-article-content h1, .an-article-content h2,
|
||
.an-article-content h3, .an-article-content h4 {
|
||
margin: 22px 0 12px;
|
||
color: var(--an-primary-dark);
|
||
font-weight: 700;
|
||
}
|
||
.an-article-content h2 { font-size: 19px; }
|
||
.an-article-content h3 { font-size: 17px; }
|
||
.an-article-content h4 { font-size: 15px; }
|
||
.an-article-content img {
|
||
max-width: 100%;
|
||
height: auto;
|
||
border-radius: var(--an-radius);
|
||
margin: 6px auto 14px;
|
||
box-shadow: var(--an-shadow-sm);
|
||
}
|
||
.an-article-content ul, .an-article-content ol {
|
||
margin: 0 0 14px; padding-left: 26px;
|
||
}
|
||
.an-article-content ul li { list-style: disc; }
|
||
.an-article-content ol li { list-style: decimal; }
|
||
.an-article-content li { margin-bottom: 6px; }
|
||
.an-article-content blockquote {
|
||
margin: 14px 0;
|
||
padding: 12px 18px;
|
||
background: rgba(11,74,143,.05);
|
||
border-left: 4px solid var(--an-primary);
|
||
border-radius: 0 var(--an-radius) var(--an-radius) 0;
|
||
color: var(--an-text-light);
|
||
}
|
||
.an-article-content table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 14px 0;
|
||
font-size: 14px;
|
||
}
|
||
.an-article-content th, .an-article-content td {
|
||
border: 1px solid var(--an-border);
|
||
padding: 8px 12px;
|
||
text-align: left;
|
||
}
|
||
.an-article-content th {
|
||
background: rgba(11,74,143,.06);
|
||
color: var(--an-primary-dark);
|
||
font-weight: 600;
|
||
}
|
||
.an-article-content a { color: var(--an-primary-light); text-decoration: underline; }
|
||
.an-article-content hr {
|
||
border: 0; height: 1px;
|
||
background: var(--an-border);
|
||
margin: 20px 0;
|
||
}
|
||
.an-article-content video, .an-article-content audio { max-width: 100%; }
|
||
|
||
/* 上下篇 */
|
||
.an-sibling {
|
||
display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
|
||
margin-top: 34px;
|
||
padding-top: 22px;
|
||
border-top: 1px solid var(--an-border);
|
||
}
|
||
.an-sib, .an-sib-none {
|
||
display: block;
|
||
padding: 12px 16px;
|
||
border: 1px solid var(--an-border);
|
||
border-radius: var(--an-radius);
|
||
background: var(--an-bg);
|
||
min-width: 0;
|
||
transition: border-color var(--an-speed) ease, background var(--an-speed) ease, box-shadow var(--an-speed) ease;
|
||
}
|
||
.an-sib:hover {
|
||
border-color: var(--an-primary);
|
||
background: var(--an-card-bg);
|
||
box-shadow: var(--an-shadow-sm);
|
||
}
|
||
.an-sib.next { text-align: right; }
|
||
.an-sib-label {
|
||
display: block;
|
||
font-size: 12px;
|
||
color: var(--an-primary);
|
||
letter-spacing: 2px;
|
||
margin-bottom: 4px;
|
||
}
|
||
.an-sib-title {
|
||
display: block;
|
||
font-size: 14px;
|
||
color: var(--an-text);
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
}
|
||
.an-sib-none { opacity: .6; }
|
||
.an-sib-none .an-sib-label { color: var(--an-text-light); }
|
||
|
||
/* ---------------------------------------------------------------------
|
||
13. 页脚(深蓝渐变 + 同心圆环纹理 + 三栏 + 底条)
|
||
--------------------------------------------------------------------- */
|
||
.an-footer {
|
||
position: relative;
|
||
margin-top: 56px;
|
||
color: var(--an-ink-on-dark);
|
||
background: linear-gradient(160deg, var(--an-footer-bg) 0%, var(--an-primary-dark) 100%);
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* 同心圆环纹理(CSS 绘制,呼应校徽环形语言) */
|
||
.an-ring {
|
||
position: absolute;
|
||
border-radius: 50%;
|
||
border: 2px solid rgba(255,255,255,.06);
|
||
pointer-events: none;
|
||
}
|
||
.an-ring--1 { width: 460px; height: 460px; right: -140px; top: -160px; border-width: 30px; }
|
||
.an-ring--2 { width: 300px; height: 300px; right: -60px; top: -80px; border-width: 18px; }
|
||
.an-ring--3 { width: 520px; height: 520px; left: -200px; bottom: -300px; border-width: 34px; }
|
||
|
||
.an-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;
|
||
}
|
||
.an-footer-inner > * { min-width: 0; }
|
||
|
||
.an-footer-brand {
|
||
display: flex; align-items: center; gap: 14px;
|
||
}
|
||
.an-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(--an-radius);
|
||
overflow: hidden;
|
||
box-shadow: 0 2px 10px rgba(6,49,97,.4);
|
||
}
|
||
.an-footer-badge--plain { color: var(--an-primary); }
|
||
.an-footer-logo { width: 100%; height: 100%; object-fit: contain; }
|
||
.an-footer-site {
|
||
font-size: 21px;
|
||
font-weight: 700;
|
||
letter-spacing: 1.5px;
|
||
line-height: 1.45;
|
||
text-shadow: 0 2px 6px rgba(6,49,97,.4);
|
||
}
|
||
|
||
.an-footer-info { padding-top: 6px; }
|
||
.an-footer-line {
|
||
display: flex; align-items: baseline; gap: 10px;
|
||
margin-bottom: 10px;
|
||
font-size: 13px;
|
||
color: var(--an-ink-on-dark-soft);
|
||
line-height: 1.7;
|
||
}
|
||
.an-dot {
|
||
flex: none;
|
||
width: 6px; height: 6px;
|
||
background: var(--an-primary-light);
|
||
border-radius: 50%;
|
||
transform: translateY(-2px);
|
||
box-shadow: 0 0 6px rgba(17,103,187,.9);
|
||
}
|
||
|
||
.an-footer-links {
|
||
padding-top: 6px;
|
||
display: grid; grid-template-columns: 1fr 1fr; gap: 8px 28px;
|
||
}
|
||
.an-group-name {
|
||
display: inline-block;
|
||
font-size: 13px; font-weight: 600;
|
||
color: #fff;
|
||
padding-bottom: 4px;
|
||
margin-bottom: 6px;
|
||
border-bottom: 2px solid var(--an-primary-light);
|
||
}
|
||
.an-links-row {
|
||
display: flex; flex-wrap: wrap; gap: 4px 14px;
|
||
margin-bottom: 10px;
|
||
}
|
||
.an-links-row a {
|
||
font-size: 13px;
|
||
color: var(--an-ink-on-dark-soft);
|
||
transition: color var(--an-speed) ease, padding-left var(--an-speed) ease;
|
||
}
|
||
.an-links-row a:hover { color: #fff; padding-left: 2px; }
|
||
|
||
.an-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(--an-ink-on-dark-faint);
|
||
letter-spacing: 1px;
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
14. 响应式:1200 / 992 / 768 三档
|
||
--------------------------------------------------------------------- */
|
||
@media (max-width: 1240px) {
|
||
.an-container, .an-topbar-inner, .an-brandbar-inner, .an-nav-inner { max-width: calc(100% - 40px); }
|
||
}
|
||
|
||
@media (max-width: 992px) {
|
||
.an-site-name { font-size: 22px; max-width: 380px; }
|
||
.an-search { width: 240px; }
|
||
|
||
.an-nav-list { flex-wrap: wrap; justify-content: flex-start; }
|
||
.an-nav-list > li { flex: 0 0 auto; }
|
||
.an-nav-list > li > a { height: 46px; font-size: 15px; padding: 0 12px; }
|
||
|
||
.an-headline { grid-template-columns: 1fr; }
|
||
.an-blocks { grid-template-columns: repeat(2, 1fr); }
|
||
|
||
.an-banner-slides { height: 380px; }
|
||
.an-banner-title { font-size: 19px; bottom: 28px; }
|
||
|
||
.an-footer-inner { grid-template-columns: 1fr 1fr; }
|
||
}
|
||
|
||
@media (max-width: 768px) {
|
||
/* —— 品牌行收纳 —— */
|
||
.an-brandbar-inner { flex-direction: column; align-items: stretch; gap: 14px; padding: 16px 0; }
|
||
.an-site-name { font-size: 19px; max-width: none; white-space: normal; }
|
||
.an-brand { justify-content: center; }
|
||
.an-search { width: 100%; max-width: none; }
|
||
|
||
/* —— 移动端导航:抽屉展开 —— */
|
||
.an-nav-toggle {
|
||
display: inline-flex; flex-direction: column; justify-content: center; gap: 5px;
|
||
width: 44px; height: 40px;
|
||
padding: 8px;
|
||
border: 1px solid var(--an-border);
|
||
border-radius: var(--an-radius);
|
||
background: var(--an-card-bg);
|
||
}
|
||
.an-nav-toggle span {
|
||
display: block; height: 2px;
|
||
background: var(--an-primary);
|
||
border-radius: 2px;
|
||
transition: transform var(--an-speed) ease, opacity var(--an-speed) ease;
|
||
}
|
||
.an-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
|
||
.an-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
|
||
.an-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
|
||
|
||
.an-nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; }
|
||
/* 吸顶在移动端直接融入文档流配色 */
|
||
.an-nav--fixed { position: sticky; animation: none; }
|
||
|
||
.an-nav-list {
|
||
display: none;
|
||
position: absolute; left: -20px; right: -20px; top: 100%;
|
||
flex-direction: column;
|
||
background: var(--an-card-bg);
|
||
box-shadow: var(--an-shadow-md);
|
||
border-top: 1px solid var(--an-border);
|
||
padding: 6px 16px 12px;
|
||
max-height: 68vh; overflow: auto;
|
||
}
|
||
.an-nav-list.an-open { display: flex; }
|
||
.an-nav-list > li { text-align: left; border-bottom: 1px solid var(--an-border); }
|
||
.an-nav-list > li:last-child { border-bottom: 0; }
|
||
.an-nav-list > li > a { height: 46px; justify-content: flex-start; }
|
||
.an-nav-list > li > a::after { display: none; }
|
||
|
||
/* 移动端二级:手风琴内联展开(.an-sub-open 由 main.js 控制) */
|
||
.an-sub {
|
||
position: static;
|
||
display: none;
|
||
transform: none;
|
||
opacity: 1; visibility: visible;
|
||
background: var(--an-bg);
|
||
border-top: 0;
|
||
box-shadow: none;
|
||
border-radius: 0;
|
||
margin: 0 -8px 8px;
|
||
padding: 4px 0;
|
||
}
|
||
.an-sub::before { display: none; }
|
||
.an-sub li a { color: var(--an-text); margin: 0 8px; }
|
||
.an-sub li a:hover { background: rgba(11,74,143,.08); color: var(--an-primary); }
|
||
.an-sub li a::before { background: var(--an-primary); opacity: .5; }
|
||
.an-nav-list li.an-sub-open .an-sub { display: block; }
|
||
.an-nav-list li.has-sub > a { cursor: pointer; }
|
||
|
||
/* —— 内容收纳 —— */
|
||
.an-banner-slides { height: 240px; }
|
||
.an-banner-title { font-size: 15px; left: 16px; bottom: 20px; max-width: 85%; }
|
||
.an-banner-arrow { display: none; }
|
||
|
||
.an-section { margin-top: 28px; }
|
||
.an-blocks { grid-template-columns: 1fr; }
|
||
.an-block-head h2 { font-size: 19px; }
|
||
|
||
.an-article-row { flex-direction: column; gap: 12px; }
|
||
.an-item-cover { width: 100%; }
|
||
.an-article-line { flex-wrap: wrap; }
|
||
.an-line-side { width: 100%; padding-left: 18px; }
|
||
|
||
.an-page-card { padding: 18px 16px 24px; }
|
||
.an-article-title { font-size: 20px; padding: 0; }
|
||
.an-article-meta { gap: 4px 14px; }
|
||
.an-sibling { grid-template-columns: 1fr; }
|
||
.an-sib-title { white-space: normal; }
|
||
|
||
.an-footer-inner { grid-template-columns: 1fr; gap: 26px; padding: 32px 0 26px; }
|
||
.an-footer-links { grid-template-columns: 1fr; }
|
||
.an-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,
|
||
.an-links-row a .link-logo {
|
||
height: 20px;
|
||
width: auto;
|
||
max-width: 64px;
|
||
object-fit: contain;
|
||
vertical-align: middle;
|
||
margin-right: 4px;
|
||
border-radius: 2px;
|
||
}
|
||
|
||
/* ===== 左侧栏目导航(docs/11):有二级节点的模块,栏目/文章页左侧展示兄弟目录 ===== */
|
||
.an-cols { display: flex; align-items: flex-start; gap: 28px; }
|
||
.an-cols .an-page-card { flex: 1; min-width: 0; }
|
||
.an-side-nav {
|
||
flex: none;
|
||
width: 230px;
|
||
background: var(--an-card-bg);
|
||
border: 1px solid var(--an-border);
|
||
border-top: 3px solid var(--an-primary);
|
||
box-shadow: var(--an-shadow-md);
|
||
}
|
||
.an-side-nav-head {
|
||
background: var(--an-primary);
|
||
color: #fff;
|
||
font-size: 20px;
|
||
font-weight: 700;
|
||
text-align: center;
|
||
padding: 18px 12px;
|
||
letter-spacing: 3px;
|
||
}
|
||
.an-side-nav-list { list-style: none; margin: 0; padding: 0; }
|
||
.an-side-nav-item + .an-side-nav-item { border-top: 1px solid var(--an-border); }
|
||
.an-side-nav-item a {
|
||
display: block;
|
||
padding: 13px 18px;
|
||
color: var(--an-text);
|
||
text-decoration: none;
|
||
font-size: 15px;
|
||
border-left: 3px solid transparent;
|
||
transition: background .15s ease, color .15s ease, border-color .15s ease;
|
||
}
|
||
.an-side-nav-item a:hover { color: var(--an-primary); background: var(--an-panel); }
|
||
.an-side-nav-item.active a {
|
||
background: var(--an-primary);
|
||
color: #fff;
|
||
font-weight: 600;
|
||
text-decoration: none;
|
||
border-left-color: var(--an-primary-light);
|
||
}
|
||
/* 顶导航二级下拉当前项高亮(docs/11 顺带) */
|
||
.an-nav-list ul.an-sub li.active a { color: var(--an-primary-light); }
|
||
@media (max-width: 768px) {
|
||
.an-cols { flex-direction: column; gap: 16px; }
|
||
.an-side-nav { width: 100%; }
|
||
.an-side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; }
|
||
.an-side-nav-item { flex: none; }
|
||
.an-side-nav-item + .an-side-nav-item { border-top: none; border-left: 1px solid var(--an-border); }
|
||
.an-side-nav-item a { white-space: nowrap; border-left: none; }
|
||
}
|
||
@media print {
|
||
.an-side-nav { display: none; }
|
||
.an-cols { display: block; }
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------
|
||
16. 首页布局模式区块(fragments/home-blocks.html)
|
||
站点配了 home_layout 时首页正文由本主题渲染:整宽区块卡 + 双栏要闻 + 藏蓝速递条。
|
||
--------------------------------------------------------------------- */
|
||
/* 藏蓝配金线:标题左竖条与居中线脚改用点缀金,区别于基座 scholar-blue 的全蓝语言 */
|
||
.an-block-head--bar h2::before { background: var(--an-accent); }
|
||
.an-block-tick { background: var(--an-accent); }
|
||
|
||
.an-section { position: relative; }
|
||
.an-sec-bg {
|
||
position: absolute; inset: 0; z-index: 0;
|
||
background-size: cover; background-position: center;
|
||
opacity: .45; pointer-events: none;
|
||
}
|
||
/* 定位元素默认画在普通流之上:不抬 z-index,背景带会糊在卡片正面(截图实测整卡泛绿)。
|
||
带图时卡片转半透明白,让底图若隐若现——高校官网新闻带的通行做法 */
|
||
.an-sec-bg + .an-block { position: relative; z-index: 1; background: rgba(255, 255, 255, .88); }
|
||
.an-block--flow { padding: 20px 26px 12px; }
|
||
.an-block--flow:hover { transform: none; box-shadow: var(--an-shadow-sm); }
|
||
/* grid 轨道用 minmax(0,1fr):否则 nowrap 省略行的 min-content 会撑破轨道(中文标题尤其明显) */
|
||
.an-split {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
|
||
gap: 26px;
|
||
padding-top: 14px;
|
||
}
|
||
.an-split > * { min-width: 0; }
|
||
/* 头条图限高 + 右列行均分:否则左图按 16/9 撑到 400px,右列 5 行挤在顶部留大片空白 */
|
||
.an-split .an-feat-cover { max-height: 300px; }
|
||
.an-split .an-block-list { display: flex; flex-direction: column; justify-content: space-between; }
|
||
.an-split .an-block-item { padding: 12px 0; }
|
||
.an-block-list--two { columns: 2; column-gap: 34px; }
|
||
.an-block-list--two .an-block-item { break-inside: avoid; }
|
||
.an-feat-cover--row { aspect-ratio: 16 / 7; }
|
||
.an-item-date {
|
||
flex: none;
|
||
font-size: 12px; color: var(--an-text-light);
|
||
font-variant-numeric: tabular-nums;
|
||
}
|
||
.an-src {
|
||
flex: none;
|
||
font-size: 11px; line-height: 18px; padding: 0 6px;
|
||
color: var(--an-primary); border: 1px solid var(--an-primary);
|
||
border-radius: 2px;
|
||
}
|
||
.an-wall {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||
gap: 14px;
|
||
margin: 16px 0 0;
|
||
}
|
||
.an-wall-item {
|
||
position: relative;
|
||
border-radius: var(--an-radius);
|
||
overflow: hidden;
|
||
box-shadow: var(--an-shadow-sm);
|
||
}
|
||
.an-wall-item img { width: 100%; height: 158px; object-fit: cover; transition: transform .5s ease; }
|
||
.an-wall-item:hover img { transform: scale(1.05); }
|
||
.an-wall-cap {
|
||
position: absolute; left: 0; right: 0; bottom: 0;
|
||
padding: 26px 10px 9px;
|
||
font-size: 13px; color: #fff;
|
||
background: linear-gradient(transparent, rgba(6, 49, 97, .85));
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
}
|
||
.an-gallery-sub {
|
||
margin: -4px 0 4px;
|
||
text-align: center;
|
||
font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
|
||
color: var(--an-text-light);
|
||
}
|
||
/* 速递条:flex 项自动最小尺寸 = min-content,中文可按字断行 → 不锁 nowrap/不收缩就会塌成一字一列 */
|
||
.an-ticker {
|
||
position: relative;
|
||
background: var(--an-primary);
|
||
color: #fff;
|
||
padding: 11px 0;
|
||
font-size: 14px;
|
||
}
|
||
.an-ticker-inner { display: flex; align-items: center; gap: 16px; min-width: 0; }
|
||
.an-ticker-label {
|
||
flex: none;
|
||
font-weight: 700; letter-spacing: .06em;
|
||
padding-right: 14px;
|
||
border-right: 1px solid rgba(255, 255, 255, .35);
|
||
}
|
||
.an-ticker-list {
|
||
display: flex; gap: 28px;
|
||
flex: 1; min-width: 0;
|
||
overflow: hidden; white-space: nowrap;
|
||
}
|
||
.an-ticker-list li { flex: none; min-width: 0; }
|
||
.an-ticker-item {
|
||
display: block; flex: none;
|
||
max-width: 320px;
|
||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
color: #fff; opacity: .92;
|
||
}
|
||
.an-ticker-item:hover { opacity: 1; text-decoration: underline; }
|
||
.an-links-group {
|
||
margin: 12px 0 0;
|
||
font-size: 13px; letter-spacing: .08em;
|
||
color: var(--an-text-light);
|
||
}
|
||
.an-links { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 0; }
|
||
.an-links a {
|
||
font-size: 13px; color: var(--an-text-light);
|
||
padding: 4px 14px;
|
||
background: var(--an-card-bg);
|
||
border: 1px solid var(--an-border);
|
||
border-radius: 999px;
|
||
}
|
||
.an-links a:hover { color: var(--an-primary); border-color: var(--an-primary); }
|
||
|
||
@media (max-width: 992px) {
|
||
.an-split { grid-template-columns: minmax(0, 1fr); }
|
||
.an-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||
.an-block-list--two { columns: 1; }
|
||
.an-ticker-item { max-width: 180px; }
|
||
.an-block--flow { padding: 16px 16px 8px; }
|
||
}
|