/* ========================================================= * TP-Blog 前台统一主题样式(移动优先 / 响应式 / 主题色可配) * 主题色由 layout 注入的 --theme 变量驱动(默认 #2d6cdf)。 * 衍生浅色背景使用 color-mix(现代浏览器)。 * ========================================================= */ :root{ --theme:#2d6cdf; --theme-dark:#1f54b8; --bg:#f4f5f7; --card:#ffffff; --text:#333; --text-2:#666; --text-3:#999; --border:#eee; --radius:12px; --radius-sm:8px; --shadow:0 2px 12px rgba(0,0,0,.05); --shadow-hover:0 6px 20px rgba(0,0,0,.10); --maxw:1140px; --nav-h:56px; --tab-h:56px; } *{box-sizing:border-box;} html,body{margin:0;padding:0;min-height:100%;} body{ font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; background:var(--bg); color:var(--text); line-height:1.6; -webkit-font-smoothing:antialiased; /* 让 footer 始终贴底:主体撑满剩余空间 */ display:flex; flex-direction:column; min-height:100vh; } a{text-decoration:none;color:inherit;} img{max-width:100%;display:block;} .container,.fb-wrap{max-width:var(--maxw);margin:0 auto;padding:0 14px;} /* ---------- 顶部导航 ---------- */ .fb-nav{ position:sticky;top:0;z-index:200; height:var(--nav-h); background:var(--card); box-shadow:0 1px 10px rgba(0,0,0,.06); } .fb-nav .inner{ max-width:var(--maxw);margin:0 auto;height:100%; padding:0 14px;display:flex;align-items:center;gap:14px; } .fb-nav .logo{font-size:19px;font-weight:800;color:var(--theme);white-space:nowrap;letter-spacing:.5px;} .fb-nav .logo img{height:30px;width:auto;} .fb-nav .menu{display:flex;gap:4px;margin-left:8px;} .fb-nav .menu a{ padding:7px 14px;border-radius:var(--radius-sm);font-size:15px;color:var(--text-2);transition:.2s; } .fb-nav .menu a:hover,.fb-nav .menu a.active{background:color-mix(in srgb,var(--theme) 10%,#fff);color:var(--theme);} .fb-nav .search{margin-left:auto;display:flex;align-items:center;background:#f1f2f4;border-radius:20px;padding:4px 6px 4px 14px;max-width:240px;flex:1;} .fb-nav .search input{border:0;background:transparent;outline:none;width:100%;font-size:14px;color:var(--text);} .fb-nav .search button{border:0;background:var(--theme);color:#fff;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;} .fb-nav .user{display:flex;align-items:center;gap:12px;margin-left:8px;white-space:nowrap;font-size:14px;} .fb-nav .user a{color:var(--theme);} .fb-nav .hamburger{display:none;margin-left:auto;width:40px;height:40px;border:0;background:transparent;font-size:22px;color:var(--text);cursor:pointer;} /* 顶部下拉小菜单(移动端点击汉堡展开) */ .fb-nav .drawer{display:none;position:absolute;left:0;right:0;top:var(--nav-h);background:var(--card);box-shadow:0 8px 20px rgba(0,0,0,.08);padding:8px 14px 14px;} .fb-nav .drawer.open{display:block;} .fb-nav .drawer a{display:block;padding:11px 8px;border-bottom:1px solid var(--border);font-size:15px;color:var(--text-2);} .fb-nav .drawer a:last-child{border-bottom:0;} .fb-nav .drawer .user{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--border);} /* ---------- 主体布局 ---------- */ .fb-main{flex:1 0 auto;padding:18px 0 40px;} .fb-layout{display:grid;grid-template-columns:1fr 312px;gap:22px;align-items:start;} .fb-content{min-width:0;} .fb-section-title{display:flex;align-items:center;justify-content:space-between;margin:6px 0 16px;} .fb-section-title h2{font-size:19px;position:relative;padding-left:12px;margin:0;} .fb-section-title h2::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:4px;background:var(--theme);border-radius:2px;} .fb-empty{background:var(--card);border-radius:var(--radius);padding:50px;text-align:center;color:var(--text-3);box-shadow:var(--shadow);} /* ---------- 卡片 / 文章列表卡 ---------- */ .fb-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;} .fb-post-list{display:flex;flex-direction:column;gap:16px;} .fb-post{display:flex;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:.25s;} .fb-post:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);} .fb-post .thumb{width:230px;flex-shrink:0;background:#eef0f3;} .fb-post .thumb img{width:100%;height:100%;min-height:168px;object-fit:cover;} .fb-post .body{flex:1;padding:16px 18px;display:flex;flex-direction:column;min-width:0;} .fb-post .cat{align-self:flex-start;font-size:12px;color:var(--theme);background:color-mix(in srgb,var(--theme) 12%,#fff);padding:2px 10px;border-radius:10px;margin-bottom:8px;} .fb-post h3{font-size:17px;margin:0 0 8px;line-height:1.4;} .fb-post h3 a:hover{color:var(--theme);} .fb-post .summary{color:var(--text-3);font-size:14px;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;overflow-wrap:anywhere;margin:0 0 10px;} .fb-post .meta{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--text-3);flex-wrap:wrap;} .fb-post .meta .author{display:flex;align-items:center;gap:6px;color:var(--text-2);} .fb-post .meta .author img{width:22px;height:22px;border-radius:50%;} .fb-post .meta .sp{margin-left:auto;} .fb-post .meta i.layui-icon{color:var(--theme);} /* Hero 推荐 */ .fb-hero{margin:4px 0 18px;} .fb-hero-grid{display:grid;grid-template-columns:2fr 1fr;gap:14px;height:300px;} .fb-hero-main,.fb-hero-sub-item{position:relative;border-radius:var(--radius);overflow:hidden;background:#ddd;display:block;} .fb-hero-main img,.fb-hero-sub-item img{width:100%;height:100%;object-fit:cover;transition:.4s;} .fb-hero-main:hover img,.fb-hero-sub-item:hover img{transform:scale(1.05);} .fb-hero-sub{display:grid;grid-template-rows:1fr 1fr;gap:14px;} .fb-hero-cap{position:absolute;left:0;right:0;bottom:0;padding:22px 18px 14px;background:linear-gradient(transparent,rgba(0,0,0,.72));color:#fff;} .fb-hero-cap .tag{display:inline-block;background:var(--theme);font-size:12px;padding:2px 10px;border-radius:12px;margin-bottom:8px;} .fb-hero-main .fb-hero-cap h2{font-size:21px;margin:0;} .fb-hero-sub-item .fb-hero-cap h3{font-size:15px;margin:0;} /* ---------- 侧栏 widget ---------- */ .fb-aside{display:flex;flex-direction:column;gap:18px;} .fb-widget{background:var(--card);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);} .fb-widget h4{font-size:16px;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--border);} .fb-stat{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;} .fb-stat .num{font-size:20px;font-weight:700;color:var(--theme);} .fb-stat .lbl{font-size:12px;color:var(--text-3);} .fb-hot li{list-style:none;padding:9px 0;border-bottom:1px dashed #eee;display:flex;gap:10px;align-items:baseline;} .fb-hot li:last-child{border-bottom:0;} .fb-hot .rank{width:20px;height:20px;flex-shrink:0;text-align:center;line-height:20px;font-size:12px;border-radius:4px;background:#f0f0f0;color:var(--text-3);} .fb-hot li:nth-child(1) .rank{background:#ff4d4f;color:#fff;} .fb-hot li:nth-child(2) .rank{background:#ff7a45;color:#fff;} .fb-hot li:nth-child(3) .rank{background:#ffa940;color:#fff;} .fb-hot a{font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} .fb-hot a:hover{color:var(--theme);} .fb-catlist li{list-style:none;} .fb-catlist a{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed #eee;font-size:14px;color:var(--text);} .fb-catlist li:last-child a{border-bottom:0;} .fb-catlist a:hover{color:var(--theme);} .fb-catlist .cnt{color:#bbb;font-size:12px;} .fb-tagcloud a{display:inline-block;padding:5px 12px;margin:0 8px 8px 0;background:#f2f3f5;border-radius:14px;font-size:13px;color:var(--text-2);transition:.2s;} .fb-tagcloud a:hover{background:var(--theme);color:#fff;} .fb-cmt li{list-style:none;padding:10px 0;border-bottom:1px dashed #eee;font-size:13px;} .fb-cmt li:last-child{border-bottom:0;} .fb-cmt .who{color:var(--theme);} .fb-cmt .txt{color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;} /* ---------- 按钮 / 标签 ---------- */ .fb-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:var(--theme);color:#fff;padding:9px 18px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;transition:.2s;} .fb-btn:hover{background:var(--theme-dark);} .fb-btn.ghost{background:color-mix(in srgb,var(--theme) 12%,#fff);color:var(--theme);} .layui-btn{background:var(--theme);} .fb-pager{display:flex;justify-content:center;gap:6px;margin-top:22px;flex-wrap:wrap;} .fb-pager a,.fb-pager span,.fb-pager .layui-laypage a{padding:7px 13px;border-radius:var(--radius-sm);background:var(--card);color:var(--text-2);box-shadow:var(--shadow);} .fb-pager .active,.fb-pager .layui-laypage .layui-laypage-curr{background:var(--theme);color:#fff;} /* ---------- 详情页 ---------- */ .fb-article{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px;margin-bottom:18px;} .fb-article .crumb{font-size:13px;color:var(--text-3);margin-bottom:10px;} .fb-article .crumb a{color:var(--theme);} .fb-article h1{font-size:24px;margin:0 0 12px;line-height:1.4;} .fb-article .post-meta{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--text-3);flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:16px;} .fb-article .post-meta .author{display:flex;align-items:center;gap:6px;color:var(--text-2);} .fb-article .post-meta .author img{width:24px;height:24px;border-radius:50%;} .fb-article .post-meta i.layui-icon{color:var(--theme);} .fb-article .cover{margin:0 0 16px;border-radius:var(--radius-sm);overflow:hidden;} .fb-article .content{font-size:15px;color:#444;line-height:1.85;} .fb-article .content img{max-width:100%;border-radius:var(--radius-sm);margin:10px 0;} .fb-article .content pre{background:#f6f8fa;padding:14px;border-radius:var(--radius-sm);overflow:auto;} .fb-article .action-bar{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;} .fb-article .action-bar .fb-btn i{font-size:16px;} /* 评论区 */ .fb-comments{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;} .fb-comments .ct-title{font-size:16px;font-weight:700;margin:0 0 14px;} .fb-comments .ct-title em{color:var(--theme);font-style:normal;} .fb-cmt-form{margin-bottom:16px;} .fb-cmt-form textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;resize:vertical;font-family:inherit;outline:none;} .fb-cmt-form textarea:focus{border-color:var(--theme);} .fb-cmt-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--border);} .fb-cmt-item:last-child{border-bottom:0;} .fb-cmt-item>img{width:40px;height:40px;border-radius:50%;flex-shrink:0;} .fb-cmt-item .ci-body{flex:1;min-width:0;} .fb-cmt-item .ci-name{color:var(--theme);font-weight:600;font-size:14px;} .fb-cmt-item .ci-time{color:var(--text-3);font-size:12px;margin-left:8px;} .fb-cmt-item .ci-text{margin:4px 0 0;color:var(--text);font-size:14px;word-break:break-word;} .fb-cmt-item .ci-reply{color:var(--theme);font-size:13px;margin-left:8px;cursor:pointer;} .fb-cmt-children{list-style:none;margin:12px 0 0 52px;padding:0 0 0 12px;border-left:2px solid color-mix(in srgb,var(--theme) 20%,#fff);} .fb-cmt-children li{display:flex;gap:10px;padding:10px 0;} .fb-cmt-children img{width:32px;height:32px;border-radius:50%;flex-shrink:0;} /* ---------- 通用内容页(关于/联系) ---------- */ .fb-page{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;} .fb-page h3{font-size:20px;margin:0 0 14px;color:var(--text);} .fb-page p{color:var(--text-2);margin:0 0 12px;} .fb-page .lead{font-size:15px;} /* ---------- 底部 Tab 导航(移动端) ---------- */ .fb-tabbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:200;height:var(--tab-h); background:var(--card);box-shadow:0 -2px 12px rgba(0,0,0,.06);border-top:1px solid var(--border);} .fb-tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--text-3);} .fb-tabbar a i.layui-icon{font-size:22px;} .fb-tabbar a.active{color:var(--theme);} /* ---------- 页脚 ---------- */ .fb-footer{flex-shrink:0;background:#222;color:#aaa;text-align:center;padding:24px 16px;font-size:13px;margin-top:auto;} .fb-footer a{color:#ccc;} /* ========================================================= * 旧 class 兜底(尚未迁移的页面沿用,浅色化避免裸奔) * ========================================================= */ .main.article,.main.about,.main.mood{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:18px;} .item{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);} .item:last-child{border-bottom:0;} .item>img{width:160px;height:120px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0;background:#eee;} .item .item-content{flex:1;min-width:0;} .item .item-content h3{font-size:17px;margin:0 0 6px;} .item .item-content h3 a:hover{color:var(--theme);} .item .item-content .Subtitle{color:var(--theme);font-size:13px;margin-right:10px;} .item .item-content .author-link a{color:var(--text-2);font-size:13px;} .item .item-content p{color:var(--text-3);margin:6px 0;} .item .date-box{flex-shrink:0;text-align:center;color:var(--theme);} .item .date-box h4{font-size:20px;margin:0;} .item .date-box span{font-size:12px;color:var(--text-3);} .cat-list{list-style:none;padding:0;margin:0;} .cat-list a{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed var(--border);color:var(--text);} .cat-list a:hover{color:var(--theme);} .tag-cloud a{display:inline-block;padding:5px 12px;margin:0 8px 8px 0;background:#f2f3f5;border-radius:14px;font-size:13px;color:var(--text-2);} .tag-cloud a:hover{background:var(--theme);color:#fff;} .top_title{font-size:14px;color:var(--text-3);margin-bottom:14px;} .item1 .item-content h3{font-size:22px;margin:0 0 10px;} .item1 .item-content .label span{margin-right:12px;font-size:13px;color:var(--text-3);} .item1 .item-content .label .Subtitle{color:var(--theme);} .item1 .img-box{margin:14px 0;} .item1 .txt{font-size:15px;color:#444;line-height:1.85;} .btn-box{margin-top:16px;} .txt .layui-btn,.item1 .layui-btn{margin-right:8px;} /* ========================================================= * 响应式断点 * ========================================================= */ @media (max-width:980px){ .fb-layout{grid-template-columns:1fr;} .fb-hero-grid{grid-template-columns:1fr;height:auto;} .fb-hero-main{height:220px;} .fb-hero-sub{grid-template-rows:none;grid-template-columns:1fr 1fr;} .fb-hero-sub-item{height:150px;} } @media (max-width:860px){ .fb-nav .menu,.fb-nav .search,.fb-nav .user{display:none;} .fb-nav .hamburger{display:block;} .fb-post{flex-direction:column;} .fb-post .thumb{width:100%;height:180px;} .fb-post .thumb img{min-height:0;} /* 移动端显示底部 Tab 导航 */ .fb-tabbar{display:flex;} body.has-tab{padding-bottom:calc(var(--tab-h) + 8px);} .item>img{width:110px;height:84px;} .fb-article{padding:16px;} .fb-article h1{font-size:20px;} } @media (max-width:480px){ .container,.fb-wrap{padding:0 10px;} .fb-post .body{padding:12px 14px;} .fb-cmt-children{margin-left:14px;} }