Files
wordpress-theme-aksrt/assets/css/frontend/comments/shell.css
T
kate522 e1f176429b feat(comments): 评论区按 Zibll 1:1 全量复刻
- 评论项/表单/工具栏/筛选/分页/空状态 DOM 全部替换为 zibll 原始类名
  (li.comment、comt-main、comt-meta、list-inline、dropup 工具栏、
  theme-pagination/pagenav、post_ajax_loader 骨架等)
- 移植 zibll main.css L9412–9751 桌面 + 移动端评论样式,
  缺失基础组件(title-theme/dropdown-menu/line-form/tab-nav-theme 等)
  以 #comments 作用域补齐
- 删除全部 aksrt-comment__* 旧类名与旧样式,无兼容层
- JS 选择器对齐 zibll DOM:片段整块替换 #postcomments、骨架加载、
  跳页输入、prepend 插入、addComment onclick 剥离,
  移除 WP comment-reply enqueue 避免双 moveForm
- 表情资源替换为 zibll 全套 gif(内容逐字节一致,git 无差异)
- REST 后端 (CommentActions) 不变

验证:php -l 全部通过;5 个改动 JS 语法校验通过;
node --test tests/widget-system/post-visual-contract.test.cjs 12/12 通过
2026-08-22 13:29:51 +08:00

