Rewrite footer markup to zib_footer_con contract: single adaptive logo (white-src/dark-src), fcode-links HTML primary, float third column, hidden-xs, toggle-radius contacts, miniimg structure, customize-first footer-conter. Restyle zibll-shell CSS and drop conflicting site-footer BEM padding so filled footer data matches Zibll layout.
303 lines
6.6 KiB
CSS
303 lines
6.6 KiB
CSS
}
|
||
|
||
/* 对齐 zibll: 40px, 1.4em icon */
|
||
.float-btn {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 40px;
|
||
min-height: 40px;
|
||
border-radius: 50%;
|
||
border: none;
|
||
background: var(--float-btn-bg);
|
||
color: var(--color-ink-3);
|
||
box-shadow: var(--shadow-sm);
|
||
cursor: pointer;
|
||
transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
|
||
font-size: 1.4em;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.float-btn:hover {
|
||
transform: translateY(-2px);
|
||
box-shadow: var(--shadow);
|
||
color: var(--color-primary);
|
||
background: var(--surface-page);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.float-btn:active {
|
||
transform: scale(0.95);
|
||
}
|
||
|
||
/* 回到顶部按钮 — 滚动后显示 */
|
||
.float-btn--top {
|
||
opacity: 0;
|
||
visibility: hidden;
|
||
transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.2s ease;
|
||
}
|
||
|
||
.float-btn--top.is-visible {
|
||
opacity: 1;
|
||
visibility: visible;
|
||
display: flex;
|
||
}
|
||
|
||
/* 主题切换按钮 */
|
||
#float-theme-toggle .float-btn__icon-moon {
|
||
display: none !important;
|
||
}
|
||
|
||
#float-theme-toggle .float-btn__icon-sun {
|
||
display: inline-block !important;
|
||
}
|
||
|
||
#float-theme-toggle[aria-pressed="true"] .float-btn__icon-moon,
|
||
.theme-dark #float-theme-toggle .float-btn__icon-moon,
|
||
html.dark #float-theme-toggle .float-btn__icon-moon,
|
||
body.dark-theme #float-theme-toggle .float-btn__icon-moon {
|
||
display: inline-block !important;
|
||
}
|
||
|
||
#float-theme-toggle[aria-pressed="true"] .float-btn__icon-sun,
|
||
.theme-dark #float-theme-toggle .float-btn__icon-sun,
|
||
html.dark #float-theme-toggle .float-btn__icon-sun,
|
||
body.dark-theme #float-theme-toggle .float-btn__icon-sun {
|
||
display: none !important;
|
||
}
|
||
|
||
/* 移动端隐藏浮动按钮(用 tabbar 代替) */
|
||
@media (max-width: 767px) {
|
||
.float-right-btns {
|
||
right: 12px;
|
||
bottom: 80px;
|
||
}
|
||
|
||
.float-btn {
|
||
width: 38px;
|
||
height: 38px;
|
||
font-size: 14px;
|
||
}
|
||
}
|
||
|
||
/* ============================================================
|
||
* 移动端底部 Tab 栏(模仿 zibll footer-tabbar)
|
||
* ============================================================ */
|
||
.footer-tabbar {
|
||
display: none;
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
z-index: 1035;
|
||
min-height: var(--aksrt-footer-tabbar-height);
|
||
background: var(--blur-bg);
|
||
border-top: 1px solid var(--color-line-soft);
|
||
padding: 0 0 env(safe-area-inset-bottom, 0px);
|
||
justify-content: space-around;
|
||
align-items: center;
|
||
box-shadow: 0 -4px 5px var(--main-shadow, rgba(0, 0, 0, 0.06));
|
||
-webkit-backdrop-filter: saturate(5) blur(20px);
|
||
backdrop-filter: saturate(5) blur(20px);
|
||
--tabbar-active-color: #f04494;
|
||
--tabbar-icon-size: 24px;
|
||
--tabbar-text-size: 10px;
|
||
}
|
||
|
||
.footer-tabbar.no-border {
|
||
border-top: none;
|
||
}
|
||
|
||
.footer-tabbar.no-shadow {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.footer-tabbar.hide-text .tabbar-item span {
|
||
display: none;
|
||
}
|
||
|
||
.footer-tabbar.has-animation .tabbar-item {
|
||
transition: color 0.15s ease, transform 0.15s ease;
|
||
}
|
||
|
||
.footer-tabbar.has-animation .tabbar-item:active {
|
||
transform: scale(0.9);
|
||
}
|
||
|
||
.footer-tabbar-placeholder {
|
||
display: none;
|
||
height: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px));
|
||
}
|
||
|
||
@media (max-width: 767px) {
|
||
.footer-tabbar {
|
||
display: flex;
|
||
}
|
||
|
||
.footer-tabbar-placeholder {
|
||
display: block;
|
||
}
|
||
|
||
/* 有 tabbar 时页脚需要额外底部间距 */
|
||
.footer,
|
||
.site-footer {
|
||
padding-bottom: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px));
|
||
}
|
||
}
|
||
|
||
.tabbar-item {
|
||
display: flex;
|
||
flex: 1 1 0;
|
||
min-width: 0;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 1px;
|
||
min-height: 49px;
|
||
padding: 4px 0 3px;
|
||
color: var(--muted-color, var(--color-ink-3));
|
||
font-size: 13px;
|
||
text-decoration: none;
|
||
border: none;
|
||
background: none;
|
||
cursor: pointer;
|
||
transition: color 0.15s ease;
|
||
-webkit-tap-highlight-color: transparent;
|
||
position: relative;
|
||
}
|
||
|
||
/* 对齐 zibll: 24px 图标 */
|
||
.tabbar-item i {
|
||
font-size: var(--tabbar-icon-size, 24px);
|
||
line-height: 1;
|
||
}
|
||
|
||
.tabbar-item span {
|
||
display: block;
|
||
font-size: var(--tabbar-text-size, 10px);
|
||
font-weight: 500;
|
||
line-height: 1;
|
||
transform: scale(0.8);
|
||
transform-origin: center top;
|
||
}
|
||
|
||
.tabbar-item:hover,
|
||
.tabbar-item.active {
|
||
color: var(--tabbar-active-color, var(--color-primary));
|
||
text-decoration: none;
|
||
}
|
||
|
||
.tabbar-item.active i {
|
||
font-weight: 900;
|
||
}
|
||
|
||
.tabbar-badge {
|
||
position: absolute;
|
||
top: 2px;
|
||
right: 8px;
|
||
min-width: 16px;
|
||
height: 16px;
|
||
padding: 0 4px;
|
||
border-radius: 999px;
|
||
background: var(--color-error);
|
||
color: #fff;
|
||
font-size: 10px;
|
||
line-height: 16px;
|
||
font-style: normal;
|
||
font-weight: 700;
|
||
text-align: center;
|
||
box-shadow: 0 2px 8px rgba(239, 68, 68, 0.20);
|
||
}
|
||
|
||
.tabbar-badge--dot {
|
||
min-width: 0;
|
||
width: 8px;
|
||
height: 8px;
|
||
padding: 0;
|
||
top: 4px;
|
||
right: 10px;
|
||
font-size: 0;
|
||
line-height: 1;
|
||
box-shadow: 0 0 0 2px var(--blur-bg);
|
||
}
|
||
|
||
.tabbar-item--add {
|
||
margin-top: -22px;
|
||
width: 62px;
|
||
height: 62px;
|
||
min-height: 62px;
|
||
border-radius: 50%;
|
||
background: var(--color-accent);
|
||
color: #fff;
|
||
box-shadow: 0 12px 24px var(--color-accent-shadow);
|
||
flex: 0 0 62px;
|
||
z-index: 1;
|
||
}
|
||
|
||
.tabbar-item--add i {
|
||
font-size: 22px;
|
||
}
|
||
|
||
.tabbar-item--add span {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.tabbar-item--add:hover,
|
||
.tabbar-item--add.active {
|
||
color: #fff;
|
||
}
|
||
|
||
.tabbar-add-backdrop {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 951;
|
||
background: rgba(15, 23, 42, 0.38);
|
||
}
|
||
|
||
.tabbar-add-panel {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
z-index: 952;
|
||
padding: 0 12px calc(84px + env(safe-area-inset-bottom, 0px));
|
||
}
|
||
|
||
.tabbar-add-panel__sheet {
|
||
border-radius: 20px;
|
||
background: var(--surface-1);
|
||
border: none;
|
||
box-shadow: var(--shadow-drawer);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.tabbar-add-panel__head {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 16px 18px 12px;
|
||
border-bottom: 1px solid var(--color-line);
|
||
}
|
||
|
||
.tabbar-add-panel__close {
|
||
width: 32px;
|
||
height: 32px;
|
||
border: 0;
|
||
border-radius: 50%;
|
||
background: var(--surface-2);
|
||
color: var(--color-ink-3);
|
||
}
|
||
|
||
.tabbar-add-panel__list {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||
gap: 12px;
|
||
padding: 18px;
|
||
}
|
||
|
||
.tabbar-add-panel__item {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|