Files
wordpress-theme-aksrt/assets/css/frontend/vip-modal.css
T
kate522 2801a89c1f fix(vip): 在 /user/vip/ 档位购买卡下方补充积分兑换会员入口
参考主题 zibpay_user_page_tab_content_vip:非会员 + 积分兑换会员开启 +
有可兑换套餐时,在两张档位购买卡下方输出全宽入口横条(points-color 图标
+ 标题 + 立即兑换 badg),点击经 data-aksrt-vip-points-open 打开 wp_footer
静态兑换弹窗,与会员购买弹窗内入口共用同一弹窗。

- aksrt-vip.php 新增 aksrt_get_vip_points_exchange_entry_html(),门控与
  弹窗壳同源(取服务端 catalog),已是会员不展示(对齐参考主题契约)
- vip-tab.php 在卡片区之后输出入口;credits.css 补 .uc-vip-points-entry
  表面样式(与档位卡同一变量体系,暗色自适应)
- pay-vip.js 改文档级委托承接 data-aksrt-vip-points-open,一处绑定覆盖
  静态页面横条与弹窗内按钮;移除 bindModalUi 内的重复分支
- 契约测试更新为双入口(11 项),node --test 420 项通过,php -l 通过

未写数据迁移;未做真实视觉效果验收。
2026-09-23 14:30:54 +08:00

123 lines
3.3 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* VIP pay modal + hover cards (legacy payvip-modal / vip-card).
*/
/* VIP now uses the shared modal runtime host.
壳几何 1:1 对齐 Zibll modal_pay_uservip:
- 宽度 = bootstrap3 ≥768px 的 .modal-dialog 600px,配合
.modal.flex .modal-dialog 的 max-width: calc(100% - 20px)
- 高度 = .modal.flex .modal-content 的 max-height: calc(100vh - 20px)
+ overflow-y: auto(阈值放宽到整屏,正常桌面内容不触发滚动条)
- 圆角 = .modal-content 的 var(--main-radius)(8px) */
.aksrt-modal-runtime.aksrt-vip-modal-shell {
z-index: 1200;
}
.aksrt-modal-runtime.aksrt-vip-modal-shell .aksrt-modal-runtime__dialog {
width: min(600px, calc(100vw - 20px));
max-height: calc(100vh - 20px);
overflow: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
background: var(--main-bg-color, #fff);
border-radius: var(--main-radius, 8px);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);
}
.aksrt-modal-runtime.aksrt-vip-modal-shell .aksrt-modal-runtime__content {
padding: 0;
}
@media (max-width: 768px) {
.aksrt-modal-runtime.aksrt-vip-modal-shell.aksrt-modal-runtime--bottom .aksrt-modal-runtime__dialog {
width: 100%;
max-width: 100%;
max-height: calc(100vh - 20px);
border-radius: var(--main-radius, 8px) var(--main-radius, 8px) 0 0;
}
}
.payvip-modal {
position: relative;
}
/* 积分兑换会员弹窗:参考主题 refresh_modal 同构静态壳
(.modal.flex.jc.fade > .modal-dialog.modal-mini.full-sm > .modal-content
> .modal-body,由 inc/helpers/aksrt-vip.php 服务端输出)。三点约束:
- 静止态必须显式隐藏:main.css 的 .flex{display:flex}(后加载、与 bootstrap
的 .modal{display:none} 同特异性)会让壳永久铺满全屏,叠加 .fade 的
opacity:0 形成隐形遮罩,拦截整页点击;
- 打开态由 pay-vip.js 自包含开关的内联 display:flex 驱动(block 会破坏
.flex.jc 双轴居中),与余额充值/购买积分弹窗同构;
- 入口在会员购买弹窗与 /user/vip/ 页面横条两处,壳需高于 runtime 宿主
(100050),以复现参考主题在会员弹窗之上再叠一层兑换弹窗的行为。 */
.modal[data-aksrt-vip-points-modal] {
display: none;
z-index: 100060;
}
.modal[data-aksrt-vip-points-modal].in {
display: flex;
}
.modal-backdrop[data-aksrt-vip-points-backdrop] {
z-index: 100055;
}
.pay-vip-form-row {
display: grid;
gap: 12px;
}
@media (min-width: 640px) {
.pay-vip-form-row {
grid-template-columns: 1fr 1.2fr;
}
}
/* Modal-only equity (admin HTML; no forced bullets) */
.payvip-modal .v-equity {
display: block;
list-style: none;
margin: 8px 0 0;
padding: 0;
font-size: 12px;
line-height: 1.6;
}
.payvip-modal .v-equity > li {
display: block;
margin: 0 0 6px;
padding: 0;
list-style: none;
}
.payvip-modal .v-equity > li::before,
.payvip-modal .v-equity > li::after {
content: none !important;
display: none !important;
}
.initiate-pay.is-loading,
.initiate-pay:disabled {
opacity: 0.7;
cursor: wait;
}
.vipbg-v2 {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 8px 10px;
border-radius: 8px;
color: #fff;
background: linear-gradient(90deg, #ffb347, #ff6b6b);
}
.vipbg-v2.level-2 {
background: linear-gradient(90deg, #9b59b6, #3f51b5);
}
.vip-expdate-tag {
font-size: 12px;
}