697 lines
14 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.
/* ============================================================
* AKSRT Comments — Zibll 1:1 移植
*
* 来源:zibll/css/main.css L9412–9751(评论模块 + 分页)及评论所依赖的
* 基础组件(title-theme / dropdown-menu / line-form / tab-nav-theme /
* 工具栏下拉 / placeholder 骨架)。除 Zibll 原生 #comments/#postcomments
* 作用域外,缺失的全局基础类一律以 #comments 前缀作用域移植,避免影响
* 主题其它模块。
* ============================================================ */
/*------评论模块------*/
#comments .comment-box .comments-closed,
#comments .action-text,
#comments #cancel-comment-reply-link {
display: none;
}
#comments #postcomments .action-text,
#comments #postcomments #cancel-comment-reply-link {
display: inline-block;
}
#comments .comt-title {
width: 90px;
}
#comments .comt-title .comt-avatar .avatar {
width: 60px;
height: 60px;
}
#comments #postcomments .comt-title {
display: none;
}
#respond:not(.mobile-fixed) #postcomments .comt-box {
padding: 5px 5px 4px 5px;
background: var(--main-bg-color);
border-radius: 4px;
margin-top: 12px;
}
#comments #postcomments .comt-ctrl .but {
margin-bottom: 2px;
}
#comments .list-inline {
padding: 15px;
margin-left: 0;
}
#comments .list-inline > li {
vertical-align: middle;
}
#comment {
margin-bottom: 5px;
width: 100%;
}
.comment-signarea {
background: var(--main-shadow);
}
#respond + #postcomments .comment-filter,
.comment-signarea + #postcomments .comment-filter {
margin-top: 20px;
}
#postcomments .tab-nav-theme {
margin-top: 0;
}
#postcomments .tab-nav-theme li {
padding-bottom: 1px;
}
#postcomments .tab-nav-theme li::before {
bottom: -2px;
}
.smilie-icon {
width: 30px !important;
display: inline-block;
padding: 3px;
}
#postcomments .comment-footer {
position: relative;
}
#postcomments .avatar-img {
--this-size: 45px;
margin-right: 20px;
}
#postcomments .children .avatar-img {
--this-size: 26px;
vertical-align: 2px;
margin-right: 6px;
}
#postcomments .commentlist > .comment > .list-inline .author-box {
align-items: start;
}
#postcomments .commentlist > .comment > .list-inline .comment-footer {
margin-left: 65px;
margin-top: -25px;
}
#postcomments .comment .list-inline > .comt-main {
width: 100%;
}
#postcomments .commentlist .comment + .comment {
border-top: 1px solid var(--main-border-color);
}
#postcomments .comment .list-inline > li {
padding: 10px;
vertical-align: top;
}
#postcomments .comment-header {
font-size: 15px;
position: relative;
}
#postcomments .action count {
margin-left: 4px;
}
#postcomments .comt-meta > span:not(:empty) {
margin-right: 10px;
vertical-align: middle;
}
#postcomments .comt-meta > span a {
color: inherit;
}
#postcomments .comt-meta > span .but {
padding: 0.2em 0.8em;
}
#postcomments .comment-approve-link.unapprove {
color: #e87725;
}
#postcomments .comment-approve-link.approve {
color: #3695ff;
}
#postcomments .comt-meta > span .comment-trash-link {
color: #ff4b4b;
}
#postcomments .children {
margin-left: 86px;
background: var(--main-shadow);
border-radius: var(--main-radius);
margin-bottom: 6px;
}
#postcomments .children .children {
margin-left: 23px;
}
#postcomments .children .avatar-icontag {
font-size: 8px;
height: 14px;
width: 14px;
}
.content-after-box,
.comment-content {
word-wrap: break-word;
white-space: pre-wrap;
}
.comment-content .enlighter-default {
margin-bottom: 0;
opacity: 0.9;
}
#postcomments .comment-content img:not(.smilie-icon) {
max-width: 260px;
max-height: 350px;
display: block;
width: auto;
height: auto;
}
.virtual-input {
display: none;
}
.commentlist .no-more,
#comments .theme-pagination.pagenav {
margin: 0;
padding-bottom: 10px;
}
/*--------AJAX翻页按钮-----*/
#comments .theme-pagination {
margin: 20px 0;
}
#comments .chat-next a,
#comments .theme-pagination .ajax-next a,
#comments .theme-pagination .order-ajax-next a {
border-radius: 30px;
padding: 5px 15px;
color: var(--muted-color);
opacity: 0.6;
display: inline-block;
}
#comments .chat-next a:hover,
#comments .theme-pagination .ajax-next a:hover,
#comments .theme-pagination .order-ajax-next a:hover {
background: var(--main-border-color);
opacity: 1;
}
#comments .chat-next a .fa,
#comments .theme-pagination .ajax-next .fa,
#comments .theme-pagination .ajax-next .icon,
#comments .theme-pagination .order-ajax-next .fa,
#comments .theme-pagination .order-ajax-next .icon {
margin-right: 15px;
transition: 0.3s;
}
#comments .chat-next a:hover .fa,
#comments .theme-pagination .ajax-next a:hover .fa,
#comments .theme-pagination .ajax-next a:hover .icon,
#comments .theme-pagination .order-ajax-next a:hover .fa,
#comments .theme-pagination .order-ajax-next a:hover .icon {
margin-right: 8px;
}
/*--------数字分页按钮-----*/
#comments .pagenav {
overflow: hidden;
text-align: center;
padding: 20px 0;
transition: 0.2s;
line-height: 1.4;
}
#comments .pagenav .current,
#comments .pagenav .page-numbers,
#comments .pagenav a {
padding: 6px 9px 5px;
color: var(--muted-color);
display: inline-block;
border-radius: 3px;
background-color: var(--main-border-color);
margin: 3px;
min-width: 31px;
}
#comments .pagenav .current {
background-color: var(--focus-color) !important;
color: #fff !important;
}
#comments .pagenav a:hover {
opacity: 0.7;
}
#comments .pagenav .pag-jump {
display: inline-flex;
align-items: center;
position: relative;
}
#comments .pagenav .pag-jump .jump-icon {
z-index: 1;
}
#comments .pagenav .pag-jump .jump-icon:hover {
color: var(--focus-color);
}
#comments .pagenav .pag-jump .jump-input {
opacity: 0;
height: 100%;
width: 100%;
border-radius: 3px;
position: absolute;
left: 0;
top: 0;
transition: 0.2s;
padding: 5px 22px 5px 5px;
}
#comments .pagenav .jump-input:focus,
#comments .pagenav .pag-jump:hover .jump-input {
opacity: 1;
}
/* ============================================================
* 评论依赖的基础组件(zibll main.css,作用域 #comments)
* ============================================================ */
/* 标题(zibll .title-theme) */
#comments .title-theme {
position: relative;
padding-left: 1.2em;
font-size: 15px;
}
#comments .title-theme small {
font-size: 80%;
opacity: 0.7;
margin-left: 0.4em;
}
#comments .title-theme::before {
position: absolute;
content: '';
width: 4px;
background: var(--theme-color);
top: 10%;
left: 2px;
bottom: 10%;
border-radius: 5px;
box-shadow: 1px 1px 3px -1px var(--theme-color);
}
/* 下拉菜单(zibll .dropdown-menu) */
#comments .dropdown-menu {
border-color: transparent;
background: var(--main-bg-color);
--this-color: var(--main-color);
color: var(--this-color);
box-shadow: 0 0 10px 8px var(--main-shadow);
min-width: 100px;
opacity: 0;
transform: translateY(6px);
transition: 0.3s;
display: block;
margin-top: 6px;
visibility: hidden;
list-style: none !important;
z-index: 992;
border-radius: var(--main-radius);
}
#comments .dropdown-menu a {
border-radius: var(--mini-radius);
}
#comments .dropup {
position: relative;
}
#comments span.dropup,
#comments span.dropdown {
display: inline-block;
}
#comments .dropup .dropdown-menu {
bottom: 100%;
margin-bottom: 6px;
margin-top: 0;
transform: translateY(-6px);
}
#comments .open > .dropdown-menu,
#comments .dropdown.open > .dropdown-menu {
visibility: unset;
opacity: 1;
transform: translateY(0);
}
#comments .dropdown-menu > li > a {
color: var(--this-color);
padding: 6px 20px;
text-shadow: none;
display: block;
}
#comments .dropdown-menu > li > a:hover {
background: var(--focus-color-opacity05);
}
/* 游客信息 line-form(zibll .line-form / .scale-placeholder / .line-form-input) */
#comments .line-form {
position: relative;
}
#comments .line-form .abs-right {
margin-top: 3px;
}
#comments .line-form-input {
outline: 0 !important;
border: none;
display: block;
width: 100%;
padding: 1em 2em 0.4em 0.3em;
opacity: 0.8;
transition: 0.3s;
background: transparent !important;
}
#comments .line-form-input::-webkit-input-placeholder {
color: var(--muted-2-color);
}
#comments .line-form-input:focus {
opacity: 1;
}
#comments .scale-placeholder {
position: absolute;
bottom: 5px;
opacity: 0.5;
transition: 0.2s;
padding-left: 4px;
transform-origin: left top;
user-select: none;
pointer-events: none;
backface-visibility: hidden;
z-index: 1;
cursor: text;
}
#comments .scale-placeholder.is-focus,
#comments input:focus ~ .scale-placeholder {
transform: translateY(-20px);
font-size: 11px;
}
#comments input:focus ~ .scale-placeholder {
color: var(--focus-color);
opacity: 0.9;
}
/* 排序筛选标签(zibll .tab-nav-theme) */
#comments .tab-nav-theme {
border-bottom: 1px solid var(--main-border-color);
padding-bottom: 6px;
margin: 8px 0 5px;
list-style: none;
}
#comments .tab-nav-theme li,
#comments .tab-nav-theme ul {
list-style: none;
}
#comments .tab-nav-theme li {
position: relative;
display: inline-block;
padding: 0 8px 6px;
}
#comments .tab-nav-theme li::before {
content: '';
position: absolute;
width: 20px;
height: 2px;
background: var(--theme-color);
border-radius: 5px;
left: 0;
right: 0;
margin: auto;
bottom: 5px;
opacity: 0;
transition: 0.4s;
}
#comments .tab-nav-theme li.active::before {
opacity: 1;
}
#comments .tab-nav-theme li a {
color: var(--muted-color);
display: inline-block;
}
#comments .tab-nav-theme li.active a {
color: var(--focus-color);
}
/* 置顶徽章(zibll badge.badge-topping) */
#comments badge.badge-topping {
min-width: 1.4em;
padding: 0 2px;
line-height: 1.4em;
border-radius: 0.45em 2px;
display: inline-flex;
align-items: center;
justify-content: center;
text-align: center;
color: #fff;
}
/* 工具栏下拉(zibll .dropdown-smilie / .dropdown-code / .dropdown-image / .dropdown-link / quick) */
#comments .dropdown-smilie {
width: 260px;
height: 300px;
padding: 8px 10px;
white-space: inherit;
text-align: center;
}
#comments .dropdown-smilie .smilie-icon {
display: inline-block;
padding: 3px;
width: 38px !important;
}
#comments .dropdown-smilie .smilie-icon img {
width: 30px;
height: 30px;
display: block;
}
#comments .dropdown-quick-often {
width: 260px;
}
#comments .dropdown-quick-often .scroll-y {
max-height: 280px;
}
#comments .dropdown-quick-often .list-inline {
padding: 0 10px !important;
}
#comments .quick-reply-item {
padding: 6px 0;
color: var(--muted-color);
margin: 0 10px;
cursor: pointer;
}
#comments .quick-reply-item + .quick-reply-item {
border-top: 1px solid var(--main-border-color);
}
#comments .quick-reply-item:hover {
color: var(--focus-color);
}
#comments .dropdown-link,
#comments .dropdown-code,
#comments .dropdown-image {
width: 250px;
padding: 8px 10px;
}
#comments .dropdown-menu .dropdown-link,
#comments .dropdown-menu .dropdown-code,
#comments .dropdown-menu .dropdown-image,
#comments .dropdown-menu .dropdown-quick-often {
box-shadow: none;
background: transparent;
min-width: 0;
opacity: 1;
visibility: unset;
transform: none;
margin: 0;
display: block;
}
#comments .scroll-y {
overflow-y: auto;
}
/* 占位骨架(zibll .placeholder) */
#comments .placeholder {
background: linear-gradient(118deg, rgba(121, 121, 121, 0.1) 25%, rgba(121, 121, 121, 0.2) 37%, rgba(121, 121, 121, 0.1) 63%);
opacity: 1;
border-radius: 4px;
animation: aksrt-comment-placeholder 1.5s ease infinite !important;
background-size: 400% 100% !important;
}
#comments .placeholder.k2 {
height: 20px;
}
#comments .placeholder.s1 {
width: 70px;
height: 15px;
display: inline-block;
}
#comments .placeholder.radius {
border-radius: 50%;
width: 45px;
height: 45px;
}
#comments .post_ajax_loader {
display: none;
}
@keyframes aksrt-comment-placeholder {
0% {
background-position: 100% 50%;
}
100% {
background-position: 0 50%;
}
}
/* 工具类(zibll,作用域 #comments) */
#comments .text-right {
text-align: right;
}
#comments .hide-sm {
display: inline;
}
#comments .pw-1em {
padding-left: 1em;
padding-right: 1em;
}
#comments .p2-10 {
padding: 2px 10px;
}
#comments .padding-6 {
padding: 6px;
}
#comments .mb6 {
margin-bottom: 6px;
}
/* 评论作者行布局补充(zibll author-box / name) */
#comments .comment-header .author-box {
display: flex;
align-items: center;
}
#comments .comment-header name {
display: flex;
align-items: center;
min-width: 0;
}
#comments .comment-header name a,
#comments .comment-header name b {
max-width: 14em;
}
#comments .comment-header .action-comment-like {
text-decoration: none;
color: var(--muted-2-color);
}
#comments .comment-header .action-comment-like.actived,
#comments .comment-header .action-comment-like.actived .fa {
color: var(--focus-color);
}
#comments .comt-meta {
font-size: 12px;
}
#comments .comt-meta .dropdown-menu a {
display: block;
}
/* 身份徽章(AKSRT 渲染于 <name> 内,随 zibll ml3 间距) */
#comments .comment-header .aksrt-identity-chip {
display: inline-flex;
align-items: center;
gap: 3px;
vertical-align: middle;
max-width: 9em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 11px;
}
#comments .comment-header .aksrt-identity-medal {
display: inline-block;
width: auto;
height: 1.1em;
max-width: 6em;
object-fit: contain;
vertical-align: -0.15em;
}