/* ===================================================================== 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; } }