feat(float): rebuild right floating buttons 1:1 with reference theme

- Storage: aksrt_floating_buttons now uses reference float_btn shape
  (fixed 8 sortable types, more-buttons group); single source of
  defaults/sanitize in AKSRT\Settings\FloatButtons
- Admin SPA: CSF-parity page split into components/floating/*
- Frontend: aksrt_float_right() on wp_footer mirrors zib_float_right()
  (wp_is_mobile, PC tooltip, toggle-theme, ontop/scrollTopTo, qrcode,
  wechat/qq, pay_vip, add, more)
- CSS: floating-buttons.css rewritten from reference rules; legacy float
  rules removed from main/part/shell/overlay-primitives
- Remove dead code: reorder route/API, get_floating_buttons_items,
  floatingSchema, floatActionsId, float-theme-toggle bindings,
  common/floating.css, aksrt-runtime-win.php, .aksrt-float-btn
This commit is contained in:
2026-09-26 20:44:50 +08:00
parent 7f60071460
commit 6f2adfaef1
32 changed files with 1338 additions and 3111 deletions
-207
View File
@@ -8117,206 +8117,10 @@ badge.top,
margin: 0 8px;
}
/*----右边浮动按钮-返回顶部---右边浮动按钮-返回顶部---右边浮动按钮-返回顶部---右边浮动按钮-返回顶部---*/
.float-right {
position: fixed;
bottom: 60px;
right: 20px;
z-index: 1030;
text-align: center;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
transition: 0.3s;
}
body:has(.modal.in) .float-right,
.modal-open .float-right,
.imgbox-show .float-right,
.scroll-down .scroll-down-hide.float-right,
.scroll-ing .scrolling-hide.float-right {
transform: translateX(200%);
}
body:has(.modal.in) .float-right.position-center,
.modal-open .float-right.position-center,
.imgbox-show .float-right.position-center,
.scroll-down .scroll-down-hide.float-right.position-center,
.scroll-ing .scrolling-hide.float-right.position-center {
transform: translate(200%, -50%);
}
.tabbar-item.active {
color: var(--focus-color);
}
.float-right.position-center {
bottom: auto;
top: 50%;
transform: translateY(-50%);
}
.float-right.position-top {
bottom: auto;
top: 80px;
}
.float-right .float-btn {
width: 40px;
min-height: 40px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding: 7px 0px;
font-size: 1.4em;
--this-color: var(--muted-2-color);
--this-bg: var(--float-btn-bg);
background: var(--this-bg);
position: relative;
color: var(--this-color) !important;
}
.float-right .float-btn text {
font-size: 12px;
line-height: 1;
margin-top: 5px;
}
.float-right badge {
transform: translate(-11px, -5px) scale(0.85);
margin-right: -50px;
right: auto;
left: 35px;
font-size: 12px;
position: absolute;
}
.float-btn.wait-pay-btn .hover-show-con {
animation: float-wait-pay 2s;
animation-delay: 0.3s;
}
body.modal-open .float-btn.wait-pay-btn .hover-show-con {
opacity: 0 !important;
}
@keyframes float-wait-pay {
0% {
opacity: 0;
visibility: unset;
box-shadow: 0 0 10px 0 rgba(255, 73, 121, 0.1);
}
10% {
opacity: 1;
box-shadow: 0 0 10px 0 rgba(255, 73, 121, 0.95);
}
30% {
box-shadow: 0 0 10px 0 rgba(255, 73, 121, 0.1);
}
50% {
box-shadow: 0 0 10px 0 rgba(255, 73, 121, 0.95);
}
70% {
box-shadow: 0 0 10px 0 rgba(255, 73, 121, 0.1);
}
80% {
visibility: unset;
opacity: 1;
}
}
.filter .float-btn {
-webkit-backdrop-filter: saturate(2) blur(10px);
backdrop-filter: saturate(2) blur(10px);
}
.float-right.square .float-btn + .float-btn {
border-top: 1px solid var(--main-shadow);
}
.float-right.round .float-btn {
margin-top: 6px;
border-radius: 8px;
}
.float-btn.ontop {
opacity: 0;
transition: 0.5s;
transform: translateY(10px);
visibility: hidden;
}
.ontop.show {
opacity: 1;
transform: translateY(0);
visibility: unset;
display: flex !important;
}
.float-btn .hover-show-con {
right: 35px;
left: auto;
width: 200px;
margin-right: 15px;
top: 0;
font-size: 14px;
line-height: 1.4;
color: var(--main-color);
padding: 10px;
margin-top: 0;
border-radius: var(--main-radius);
cursor: auto;
}
.float-btn .dropdown-menu::before {
left: auto;
top: 15px;
right: -5px;
}
.float-btn.service-wechat .hover-show-con {
width: 120px;
top: -40px;
padding: 0;
}
.float-btn.service-wechat .dropdown-menu::before {
top: 53px;
}
.float-btn.qrcode-btn .hover-show-con {
width: 150px;
top: -60px;
padding: 16px 5px 12px;
text-align: center;
}
.float-btn.qrcode-btn .qrcode {
background: #fff;
display: inline-flex;
padding: 5px;
}
.float-btn.qrcode-btn .dropdown-menu::before {
top: 73px;
}
.float-btn.newadd-btns .drop-newadd {
width: 137px;
top: -74px;
}
.float-btn.newadd-btns .drop-newadd::before {
left: auto;
top: 88px;
right: -5px;
}
.float-btn .order-thumb {
width: 48px;
height: 48px;
}
/*----搜索页面-----搜索页面-----搜索页面-----搜索页面-----搜索页面-----搜索页面----*/
.search-close-box {
max-width: 660px;
@@ -11688,10 +11492,6 @@ body.error404 {
opacity: 0;
}
.float-btn .hover-show-con {
max-width: 240px;
}
/***---链接列表页面模板---***/
.link-nav-box > .aksrt-panel {
background: transparent;
@@ -11826,13 +11626,6 @@ body.error404 {
padding: 10px 0px;
}
.float-right {
right: 10px;
}
.float-right.position-top {
top: 56px;
}
.em09-sm {
font-size: 0.9em;
}