chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+257
View File
@@ -0,0 +1,257 @@
/* =========================================================
* 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;}
}