// ==UserScript==
// @name 哔哩哔哩电脑网页版手机端适配优化脚本简洁版
// @namespace http://tampermonkey.net/
// @version 131.52
// @description B站电脑版 -> 手机端布局;统一两列卡片网格(168x172,封面 16:9,标题 13px 两行居中)、隐藏PC端头部与侧栏并内置顶部搜索栏;首页/搜索页/番剧页/视频页(/list/播放列表)/动态详情页/opus详情页/UP主空间(主页、投稿、图文、合集和系列、合集详情)逐页适配
// @author YourName
// @match *://*.bilibili.com/*
// @grant none
// @run-at document-start
// @license All Rights Reserved
// ==/UserScript==
(function () {
'use strict';
const isHome = () => {
const h = location.hostname, p = location.pathname;
return (h === 'www.bilibili.com' || h === 'bilibili.com') &&
(p === '/' || p === '/index.html' || p === '');
};
const isVideoPage = () => location.hostname === 'www.bilibili.com' && /^\/video\//.test(location.pathname);
// 收藏夹/合集播放列表页(/list/mlxxx、/medialist/play/mlxxx):DOM 与视频页同构,完整复用视频页优化
const isListPage = () => location.hostname === 'www.bilibili.com' &&
(/^\/list\//.test(location.pathname) || /^\/medialist\/play\//.test(location.pathname));
const isBangumiPage = () => location.hostname === 'www.bilibili.com' && /^\/bangumi\/play\//.test(location.pathname);
const isTBiliDynamic = () => location.hostname === 't.bilibili.com';
const isOpusPage = () => {
const h = location.hostname, p = location.pathname;
return (h === 'www.bilibili.com' || h === 'bilibili.com') &&
(/^\/opus\//.test(p) || /^\/read\//.test(p));
};
const isSearchPage = () => location.hostname === 'search.bilibili.com';
const isSpacePage = () => location.hostname === 'space.bilibili.com';
function installShadowRootPatch() {
if (installShadowRootPatch._installed) return;
installShadowRootPatch._installed = true;
const originalAttachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function(init) {
const shadowRoot = originalAttachShadow.call(this, init);
// 动态详情页(t.bilibili.com/xxx)与 opus 详情页(/opus/xxx)评论区
// 都与视频页同源(bili-comments),一并注入才能做到"与视频页完全一致"
if (init.mode === 'open' && (isVideoPage() || isBangumiPage() || isListPage() || isTBiliDynamic() || isOpusPage())) {
try {
const style = document.createElement('style');
style.setAttribute('data-bili-mobile-hidden', 'true');
style.textContent = `
bili-comment-box, #commentbox { display: none !important; visibility: hidden !important; height: 0 !important; }
#like, #dislike, #reply, #more { display: none !important; visibility: hidden !important; height: 0 !important; }
bili-comments-vote-card, #vote { display: none !important; visibility: hidden !important; height: 0 !important; }
bili-comments-header-renderer { margin-bottom: 0 !important; padding-bottom: 0 !important; }
#header { margin-bottom: 0 !important; padding-bottom: 0 !important; }
#contents { margin-top: 0 !important; padding-top: 0 !important; }
`;
shadowRoot.appendChild(style);
} catch (e) {}
}
return shadowRoot;
};
}
function fixViewport() {
const apply = () => {
const root = document.head || document.documentElement;
if (!root) return;
let vp = document.querySelector('meta[name="viewport"]');
if (!vp) {
vp = document.createElement('meta');
vp.name = 'viewport';
root.appendChild(vp);
}
const content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover';
if (vp.getAttribute('content') !== content) {
vp.setAttribute('content', content);
}
};
apply();
[0, 50, 200, 500, 1000, 2000, 5000].forEach(t => setTimeout(apply, t));
document.addEventListener('DOMContentLoaded', apply);
window.addEventListener('load', apply);
try {
const obs = new MutationObserver(() => apply());
obs.observe(document.head || document.documentElement, {
childList: true, subtree: true, attributes: true, attributeFilter: ['content']
});
} catch (e) {}
}
function injectStyle() {
if (document.getElementById('bili-mobile-style')) return;
const root = document.head || document.documentElement;
if (!root) return;
const style = document.createElement('style');
style.id = 'bili-mobile-style';
style.textContent = `
/* ===== 全局 ===== */
html, body {
background-color: #ffffff !important;
width: 100% !important;
max-width: 100vw !important;
min-width: 0 !important;
overflow-x: hidden !important;
margin: 0 !important;
padding: 0 !important;
overscroll-behavior-y: none !important;
}
html { background-color: #ffffff !important; }
* { box-sizing: border-box !important; }
body:not(.video-fullscreen) > * {
max-width: 100vw !important;
}
.bili-header, .international-header, .mini-header,
#biliMainHeader, .bili-header-m, .nav-menu {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
#bili-header-container,
.bili-header--mini,
.bili-header--fixed {
display: none !important;
height: 0 !important;
overflow: hidden !important;
}
/* ===== 自建搜索栏 ===== */
#my-bili-searchbar {
position: fixed !important;
top: 0 !important; left: 0 !important; right: 0 !important;
width: 100% !important;
max-width: 100vw !important;
height: 52px !important;
background: #ffffff !important;
box-shadow: 0 1px 4px rgba(0,0,0,0.08) !important;
z-index: 2147483646 !important;
display: flex !important;
align-items: center !important;
padding: 0 10px !important;
box-sizing: border-box !important;
gap: 8px !important;
}
#my-bili-dynamic-btn {
flex-shrink: 0 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
height: 36px !important;
padding: 0 10px !important;
background: #f1f2f3 !important;
border-radius: 18px !important;
color: #18191c !important;
text-decoration: none !important;
cursor: pointer !important;
white-space: nowrap !important;
user-select: none !important;
}
#my-bili-dynamic-btn:active { background: #e3e5e7 !important; }
#my-bili-dynamic-btn svg { width: 18px !important; height: 18px !important; flex-shrink: 0 !important; }
#my-bili-searchbar .my-search-wrap {
flex: 1 !important;
display: flex !important;
align-items: center !important;
background: #f1f2f3 !important;
border-radius: 20px !important;
height: 36px !important;
padding: 0 6px 0 14px !important;
overflow: hidden !important;
min-width: 0 !important;
}
#my-bili-searchbar input {
flex: 1 !important;
border: none !important;
outline: none !important;
background: transparent !important;
font-size: 14px !important;
color: #18191c !important;
height: 100% !important;
padding: 0 !important;
margin: 0 !important;
min-width: 0 !important;
-webkit-appearance: none !important;
appearance: none !important;
}
#my-bili-searchbar input::placeholder { color: #9499a0 !important; }
#my-bili-searchbar .my-search-btn {
width: 32px !important; height: 32px !important;
border-radius: 50% !important;
border: none !important;
background: transparent !important;
color: #61666d !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
cursor: pointer !important;
padding: 0 !important;
flex-shrink: 0 !important;
}
#my-bili-order-btn {
flex-shrink: 0 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
gap: 4px !important;
height: 36px !important;
padding: 0 12px !important;
background: #f1f2f3 !important;
border-radius: 18px !important;
color: #18191c !important;
font-size: 13px !important;
cursor: pointer !important;
white-space: nowrap !important;
user-select: none !important;
-webkit-tap-highlight-color: transparent !important;
}
#my-bili-order-btn:active { background: #e3e5e7 !important; }
#my-bili-order-btn svg {
width: 16px !important;
height: 16px !important;
flex-shrink: 0 !important;
color: #61666d !important;
}
#my-bili-order-btn .order-label {
font-weight: 500 !important;
color: #18191c !important;
}
/* ============================================================
========== 首页 ==========
============================================================ */
body.bili-home-page { padding-top: 52px !important; }
body.bili-home-page .banner,
body.bili-home-page .bili-banner,
body.bili-home-page .carousel,
body.bili-home-page .carousel-container,
body.bili-home-page .carousel-area,
body.bili-home-page .carousel-area-img,
body.bili-home-page .recommend-banner,
body.bili-home-page [class*="carousel"],
body.bili-home-page [class*="vui_carousel"],
body.bili-home-page .recommended-swipe,
body.bili-home-page .recommended-swipe-body,
body.bili-home-page .recommended-swipe-body-normal,
body.bili-home-page .floor,
body.bili-home-page .bili-floor,
body.bili-home-page .floor-single-card,
body.bili-home-page .fixed-sidebar,
body.bili-home-page .go-top,
body.bili-home-page .bili-fixed-sidebar,
body.bili-home-page .footer,
body.bili-home-page .bili-footer,
body.bili-home-page .international-footer,
body.bili-home-page .mini-footer,
body.bili-home-page .ad-report,
body.bili-home-page .ad-floor,
body.bili-home-page .channel-menu,
body.bili-home-page .nav-channel,
body.bili-home-page .bili-header__channel,
body.bili-home-page .bili-header__channel-sticky,
body.bili-home-page .header-channel,
body.bili-home-page .bili-header-channel,
body.bili-home-page .nav-channel-list,
body.bili-home-page [class*="channel"][class*="header"],
body.bili-home-page [class*="header"][class*="channel"],
body.bili-home-page .header-nav,
body.bili-home-page .nav-bar,
body.bili-home-page .roll-btn,
body.bili-home-page .roll-btn-text,
body.bili-home-page .feed-roll-btn,
body.bili-home-page [class*="roll-btn"],
body.bili-home-page .bili-header__menu,
body.bili-home-page .bili-header__bar,
body.bili-home-page .bili-header-banner-img,
body.bili-home-page .banner-img,
body.bili-home-page .animated-banner,
body.bili-home-page .taper-line,
body.bili-home-page .palette-button-outer,
body.bili-home-page .palette-feed4,
body.bili-home-page [class*="right-side"],
body.bili-home-page [class*="right-bar"],
body.bili-home-page [class*="right-tool"],
body.bili-home-page [class*="side-tool"],
body.bili-home-page [class*="toolbar"],
body.bili-home-page [class*="feedback"],
body.bili-home-page [class*="customer-service"],
body.bili-home-page [class*="service-btn"],
body.bili-home-page [class*="back-top"],
body.bili-home-page [class*="goto-top"],
body.bili-home-page [class*="to-top"],
body.bili-home-page .go-top,
body.bili-home-page .bili-go-top {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-home-page .container,
body.bili-home-page .container.is-version8,
body.bili-home-page .recommended-container_floor-aside .container {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-grid-gap: 8px !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
padding: 8px !important;
margin: 0 !important;
background-color: #f1f2f3 !important;
box-sizing: border-box !important;
align-items: start !important;
align-content: start !important;
grid-auto-rows: auto !important;
}
body.bili-home-page .bili-feed4,
body.bili-home-page .bili-feed4-layout,
body.bili-home-page .feed2,
body.bili-home-page .recommended-container_floor-aside {
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-home-page .bili-feed4 * { max-width: 100% !important; }
body.bili-home-page .container > .feed-card,
body.bili-home-page .container > .bili-feed-card {
display: contents !important;
}
body.bili-home-page .container > .feed-card:not(:has(.bili-video-card__wrap)):not(:has(.bili-live-card__wrap)),
body.bili-home-page .container > .bili-feed-card:not(:has(.bili-video-card__wrap)):not(:has(.bili-live-card__wrap)),
body.bili-home-page .container > .feed-card:has(.bili-video-card__info--ad),
body.bili-home-page .container > .feed-card:has(.bili-video-card__info--creative-ad),
body.bili-home-page .container > .feed-card:has([href^="//cm.bilibili.com/cm/api/"]),
body.bili-home-page .container > .bili-feed-card:has(.bili-video-card__info--ad),
body.bili-home-page .container > .bili-feed-card:has(.bili-video-card__info--creative-ad),
body.bili-home-page .container > .bili-feed-card:has([href^="//cm.bilibili.com/cm/api/"]) {
display: none !important;
}
/* ============================================================
========== 搜索页 ==========
============================================================ */
html:has(body.bili-search-page),
body.bili-search-page {
width: 100vw !important;
max-width: 100vw !important;
min-width: 0 !important;
overflow-x: hidden !important;
padding: 0 !important;
margin: 0 !important;
background-color: #f1f2f3 !important;
}
body.bili-search-page { padding-top: 52px !important; }
body.bili-search-page * {
max-width: 100% !important;
box-sizing: border-box !important;
}
body.bili-search-page img,
body.bili-search-page video,
body.bili-search-page picture {
max-width: 100% !important;
height: auto !important;
}
html body.bili-search-page #app,
html body.bili-search-page #app > div,
html body.bili-search-page #search-app,
html body.bili-search-page #app .search-layout,
html body.bili-search-page #app .search-layout.clearfix,
html body.bili-search-page #app .search-content,
html body.bili-search-page #app .search-content--gray,
html body.bili-search-page #app .search-page-wrapper,
html body.bili-search-page #app .search-page,
html body.bili-search-page #app .search-page.search-page-all,
html body.bili-search-page #app .search-page > div,
html body.bili-search-page #app .video.i_wrapper,
html body.bili-search-page #app .video.i_wrapper.search-all-list,
html body.bili-search-page #app .search-all-list,
body.bili-search-page .search-container,
body.bili-search-page .search-result,
body.bili-search-page .search-result-wrapper,
body.bili-search-page .search-page-container,
body.bili-search-page .search-page-content,
body.bili-search-page .video-list-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
box-sizing: border-box !important;
position: static !important;
left: 0 !important;
right: 0 !important;
transform: none !important;
overflow-x: hidden !important;
float: none !important;
}
body.bili-search-page .bili-header,
body.bili-search-page .international-header,
body.bili-search-page .mini-header,
body.bili-search-page #biliMainHeader,
body.bili-search-page #bili-header-container,
body.bili-search-page .bili-header--mini,
body.bili-search-page .bili-header--fixed,
body.bili-search-page .bili-header__bar,
body.bili-search-page .bili-header__menu,
body.bili-search-page .nav-menu,
body.bili-search-page .channel-menu,
body.bili-search-page .nav-channel,
body.bili-search-page .header-channel,
body.bili-search-page .nav-bar,
body.bili-search-page .footer,
body.bili-search-page .bili-footer,
body.bili-search-page .international-footer,
body.bili-search-page .mini-footer,
body.bili-search-page .go-top,
body.bili-search-page .bili-go-top,
body.bili-search-page [class*="back-top"],
body.bili-search-page [class*="to-top"],
body.bili-search-page [class*="right-side"],
body.bili-search-page [class*="right-bar"],
body.bili-search-page [class*="right-tool"],
body.bili-search-page [class*="side-tool"],
body.bili-search-page [class*="toolbar"],
body.bili-search-page [class*="feedback"],
body.bili-search-page [class*="customer-service"],
body.bili-search-page [class*="service-btn"],
body.bili-search-page .ad-report,
body.bili-search-page .ad-floor,
body.bili-search-page .fixed-sidebar,
body.bili-search-page .bili-fixed-sidebar {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-search-page .search-condition,
body.bili-search-page .search-condition-wrapper,
body.bili-search-page .filter-wrap,
body.bili-search-page .search-filter,
body.bili-search-page .left-search-filter,
body.bili-search-page .search-page-left,
body.bili-search-page aside.left,
body.bili-search-page .search-filters,
body.bili-search-page .search-condition-left,
body.bili-search-page .search-header,
body.bili-search-page .search-navbar,
body.bili-search-page .nav-search,
body.bili-search-page .search-input,
body.bili-search-page .search-input-container,
body.bili-search-page .bili-header__search,
body.bili-search-page [class*="search-header"],
body.bili-search-page [class*="search-nav"],
body.bili-search-page .search-hot,
body.bili-search-page .hot-search,
body.bili-search-page .search-trending,
body.bili-search-page .trending,
body.bili-search-page [class*="hot-word"],
body.bili-search-page [class*="hotsearch"] {
display: none !important;
visibility: hidden !important;
}
body.bili-search-page .activity-game-list,
body.bili-search-page .user-list,
body.bili-search-page .activity-game-list-wrap {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
html body.bili-search-page #app .video-list,
html body.bili-search-page #app .video-list.row,
html body.bili-search-page #app .search-video-list,
html body.bili-search-page #app .card-list,
html body.bili-search-page #app .search-result-list,
html body.bili-search-page #app ul.video-list,
html body.bili-search-page #app .search-page-video-list,
html body.bili-search-page #app .search-all-list > .video-list,
html body.bili-search-page #app .search-all-list > .video-list.row,
html body.bili-search-page #app .video.i_wrapper.search-all-list > .video-list,
html body.bili-search-page #app .video.i_wrapper.search-all-list > .video-list.row {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-gap: 8px !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 100% !important;
padding: 8px !important;
margin: 0 !important;
background-color: #f1f2f3 !important;
box-sizing: border-box !important;
list-style: none !important;
align-items: start !important;
align-content: start !important;
grid-auto-rows: auto !important;
float: none !important;
position: static !important;
}
/* ===== 搜索结果番剧区:综合页 / 番剧垂搜页 统一边距 =====
涉及两处,类名不同但结构同构,这里共用同一组规则:
· 综合页(/all) :.bangumi-pgc-list.i_wrapper.search-all-list
· 番剧垂搜页(/bangumi):.media-list.i_wrapper(卡内为 .col_6.mb_x40)
实测(360px 屏,综合页):容器 360 -> row 344 -> col/card 328,
即卡片左右各留 16px(8 容器 + 8 row),左右相等即居中;
垂搜页原本 row 仅 248、card 232,明显更窄,需拉到同一条边线。
同时解除 B站对该区域的固定高度(实测容器 685px、row 已占 684px),
并把卡片下边距 mb_x40(40px) 压到 8px,使「查看全部 N 部相关番剧作品」
不再被裁掉一半、无需再下滑。
卡片内部(左封面 148 + 右信息区)保持 B站原生排布,不改动。 */
/* 1) 容器:左右 8px + 上下 8px,解除官方高度限制 */
html body.bili-search-page #app .bangumi-pgc-list,
html body.bili-search-page #app .bangumi-pgc-list.i_wrapper,
html body.bili-search-page #app .media-list,
html body.bili-search-page #app .media-list.i_wrapper,
body.bili-search-page .bangumi-pgc-list,
body.bili-search-page .media-list,
body.bili-search-page .media-list.i_wrapper {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
padding-top: 8px !important;
padding-bottom: 8px !important;
margin-left: auto !important;
margin-right: auto !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
box-sizing: border-box !important;
float: none !important;
}
/* 2) 行容器:左右 8px(与容器叠加 = 16px),高度自适应、不裁剪 */
html body.bili-search-page #app .bangumi-pgc-list .row.media-item,
html body.bili-search-page #app .media-list .row,
html body.bili-search-page #app .media-list.i_wrapper > .row,
body.bili-search-page .bangumi-pgc-list .row.media-item,
body.bili-search-page .media-list .row,
body.bili-search-page .media-list.i_wrapper > .row {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
box-sizing: border-box !important;
float: none !important;
}
/* 3) 卡片栅格列:占满整行(单列)。
上下卡片间距 = 卡片距屏幕左右边缘的距离 = 16px
(左右实测:容器 8 + row 8 = 卡片距屏幕 16px,两边相等即居中) */
html body.bili-search-page #app .bangumi-pgc-list .media-item-col,
html body.bili-search-page #app .bangumi-pgc-list [class*="media-item-col"],
html body.bili-search-page #app .media-list [class*="col_6"],
html body.bili-search-page #app .media-list [class*="col_md_4"],
html body.bili-search-page #app .media-list .mb_x40,
body.bili-search-page .bangumi-pgc-list [class*="media-item-col"],
body.bili-search-page .media-list [class*="col_6"],
body.bili-search-page .media-list [class*="col_md_4"],
body.bili-search-page .media-list .mb_x40 {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
margin-top: 0 !important;
margin-bottom: 16px !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
box-sizing: border-box !important;
float: none !important;
}
/* 4) 卡片本体:满宽居中(综合页 232/328 -> 328,与综合页同一条边线)
【关键1】.media-card 原生就是 flex 行布局(左封面 148 + 右信息区),
上一版误写成 display:block,把封面和文字压成了上下排列(卡片 198 -> 647 高)。
这里显式写回 flex row:左封面固定 148,右信息区吃掉剩余宽度。
【关键2】改回 flex 后信息区变成 180(148+180=328)把间距吃没了,
原生是 封面148 + 间距16 + 信息区164 = 328,
所以用 column-gap:16px 把这段间距加回来(信息区自动回到 164)。 */
html body.bili-search-page #app .bangumi-pgc-list .media-card,
html body.bili-search-page #app .media-list .media-card,
body.bili-search-page .bangumi-pgc-list .media-card,
body.bili-search-page .media-list .media-card,
body.bili-search-page .media-card {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
align-items: flex-start !important;
column-gap: 16px !important;
gap: 0 16px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
box-sizing: border-box !important;
float: none !important;
}
/* 4-1) 左封面:固定 148px(与原生一致),不拉伸、不压缩 */
html body.bili-search-page #app .bangumi-pgc-list .media-card > .media-card-image,
html body.bili-search-page #app .media-list .media-card > .media-card-image,
body.bili-search-page .bangumi-pgc-list .media-card > .media-card-image,
body.bili-search-page .media-list .media-card > .media-card-image {
flex: 0 0 148px !important;
width: 148px !important;
min-width: 148px !important;
max-width: 148px !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
html body.bili-search-page #app .media-card > .media-card-image picture,
html body.bili-search-page #app .media-card > .media-card-image img,
body.bili-search-page .media-card > .media-card-image picture,
body.bili-search-page .media-card > .media-card-image img {
width: 100% !important;
height: auto !important;
max-width: 100% !important;
object-fit: cover !important;
}
/* 4-2) 右信息区:吃掉剩余宽度(垂搜页 68 -> 164,与综合页一致) */
html body.bili-search-page #app .bangumi-pgc-list .media-card > .media-card-content,
html body.bili-search-page #app .media-list .media-card > .media-card-content,
body.bili-search-page .bangumi-pgc-list .media-card > .media-card-content,
body.bili-search-page .media-list .media-card > .media-card-content {
flex: 1 1 auto !important;
width: auto !important;
min-width: 0 !important;
max-width: 100% !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
/* 5) 「查看全部 N 部相关番剧作品」:解除裁剪 + 在长条容器内完全居中
【叠加的真因】按钮带 .p_center(原生靠 absolute + transform 居中),
脱出文档流后 .show-more-text 高度塌成 0,按钮就画在别的内容上面了。
这里把按钮和外框都改回 static,让按钮重新撑起高度、参与正常排版;
容器已解除固定高度 + overflow:visible,按钮得以完整显示且不再重叠。
【上下不居中的原因】外框是 block 长条,按钮是 inline-block,
只能靠 text-align 左右居中;垂直方向贴着 padding-top 走,天然偏上。
这里把外框改成 flex,align-items:center + justify-content:center,
按钮在长条容器内左右、上下都居中;外框保留最小高度,保证长条背景完整。 */
html body.bili-search-page #app .bangumi-pgc-list .show-more-text,
html body.bili-search-page #app .media-list .show-more-text,
body.bili-search-page .bangumi-pgc-list .show-more-text,
body.bili-search-page .media-list .show-more-text {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
align-items: center !important;
justify-content: center !important;
position: static !important;
visibility: visible !important;
opacity: 1 !important;
width: 100% !important;
max-width: 100% !important;
height: auto !important;
min-height: 40px !important;
max-height: none !important;
/* 上下 padding 必须对称,否则即使 flex 居中,按钮视觉上仍会偏上 */
padding: 6px 0 !important;
margin: 8px auto 0 !important;
overflow: visible !important;
text-align: center !important;
box-sizing: border-box !important;
float: none !important;
clear: both !important;
}
html body.bili-search-page #app .bangumi-pgc-list .show-more-text button,
html body.bili-search-page #app .media-list .show-more-text button,
body.bili-search-page .bangumi-pgc-list .show-more-text button,
body.bili-search-page .media-list .show-more-text button,
body.bili-search-page .show-more-text button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
position: static !important;
top: auto !important;
right: auto !important;
bottom: auto !important;
left: auto !important;
transform: none !important;
visibility: visible !important;
opacity: 1 !important;
flex: 0 0 auto !important;
width: auto !important;
max-width: 100% !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 4px 8px !important;
margin: 0 !important;
line-height: normal !important;
white-space: normal !important;
overflow: visible !important;
text-align: center !important;
box-sizing: border-box !important;
float: none !important;
}
body.bili-search-page .video-item + .video-item,
body.bili-search-page .video-list > li + li,
body.bili-search-page .search-result-list > li + li {
border-top: none !important;
padding-top: 0 !important;
margin-top: 0 !important;
}
body.bili-search-page .video-item::before,
body.bili-search-page .video-item::after,
body.bili-search-page .bili-video-card::before,
body.bili-search-page .bili-video-card::after,
body.bili-search-page .video-list > li::before,
body.bili-search-page .video-list > li::after {
display: none !important;
content: none !important;
}
html body.bili-search-page #app .video-list > *,
html body.bili-search-page #app .search-video-list > *,
html body.bili-search-page #app .card-list > *,
html body.bili-search-page #app .search-result-list > *,
html body.bili-search-page #app ul.video-list > *,
html body.bili-search-page #app .search-page-video-list > *,
html body.bili-search-page #app .search-all-list .video-list > *,
html body.bili-search-page #app .video-list.row > div[class*="col_"],
html body.bili-search-page #app .video-list.row > .col_3,
html body.bili-search-page #app .video-list.row > .col_xs_1_5,
html body.bili-search-page #app .video-list.row > .col_md_2,
html body.bili-search-page #app .video-list.row > .to_hide_xs,
html body.bili-search-page #app .video-list.row > .to_hide_md,
html body.bili-search-page #app .video-list.row > .to_hide_xl {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
padding: 0 !important;
float: none !important;
box-sizing: border-box !important;
flex: 1 1 100% !important;
position: static !important;
}
html body.bili-search-page #app .bili-video-card,
html body.bili-search-page #app .bili-video-card.bili-video-card,
html body.bili-search-page #app .bili-video-card.bili-video-card.bili-video-card,
html body.bili-search-page #app .search-all-list .bili-video-card,
html body.bili-search-page #app .video-list.row .bili-video-card {
height: auto !important;
max-height: none !important;
min-height: 172px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 100% !important;
margin: 0 !important;
padding: 0 !important;
display: block !important;
align-self: start !important;
background: #ffffff !important;
border: none !important;
border-radius: 8px !important;
box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
overflow: hidden !important;
box-sizing: border-box !important;
position: relative !important;
float: none !important;
flex: 1 1 100% !important;
}
html body.bili-search-page #app .bili-video-card__skeleton,
html body.bili-search-page #app .bili-video-card__skeleton--cover,
html body.bili-search-page #app .bili-video-card__skeleton--info,
html body.bili-search-page #app .bili-video-card__skeleton--right,
html body.bili-search-page #app .bili-video-card__skeleton--text,
html body.bili-search-page #app .bili-video-card__skeleton--light,
html body.bili-search-page #app .bili-video-card__skeleton.hide,
html body.bili-search-page #app .bili-video-card__skeleton--text.short {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
flex: none !important;
display: block !important;
}
body.bili-search-page .bili-video-card__wrap,
body.bili-search-page .bili-video-card__info,
body.bili-search-page .bili-video-card__image--wrap {
height: auto !important;
max-height: none !important;
min-height: 0 !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
}
body.bili-search-page .flex_center.mt_x50,
body.bili-search-page .flex_center.mb_x50,
body.bili-search-page [class*="mt_x50"],
body.bili-search-page [class*="mb_x50"] {
margin-top: 8px !important;
margin-bottom: 8px !important;
}
body.bili-search-page .vui_pagenation,
body.bili-search-page .page-wrap,
body.bili-search-page .pagination {
display: flex !important;
justify-content: center !important;
width: 100% !important;
max-width: 100% !important;
padding: 8px 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-search-page .vui_pagenation--btns {
display: flex !important;
flex-wrap: nowrap !important;
justify-content: flex-start !important;
align-items: center !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
gap: 4px !important;
overflow-x: auto !important;
-webkit-overflow-scrolling: touch !important;
}
body.bili-search-page .vui_pagenation--btns::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
}
body.bili-search-page .vui_pagenation--btns {
scrollbar-width: none !important;
-ms-overflow-style: none !important;
}
body.bili-search-page .vui_pagenation--btn {
flex-shrink: 0 !important;
flex-grow: 0 !important;
margin: 0 !important;
min-width: 32px !important;
padding: 0 6px !important;
height: 34px !important;
line-height: 34px !important;
box-sizing: border-box !important;
white-space: nowrap !important;
font-size: 13px !important;
text-align: center !important;
border-radius: 4px !important;
}
body.bili-search-page .vui_pagenation--btn-side {
min-width: 44px !important;
padding: 0 10px !important;
}
/* ===== 视频页 ===== */
body.bili-video-page {
background: #ffffff !important;
overflow-x: hidden !important;
min-height: 100vh !important;
margin-top: 0 !important;
padding-top: 0 !important;
}
body.bili-video-page {
--video-equal-spacing: 36px;
}
body.bili-video-page,
body.bili-video-page #app,
body.bili-video-page #app > div,
body.bili-video-page #mirror-vdcon.video-container-v1,
body.bili-video-page .left-container,
body.bili-video-page .left-container.scroll-sticky {
width: 100vw !important;
max-width: 100vw !important;
min-width: 100vw !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
left: 0 !important;
right: 0 !important;
position: relative !important;
}
body.bili-video-page .left-container,
body.bili-video-page .left-container.scroll-sticky {
padding: 0 8px !important;
}
body.bili-video-page #app,
body.bili-video-page #app > div,
body.bili-video-page #mirror-vdcon.video-container-v1,
body.bili-video-page #mirror-vdcon > *,
body.bili-video-page .left-container,
body.bili-video-page .left-container.scroll-sticky,
body.bili-video-page .left-container > *,
body.bili-video-page #viewbox_report,
body.bili-video-page #viewbox_report > *,
body.bili-video-page #viewbox_report .video-info-title,
body.bili-video-page #viewbox_report .video-info-title-inner,
body.bili-video-page #viewbox_report h1.video-title,
body.bili-video-page #viewbox_report .video-info-meta,
body.bili-video-page #viewbox_report .video-info-detail-list,
body.bili-video-page #viewbox_report .pubdate-ip,
body.bili-video-page #viewbox_report .pubdate-ip-text {
margin-top: 0 !important;
padding-top: 0 !important;
border-top: 0 !important;
top: 0 !important;
bottom: auto !important;
}
body.bili-video-page #viewbox_report {
margin-top: var(--video-equal-spacing) !important;
margin-bottom: var(--video-equal-spacing) !important;
padding-top: 0 !important;
}
body.bili-video-page #playerWrap {
width: 100% !important;
max-width: 100% !important;
height: calc((100vw - 22px) * 9 / 16 + 6px) !important;
max-height: calc((100vw - 22px) * 9 / 16 + 6px) !important;
min-width: 0 !important;
min-height: 0 !important;
overflow: hidden !important;
box-sizing: border-box !important;
border: 3px solid #00aeec !important;
border-radius: 12px !important;
box-shadow: 0 4px 16px rgba(0, 174, 236, 0.25) !important;
margin-top: 0 !important;
margin-bottom: var(--video-equal-spacing) !important;
position: relative !important;
}
body.bili-video-page #playerWrap #bilibili-player-placeholder,
body.bili-video-page #playerWrap #bilibili-player,
body.bili-video-page #playerWrap .bpx-docker,
body.bili-video-page #playerWrap .bpx-player-container,
body.bili-video-page #playerWrap .bpx-player-primary-area,
body.bili-video-page #playerWrap .bpx-player-video-area,
body.bili-video-page #playerWrap .bpx-player-video-wrap {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 100% !important;
max-height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
transform: none !important;
zoom: normal !important;
border-radius: 0 !important;
}
body.bili-video-page #playerWrap video {
width: 100% !important;
height: 100% !important;
object-fit: contain !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
background-color: #000 !important;
}
body.bili-video-page #v_desc {
margin-top: 0 !important;
margin-bottom: var(--video-equal-spacing) !important;
}
body.bili-video-page #commentapp {
margin-top: 0 !important;
padding-top: 0 !important;
}
body.bili-video-page #biliMainHeader,
body.bili-video-page .bili-header,
body.bili-video-page .international-header,
body.bili-video-page .mini-header,
body.bili-video-page .nav-menu,
body.bili-video-page .fixed-sidenav-storage,
body.bili-video-page .video-note-sidebar-panel,
body.bili-video-page .video-note-sidebar-chapter-layer,
body.bili-video-page .video-note-sidebar-chapter-portal,
body.bili-video-page .go-top,
body.bili-video-page .bili-footer,
body.bili-video-page .footer,
body.bili-video-page [class*="back-top"],
body.bili-video-page [class*="to-top"] {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-video-page #arc_toolbar_report,
body.bili-video-page .video-toolbar-container {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
/* v131.19 视频页 UP 主信息区:移除「关注」前面的「充电」按钮
实测结构:.up-info__btn-panel > .upinfo-btn-panel
> div.default-btn.old-charge-btn.not-follow-charge-btn ← 充电
> div.default-btn.follow-btn.b-gz.not-follow ← 关注
这里用 [class*="charge"] 覆盖全部版本(old / new / 已关注变体),
只写 display:none:flex 布局下被移除项不会占用 gap,
关注按钮会自动左移,不留空隙。 */
body.bili-video-page .up-info__btn-panel .new-charge-btn,
body.bili-video-page .default-btn.new-charge-btn,
body.bili-video-page .default-btn.old-charge-btn,
body.bili-video-page .default-btn.not-follow-charge-btn,
body.bili-video-page .default-btn.follow-charge-btn,
body.bili-video-page .up-info__btn-panel [class*="charge"],
body.bili-video-page .upinfo-btn-panel [class*="charge"] {
display: none !important;
visibility: hidden !important;
}
body.bili-video-page [class*="ad-"],
body.bili-video-page [class*="ads-"],
body.bili-video-page [class*="advertisement"],
body.bili-video-page .video-card-ad-small,
body.bili-video-page .video-card-ad,
body.bili-video-page .slide-ad-exp,
body.bili-video-page .slide-gg,
body.bili-video-page .banner-ad,
body.bili-video-page .ad-floor-exp,
body.bili-video-page .ad-report,
body.bili-video-page .popup-ad,
body.bili-video-page .float-ad {
display: none !important;
visibility: hidden !important;
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-video-page .video-resource-list,
body.bili-video-page .activity-m-v1,
body.bili-video-page [class*="video-resource-list"] {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-video-page .right-container .video-page-game-card-small,
body.bili-video-page .right-container [class*="game-card-small"] {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
padding: 0 !important;
margin: 0 !important;
}
body.bili-video-page .right-container #danmukuBox,
body.bili-video-page .right-container .video-pod-above-modules,
body.bili-video-page .right-container .danmaku-box,
body.bili-video-page .right-container .bpx-player-auxiliary {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-video-page .bpx-player-sending-area,
body.bili-video-page .bpx-player-sending-bar,
body.bili-video-page .bpx-player-dm-root,
body.bili-video-page .bpx-player-video-inputbar {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-video-page .bpx-player-ctrl-pip,
body.bili-video-page .bpx-player-ctrl-wide,
body.bili-video-page .bpx-player-ctrl-time,
body.bili-video-page .bpx-player-ctrl-eplist { display: none !important; }
@media screen and (orientation: landscape) {
body.bili-video-page .bpx-player-ctrl-time { display: block !important; }
}
@media screen and (width >= 750px) {
body.bili-video-page .bpx-player-container[data-screen=full] .bpx-player-ctrl-quality-result {
height: unset !important;
font-size: 16px !important;
}
body.bili-video-page .bpx-player-container[data-screen=full] .bpx-player-control-wrap { height: 43px !important; }
body.bili-video-page .bpx-player-container[data-screen=full] .bpx-player-control-top { bottom: 43px !important; }
}
body.bili-video-page div.bpx-player-control-bottom {
height: 29px !important;
margin-top: 7px !important;
padding: 0 7px !important;
}
body.bili-video-page div.bpx-player-control-top {
transition: none;
bottom: 36px;
}
body.bili-video-page .bpx-player-pbp .bpx-player-pbp-pin-tip { display: none !important; }
body.bili-video-page .bpx-player-control-bottom-left,
body.bili-video-page .bpx-player-control-bottom-right { flex: unset !important; }
body.bili-video-page .bpx-player-container .bpx-player-control-bottom-left,
body.bili-video-page .bpx-player-container .bpx-player-control-bottom-right { min-width: 0 !important; }
body.bili-video-page .bpx-player-ctrl-quality {
min-width: 0;
flex: auto !important;
margin-right: 0 !important;
}
body.bili-video-page .bpx-player-ctrl-quality-result,
body.bili-video-page .bpx-player-ctrl-playbackrate { font-size: 12px !important; }
body.bili-video-page .bpx-player-ctrl-quality-result { height: 22px; overflow: hidden; }
body.bili-video-page .bpx-player-ctrl-playbackrate { text-wrap: nowrap; }
body.bili-video-page .bpx-player-progress-wrap {
height: 7px !important;
padding-bottom: 3px !important;
}
body.bili-video-page .bpx-player-control-mask {
background: linear-gradient(rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%) !important;
}
body.bili-video-page .bpx-player-ctrl-quality-menu-wrap { bottom: 22px !important; }
body.bili-video-page .bpx-player-ctrl-quality-menu-item {
max-width: 95px;
max-height: 36px;
height: 7.7vw !important;
padding: 0 8px 0 12px !important;
}
body.bili-video-page .bpx-player-ctrl-quality-badge-bigvip {
color: #fff;
background-color: #f25d8e;
width: 16px;
overflow: hidden;
right: 8px !important;
}
body.bili-video-page .bpx-player-ctrl-quality-badge-bigvip:before {
color: #fff;
content: "V";
background-color: #f25d8e;
padding: 0 4px;
position: absolute;
left: 0;
}
body.bili-video-page .bpx-player-ctrl-playbackrate-menu { bottom: 22px !important; }
body.bili-video-page .bpx-player-ctrl-playbackrate-menu-item {
justify-content: center;
align-items: center;
max-height: 36px;
display: flex;
height: 7.7vw !important;
}
body.bili-video-page div.bpx-player-ctrl-subtitle-box {
bottom: 0;
right: 0;
transform: scale(.8);
}
body.bili-video-page .bpx-player-ctrl-setting-box {
bottom: 0 !important;
right: 0 !important;
}
body.bili-video-page .bpx-player-ctrl-setting-menu-right { padding: 5px !important; }
body.bili-video-page .bpx-player-ctrl-setting-menu-right > div {
justify-content: center;
align-items: center;
max-height: 40px;
display: flex;
height: 10vw !important;
}
body.bili-video-page .bpx-player-ctrl-setting-menu-right .bui-radio {
width: 77%;
margin: 0 0 8px 7px;
}
body.bili-video-page .bpx-player-ctrl-setting-others-content {
margin-left: 7px;
width: 77% !important;
}
body.bili-video-page .bpx-player-ctrl-setting-highenergy .bui-checkbox-name {
white-space: nowrap;
width: 48px;
overflow: hidden;
}
body.bili-video-page .bpx-player-dm-setting-wrap {
top: 0;
left: 50%;
transform: translate(-50%);
bottom: unset !important;
position: fixed !important;
}
body.bili-video-page .bpx-player-control-bottom-center .bpx-player-sending-bar {
height: 24px !important;
padding-right: 6px !important;
}
body.bili-video-page .bpx-player-ctrl-viewpoint {
flex-shrink: 1 !important;
width: 45px !important;
min-width: 0 !important;
margin: 0 !important;
}
body.bili-video-page .bpx-player-ctrl-viewpoint-text {
flex: none;
font-size: 12px;
width: 24px !important;
text-overflow: unset !important;
}
body.bili-video-page .bpx-player-control-wrap:not(.new) { display: none; }
body.bili-video-page .bpx-player-control-entity,
body.bili-video-page .bpx-player-control-mask { display: block !important; }
body.bili-video-page .bpx-player-container[data-ctrl-hidden=true] .bpx-player-control-bottom { display: none; }
body.bili-video-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-wrap .bpx-player-control-mask {
opacity: 0;
transition: opacity .2s ease-in;
}
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-wrap .bpx-player-control-mask { opacity: 1; }
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-control-bottom {
opacity: 1;
display: flex;
}
body.bili-video-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-control-bottom { display: none; }
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-control-top,
body.bili-video-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-shadow-progress-area {
opacity: 1;
visibility: visible;
}
body.bili-video-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-control-top,
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-shadow-progress-area {
opacity: 0;
visibility: hidden;
}
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-pbp {
opacity: 1;
width: 100%;
bottom: calc(100% + 6px);
left: 0;
}
body.bili-video-page div.bpx-player-control-entity .bpx-player-pbp {
opacity: 0;
width: calc(100% + 24px);
bottom: 1px;
left: -12px;
}
body.bili-video-page div.bpx-player-control-entity .bpx-player-pbp.pin { opacity: 1; }
body.bili-video-page .bpx-player-pbp-pin { display: none; opacity: 1 !important; }
body.bili-video-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-pbp-pin { display: block; }
body.bili-video-page .bpx-player-video-perch { max-height: 0; }
body.bili-video-page .bpx-player-top-wrap,
body.bili-video-page .bpx-player-state-wrap { display: none !important; }
body.bili-video-page .bpx-player-container,
body.bili-video-page #bilibili-player-placeholder { box-shadow: none !important; }
body.video-fullscreen { overflow: hidden !important; }
body.video-fullscreen #mirror-vdcon,
body.video-fullscreen .left-container {
width: 100vw !important;
max-width: 100vw !important;
min-width: 100vw !important;
height: 100vh !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.video-fullscreen #playerWrap {
width: 100vw !important;
max-width: 100vw !important;
height: 100vh !important;
max-height: 100vh !important;
min-height: 100vh !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
overflow: hidden !important;
margin: 0 !important;
}
body.video-fullscreen #playerWrap #bilibili-player-placeholder,
body.video-fullscreen #playerWrap #bilibili-player,
body.video-fullscreen #playerWrap .bpx-docker,
body.video-fullscreen #playerWrap .bpx-player-container,
body.video-fullscreen #playerWrap .bpx-player-primary-area,
body.video-fullscreen #playerWrap .bpx-player-video-area,
body.video-fullscreen #playerWrap .bpx-player-video-wrap {
width: 100% !important;
height: 100% !important;
max-width: 100% !important;
max-height: 100% !important;
min-width: 0 !important;
min-height: 0 !important;
}
body.video-fullscreen .bpx-player-video-wrap video { object-fit: contain !important; }
/* ★ 侧边栏通用(视频页 / 番剧页):仅保留通用的 fixed + GPU 合成,不加 padding ★ */
body.bili-video-page .right-container,
body.bili-bangumi-page .plp-r-wrap {
position: fixed !important;
top: 0 !important;
right: 0 !important;
bottom: 0 !important;
left: auto !important;
width: 85vw !important;
max-width: 420px !important;
height: 100vh !important;
max-height: 100vh !important;
overflow-y: auto !important;
overflow-x: hidden !important;
background: #ffffff !important;
z-index: 99999 !important;
transform: translate3d(100%, 0, 0) !important;
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
will-change: transform;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
box-shadow: -4px 0 16px rgba(0, 0, 0, 0.15) !important;
box-sizing: border-box !important;
-webkit-overflow-scrolling: touch !important;
display: block !important;
}
body.bili-video-page .right-container.show,
body.bili-bangumi-page .plp-r-wrap.show {
transform: translate3d(0, 0, 0) !important;
}
/* ★ 番剧侧边栏:pad + 内部 plp-r 归位 ★ */
body.bili-bangumi-page .plp-r-wrap {
padding: 12px !important;
}
body.bili-bangumi-page .plp-r.sticky {
position: static !important;
top: auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
display: block !important;
}
body.bili-bangumi-page .plp-r-wrap .PaginatedEpList_root__67C7p,
body.bili-bangumi-page .plp-r-wrap .recommend_wrap__PccwM {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-bangumi-page .plp-r-wrap img {
max-width: 100% !important;
height: auto !important;
}
body.bili-bangumi-page .EpisodeVirtualList_scroll__62SmN {
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
}
body.bili-bangumi-page .EpisodeVirtualList_virtualCanvas__0AC8_ {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
}
body.bili-bangumi-page .EpisodeVirtualList_gridRow__czcgd {
display: flex !important;
flex-wrap: nowrap !important;
justify-content: center !important;
align-items: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
padding: 0 6px !important;
}
body.bili-bangumi-page .EpisodeVirtualList_numberItem__GLWgO {
width: 46px !important;
height: 46px !important;
min-width: 46px !important;
min-height: 46px !important;
flex-shrink: 0 !important;
border-radius: 8px !important;
font-size: 14px !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: center !important;
box-sizing: border-box !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-bangumi-page .EpisodeVirtualList_numberItem__GLWgO * {
font-size: 10px !important;
transform: scale(0.9) !important;
}
body.bili-bangumi-page #danmukuBox {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-video-page .right-container .right-container-inner {
position: static !important;
top: auto !important;
height: auto !important;
padding: 12px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-video-page .right-container .up-info--right,
body.bili-video-page .right-container .up-info__btn-panel,
body.bili-video-page .right-container .upinfo-btn-panel,
body.bili-video-page .right-container .follow-btn,
body.bili-video-page .right-container .interactions {
overflow: visible !important;
position: relative !important;
}
body.bili-video-page .right-container .follow-btn .menu-popover,
body.bili-video-page .right-container .follow-btn-wrapper {
position: absolute !important;
top: 100% !important;
right: 0 !important;
left: auto !important;
z-index: 9999999 !important;
transform: none !important;
margin-top: 4px !important;
background: #fff !important;
border-radius: 4px !important;
box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;
}
body.bili-video-page .van-popover,
body.bili-video-page .bili-popover,
body.bili-video-page [class*="popover"] { z-index: 9999999 !important; }
body.bili-video-page .right-container > *,
body.bili-video-page .right-container .up-panel-container,
body.bili-video-page .right-container .up-info-container,
body.bili-video-page .right-container .video-pod-above-modules,
body.bili-video-page .right-container .video-pod-above-modules__inner,
body.bili-video-page .right-container .rcmd-tab,
body.bili-video-page .right-container .recommend-list-v1,
body.bili-video-page .right-container .rec-list,
body.bili-video-page .right-container .video-page-card-small,
body.bili-video-page .right-container .bpx-player-wraplist,
body.bili-video-page .right-container .slide-ad-exp,
body.bili-video-page .right-container .slide-gg,
body.bili-video-page .right-container .ad-report,
body.bili-video-page .right-container .ad-floor-cover {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
position: static !important;
left: auto !important;
right: auto !important;
}
body.bili-video-page .right-container .ad-report.ad-floor-exp.right-bottom-banner,
body.bili-video-page .right-container .ad-floor-cover,
body.bili-video-page .right-container .video-card-ad-small {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-video-page .right-container img,
body.bili-video-page .right-container video,
body.bili-video-page .right-container picture {
max-width: 100% !important;
height: auto !important;
}
body.bili-video-page .right-container .send-msg,
body.bili-video-page .right-container a.send-msg,
body.bili-video-page .right-container .up-detail-top > a.send-msg {
display: none !important;
visibility: hidden !important;
}
body.bili-video-page .right-container .up-info--right {
flex: 1 1 auto !important;
min-width: 0 !important;
width: auto !important;
max-width: 100% !important;
display: flex !important;
flex-direction: column !important;
}
body.bili-video-page .right-container .up-info__detail,
body.bili-video-page .right-container .up-detail,
body.bili-video-page .right-container .upinfo-sign,
body.bili-video-page .right-container .upinfo-sign__text {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
word-break: break-all !important;
white-space: normal !important;
overflow-wrap: break-word !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
body.bili-video-page .right-container .up-detail-top {
display: flex !important;
align-items: center !important;
justify-content: flex-start !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
gap: 8px !important;
}
body.bili-video-page .right-container .up-name {
white-space: nowrap !important;
word-break: keep-all !important;
text-overflow: ellipsis !important;
overflow: hidden !important;
flex-shrink: 1 !important;
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
display: block !important;
}
body.bili-video-page #viewbox_report,
body.bili-video-page .video-info-title,
body.bili-video-page .video-info-title-inner,
body.bili-video-page .video-title,
body.bili-video-page #v_desc,
body.bili-video-page .basic-desc-info,
body.bili-video-page .desc-info-text {
text-align: center !important;
justify-content: center !important;
align-items: center !important;
float: none !important;
}
body.bili-video-page h1.video-title {
width: 100% !important;
display: block !important;
text-align: center !important;
}
body.bili-video-page #viewbox_report .show-more,
body.bili-video-page #viewbox_report .show-more-btn {
display: none !important;
visibility: hidden !important;
height: 0 !important;
width: 0 !important;
overflow: hidden !important;
}
body.bili-video-page #viewbox_report .video-info-detail-list > .item:not(.pubdate-ip) {
display: none !important;
visibility: hidden !important;
}
body.bili-video-page #viewbox_report .video-info-title,
body.bili-video-page #viewbox_report .video-info-title-inner,
body.bili-video-page h1.video-title {
height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
text-overflow: clip !important;
white-space: normal !important;
word-break: break-all !important;
padding: 0 !important;
}
body.bili-video-page #v_desc,
body.bili-video-page #viewbox_report,
body.bili-video-page .video-info-container,
body.bili-video-page .left-container,
body.bili-video-page #mirror-vdcon.video-container-v1,
body.bili-video-page #app {
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
}
body.bili-video-page #v_desc .basic-desc-info {
height: auto !important;
max-height: none !important;
overflow: visible !important;
}
body.bili-video-page #v_desc .desc-info-text {
display: block !important;
height: auto !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
overflow: visible !important;
text-overflow: clip !important;
max-height: none !important;
white-space: pre-wrap !important;
}
body.bili-video-page #v_desc .toggle-btn,
body.bili-video-page #v_desc .toggle-btn-text {
display: none !important;
visibility: hidden !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
}
body.bili-video-page #viewbox_report .video-info-meta,
body.bili-video-page #viewbox_report .video-info-detail-list {
display: flex !important;
justify-content: center !important;
align-items: center !important;
width: 100% !important;
text-align: center !important;
margin: 0 auto !important;
padding: 0 !important;
float: none !important;
}
body.bili-video-page #viewbox_report .video-info-detail-list .item {
float: none !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
body.bili-video-page .video-tag-container,
body.bili-video-page .tag-panel,
body.bili-video-page #mirror-vdcon > .left-container > .video-tag-container {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-video-page #commentapp .bili-comment-box,
body.bili-video-page #commentapp .bili-comment-input-wrap,
body.bili-video-page #commentapp .comment-send-box,
body.bili-video-page #commentapp .comment-box,
body.bili-video-page #commentapp .reply-box,
body.bili-video-page #commentapp .bili-comment-container > .bili-comment-box,
body.bili-video-page #commentapp .comment-container .comment-box,
body.bili-video-page #commentapp .bili-comment-editor,
body.bili-video-page #commentapp .bili-comment-editor-wrap {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-video-page #commentapp,
body.bili-video-page #commentapp bili-comments,
body.bili-video-page #commentapp .bili-comment-container,
body.bili-video-page #commentapp .comment-container,
body.bili-video-page #commentapp .comment-box,
body.bili-video-page #commentapp .reply-box,
body.bili-video-page #commentapp .bili-comment-box,
body.bili-video-page #commentapp .bili-comment-input-wrap,
body.bili-video-page #commentapp .comment-send-box {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
padding-left: 8px !important;
padding-right: 8px !important;
overflow: hidden !important;
}
body.bili-video-page #commentapp textarea,
body.bili-video-page #commentapp input[type="text"],
body.bili-video-page #commentapp .comment-textarea,
body.bili-video-page #commentapp .bili-comment-textarea,
body.bili-video-page #commentapp .reply-textarea,
body.bili-video-page #commentapp [contenteditable="true"] {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
resize: none !important;
word-break: break-all !important;
white-space: pre-wrap !important;
overflow-wrap: break-word !important;
height: auto !important;
min-height: 40px !important;
padding: 8px !important;
margin: 0 !important;
overflow: hidden !important;
}
#my-bili-right-mask {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
background: rgba(0, 0, 0, 0.35) !important;
z-index: 99998 !important;
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
transition: opacity 0.3s ease, visibility 0.3s ease !important;
will-change: opacity;
display: block !important;
}
#my-bili-right-mask.show {
opacity: 1 !important;
visibility: visible !important;
pointer-events: auto !important;
}
/* ============================================================
========== 播放列表页(/list/):完整复用视频页优化 ==========
============================================================ */
body.bili-list-page {
background: #ffffff !important;
overflow-x: hidden !important;
margin-top: 0 !important;
padding-top: 0 !important;
}
/* 取消左右分栏:左栏独占整宽 */
body.bili-list-page #app.playlist-app,
body.bili-list-page #mirror-vdcon.playlist-container {
display: block !important;
width: 100vw !important;
max-width: 100vw !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
}
body.bili-list-page #mirror-vdcon .playlist-container--left {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 8px !important;
margin: 0 !important;
float: none !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
}
body.bili-list-page .playlist-container--left > * {
max-width: 100% !important;
}
/* 标题 / 播放信息:与视频页完全一致的居中与等距 */
body.bili-list-page .video-info-container {
margin-top: var(--video-equal-spacing) !important;
margin-bottom: var(--video-equal-spacing) !important;
padding: 0 !important;
text-align: center !important;
width: 100% !important;
max-width: 100% !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
box-sizing: border-box !important;
}
body.bili-list-page .video-info-container .video-info-meta,
body.bili-list-page .video-info-container .video-info-detail-list {
display: flex !important;
justify-content: center !important;
align-items: center !important;
width: 100% !important;
text-align: center !important;
margin: 0 auto !important;
padding: 0 !important;
float: none !important;
}
body.bili-list-page .video-info-container .video-info-detail-list .item {
float: none !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
body.bili-list-page .video-info-container .video-info-detail-list > .item:not(.pubdate-ip) {
display: none !important;
visibility: hidden !important;
}
/* 标题:解除 B站原生行数/高度限制(video-info-title 系列 + special-text-indent),
与视频页 #viewbox_report 下的标题处理保持一致,完整多行显示 */
body.bili-list-page .video-info-container .video-info-title,
body.bili-list-page .video-info-container .video-info-title-inner,
body.bili-list-page .video-info-container .video-title,
body.bili-list-page .video-info-container h1.video-title,
body.bili-list-page .video-info-container h1.video-title > a,
body.bili-list-page .video-info-container .video-title-href,
body.bili-list-page .video-info-container .video-info-title * {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
line-clamp: unset !important;
-webkit-box-orient: horizontal !important;
text-overflow: clip !important;
white-space: normal !important;
word-break: break-word !important;
overflow-wrap: break-word !important;
text-indent: 0 !important;
line-height: normal !important;
letter-spacing: normal !important;
padding: 0 !important;
margin: 0 !important;
float: none !important;
text-align: center !important;
box-sizing: border-box !important;
}
body.bili-list-page .video-info-container .video-info-title::after,
body.bili-list-page .video-info-container .video-info-title-inner::after,
body.bili-list-page .video-info-container .video-title::after,
body.bili-list-page .video-info-container .video-title::before,
body.bili-list-page .video-info-container .video-info-title .show-more,
body.bili-list-page .video-info-container .video-info-title .show-more-btn,
body.bili-list-page .video-info-container .video-info-title .expand-btn {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
content: none !important;
}
/* 简介:始终完全展开(等价视频页 #v_desc) */
body.bili-list-page .video-desc-container {
margin: 0 0 var(--video-equal-spacing) !important;
width: 100% !important;
max-width: 100% !important;
text-align: center !important;
box-sizing: border-box !important;
}
body.bili-list-page .video-desc-container .basic-desc-info {
height: auto !important;
max-height: none !important;
overflow: visible !important;
}
body.bili-list-page .video-desc-container .desc-info-text {
display: block !important;
height: auto !important;
max-height: none !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
overflow: visible !important;
text-overflow: clip !important;
white-space: pre-wrap !important;
word-break: break-all !important;
}
body.bili-list-page .video-desc-container .toggle-btn,
body.bili-list-page .video-desc-container .toggle-btn-text {
display: none !important;
visibility: hidden !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
}
/* 右栏(UP主 + 播放列表 + 推荐):与视频页 right-container 相同的浮动抽屉 */
body.bili-video-page #mirror-vdcon .playlist-container--right {
position: fixed !important;
top: 0 !important;
right: 0 !important;
bottom: 0 !important;
left: auto !important;
width: 85vw !important;
max-width: 420px !important;
height: 100vh !important;
max-height: 100vh !important;
overflow-y: auto !important;
overflow-x: hidden !important;
background: #ffffff !important;
z-index: 99999 !important;
transform: translate3d(100%, 0, 0) !important;
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
will-change: transform;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
box-shadow: -4px 0 16px rgba(0, 0, 0, 0.15) !important;
box-sizing: border-box !important;
-webkit-overflow-scrolling: touch !important;
display: block !important;
padding: 12px !important;
margin: 0 !important;
float: none !important;
}
body.bili-video-page #mirror-vdcon .playlist-container--right.show {
transform: translate3d(0, 0, 0) !important;
}
/* 抽屉内容:全部撑满宽度 */
body.bili-video-page .playlist-container--right > *,
body.bili-video-page .playlist-container--right .up-panel-container,
body.bili-video-page .playlist-container--right .up-info-container,
body.bili-video-page .playlist-container--right .action-list-container,
body.bili-video-page .playlist-container--right .action-list-header,
body.bili-video-page .playlist-container--right .action-list-body,
body.bili-video-page .playlist-container--right .action-list-body-top,
body.bili-video-page .playlist-container--right .action-list-body-bottom,
body.bili-video-page .playlist-container--right .action-list,
body.bili-video-page .playlist-container--right .action-list-inner,
body.bili-video-page .playlist-container--right .action-list-content,
body.bili-video-page .playlist-container--right .action-list-item-wrap,
body.bili-video-page .playlist-container--right .action-list-item,
body.bili-video-page .playlist-container--right .singlep-list-item-inner,
body.bili-video-page .playlist-container--right .multip-list-item-inner,
body.bili-video-page .playlist-container--right .multip-list,
body.bili-video-page .playlist-container--right .multip-list-item,
body.bili-video-page .playlist-container--right .recommend-list-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right img,
body.bili-video-page .playlist-container--right video,
body.bili-video-page .playlist-container--right picture {
max-width: 100% !important;
height: auto !important;
}
body.bili-video-page .playlist-container--right .action-list-header {
display: flex !important;
flex-wrap: wrap !important;
align-items: center !important;
gap: 8px !important;
}
body.bili-video-page .playlist-container--right .action-list-item .title,
body.bili-video-page .playlist-container--right .multip-list-item .title,
body.bili-video-page .playlist-container--right .list-display-name {
white-space: normal !important;
word-break: break-all !important;
overflow-wrap: break-word !important;
}
/* ============================================================
默认收藏夹 / 播放列表:内容在容器内"居中" —— 左右间距天然相等
思路:不再逐层算 padding(B站原生各层左右留白本就不等,容易一侧偏多),
改为「容器统一给一圈 gutter + 内部所有块级层 margin-inline: auto 居中」。
居中后,无论某一层残留多少单边留白,都会被均分到两侧,左右必然相等。
唯一可调变量:--fav-gutter(默认 8px),改一处、两侧同步。
滚动条按你的要求忽略(不额外预留 scrollbar-gutter)。
============================================================ */
/* 1) 抽屉本体:左右内边距 12px -> 8px(与推荐卡片、UP 头像同一条起始线) */
body.bili-video-page #mirror-vdcon .playlist-container--right {
--fav-gutter: 8px;
padding-left: 8px !important;
padding-right: 8px !important;
}
/* 2) 收藏夹容器:左右同为 --fav-gutter,这是容器内部唯一的留白来源 */
body.bili-video-page .playlist-container--right .action-list-container {
padding-left: var(--fav-gutter, 8px) !important;
padding-right: var(--fav-gutter, 8px) !important;
margin-left: auto !important;
margin-right: auto !important;
}
/* 3) 容器内所有块级层:清掉自身单边留白,改为左右 auto 居中 */
body.bili-video-page .playlist-container--right .action-list-header,
body.bili-video-page .playlist-container--right .action-list-body,
body.bili-video-page .playlist-container--right .action-list-body-top,
body.bili-video-page .playlist-container--right .action-list-body-bottom,
body.bili-video-page .playlist-container--right .action-list,
body.bili-video-page .playlist-container--right .action-list-inner,
body.bili-video-page .playlist-container--right .action-list-content,
body.bili-video-page .playlist-container--right .action-list-item-wrap,
body.bili-video-page .playlist-container--right .action-list-item,
body.bili-video-page .playlist-container--right .singlep-list-item-inner,
body.bili-video-page .playlist-container--right .multip-list-item-inner {
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
/* 标题行 / 创建者行:内部元素必须按内容取宽(不能 width:100%),
否则会把右侧的 "^" 按钮和"收藏"按钮挤到下一行(实测 header 48px -> 72px)。
这里让它们恢复 auto,并由父行用 space-between 把按钮送回最右侧。 */
body.bili-video-page .playlist-container--right .header-left,
body.bili-video-page .playlist-container--right .list-display-name,
body.bili-video-page .playlist-container--right .fav-btn,
body.bili-video-page .playlist-container--right .list-title,
body.bili-video-page .playlist-container--right .list-playorder-btn,
body.bili-video-page .playlist-container--right .list-playway-btn {
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
}
/* 这两行强制单行:左文案 + 右按钮,不再换行 */
body.bili-video-page .playlist-container--right .action-list-header,
body.bili-video-page .playlist-container--right .action-list-body-top {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
align-items: center !important;
justify-content: space-between !important;
gap: 8px !important;
height: auto !important;
min-height: 0 !important;
}
body.bili-video-page .playlist-container--right .header-left {
flex: 1 1 auto !important;
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
align-items: center !important;
gap: 6px !important;
}
/* 4) 列表滚动区:滚动条改为"零占位"模式
实测:action-list 274 -> action-list-inner 270,被滚动条吃掉 4px,
这 4px 只扣在右侧,正是"右边距比左边距大"的根源。
滚动条本来就不显示,这里直接让它不占宽度,左右两侧才可能真正相等。
(滚动手势与滚轮均不受影响) */
body.bili-video-page .playlist-container--right .action-list-body,
body.bili-video-page .playlist-container--right .action-list-body-bottom,
body.bili-video-page .playlist-container--right .action-list,
body.bili-video-page .playlist-container--right .action-list-inner,
body.bili-video-page .playlist-container--right .action-list-content {
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right .action-list {
scrollbar-width: none !important;
-ms-overflow-style: none !important;
scrollbar-gutter: auto !important;
overflow-y: auto !important;
}
body.bili-video-page .playlist-container--right .action-list::-webkit-scrollbar {
width: 0 !important;
height: 0 !important;
display: none !important;
background: transparent !important;
}
body.bili-video-page .playlist-container--right .action-list::-webkit-scrollbar-track,
body.bili-video-page .playlist-container--right .action-list::-webkit-scrollbar-thumb {
width: 0 !important;
display: none !important;
background: transparent !important;
}
/* 5) 列表项:三层内边距(wrap / item / inner)各 10px 全部归零并居中 */
body.bili-video-page .playlist-container--right .action-list-item-wrap,
body.bili-video-page .playlist-container--right .action-list-item,
body.bili-video-page .playlist-container--right .singlep-list-item-inner,
body.bili-video-page .playlist-container--right .multip-list-item-inner {
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
}
/* 5) 列表项主体:flex 布局,封面固定 106x60,文字区吃掉剩余宽度,间距 10->8 */
body.bili-video-page .playlist-container--right .action-list-item .main,
body.bili-video-page .playlist-container--right .multip-list-item .main,
body.bili-video-page .playlist-container--right .singlep-list-item-inner .main,
body.bili-video-page .playlist-container--right .multip-list-item-inner .main {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right .action-list-item .main > .cover,
body.bili-video-page .playlist-container--right .multip-list-item .main > .cover {
flex: 0 0 106px !important;
width: 106px !important;
min-width: 106px !important;
max-width: 106px !important;
height: 60px !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right .action-list-item .main > .cover .cover-img,
body.bili-video-page .playlist-container--right .action-list-item .main > .cover img,
body.bili-video-page .playlist-container--right .multip-list-item .main > .cover .cover-img,
body.bili-video-page .playlist-container--right .multip-list-item .main > .cover img {
width: 100% !important;
height: 100% !important;
object-fit: cover !important;
border-radius: 4px !important;
}
body.bili-video-page .playlist-container--right .action-list-item .main > .info,
body.bili-video-page .playlist-container--right .multip-list-item .main > .info {
flex: 1 1 auto !important;
width: auto !important;
min-width: 0 !important;
max-width: 100% !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
}
/* 6) 标题:吃满文字区宽度(保留原生两行截断,只解决"过早换行") */
body.bili-video-page .playlist-container--right .action-list-item .info .title,
body.bili-video-page .playlist-container--right .multip-list-item .info .title {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
white-space: normal !important;
word-break: break-all !important;
overflow-wrap: break-word !important;
box-sizing: border-box !important;
}
/* 7) 多P / 分集列表("第X话 …… 40:33"):
「按键本身」居中(整块在容器内居中),「按键内文字」维持 B站官方排布
—— 即标题靠左、时长靠右(space-between),不再强行居中。
结构:.multip-list > .multip-list-item > (.left-part + .duration.right-part)
【重要】这里绝不能写 display: xxx !important:
B 站"展开/收起选集"正是通过切换 .multip-list / .multip-list-item 的
display(none <-> block/flex)实现的。一旦用 !important 钉死 display,
收起时元素就藏不住 —— 表现为"箭头会转、列表却不动"。
所以本组只改「布局内部分配」类属性(justify-content / gap / flex 等),
它们在 display:none 时自动失效,不会干扰展开收起。
另外绝不能用 [class*="multip-list"] > * 这种写法——
"multip-list-item" 也含 "multip-list",会被一起选中,
导致 left-part / right-part 各被撑成 100% 宽并换行,文字顶出按钮。 */
/* 选集整块:按键本体居中(块级居中 + 左右 auto) */
body.bili-video-page .playlist-container--right .multip-list,
.multip-list {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
box-sizing: border-box !important;
}
/* 每一行的按键本体:居中于容器;内部文字回到官方的「左标题 / 右时长」 */
body.bili-video-page .playlist-container--right .multip-list > .multip-list-item,
.multip-list > .multip-list-item {
flex-wrap: nowrap !important;
align-items: center !important;
justify-content: space-between !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: auto !important;
margin-right: auto !important;
overflow: hidden !important;
box-sizing: border-box !important;
}
/* 左段(第X话 标题):靠左;右段(时长):靠右 —— 官方排布 */
body.bili-video-page .playlist-container--right .multip-list-item > .left-part,
body.bili-video-page .playlist-container--right .multip-list-item > .right-part,
.multip-list-item > .left-part,
.multip-list-item > .right-part {
flex: 0 1 auto !important;
width: auto !important;
min-width: 0 !important;
max-width: 100% !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right .multip-list-item > .left-part,
.multip-list-item > .left-part {
text-align: left !important;
margin-right: auto !important;
}
/* 时长段不参与收缩,保证 "40:33" 完整显示,并贴右 */
body.bili-video-page .playlist-container--right .multip-list-item > .right-part,
.multip-list-item > .right-part {
flex: 0 0 auto !important;
text-align: right !important;
margin-left: auto !important;
}
body.bili-video-page .playlist-container--right .multip-list-item .title,
.multip-list-item .title {
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
text-align: left !important;
box-sizing: border-box !important;
}
/* 与视频页一致:隐藏弹幕框、私信、充电、广告 */
body.bili-video-page .playlist-container--right #danmukuBox,
body.bili-video-page .playlist-container--right .danmaku-box,
body.bili-video-page .playlist-container--right .send-msg,
body.bili-video-page .playlist-container--right a.send-msg,
body.bili-video-page .playlist-container--right .new-charge-btn,
body.bili-video-page .playlist-container--right [class*="ad-"],
body.bili-video-page .playlist-container--right [class*="ads-"],
body.bili-video-page .playlist-container--right .video-card-ad-small {
display: none !important;
visibility: hidden !important;
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* UP 主信息:与视频页 right-container 保持一致 */
body.bili-video-page .playlist-container--right .up-info-container {
display: flex !important;
align-items: center !important;
width: 100% !important;
gap: 8px !important;
}
body.bili-video-page .playlist-container--right .up-info--right {
flex: 1 1 auto !important;
min-width: 0 !important;
width: auto !important;
max-width: 100% !important;
display: flex !important;
flex-direction: column !important;
}
body.bili-video-page .playlist-container--right .up-info__detail,
body.bili-video-page .playlist-container--right .up-detail,
body.bili-video-page .playlist-container--right .up-description {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
word-break: break-all !important;
white-space: normal !important;
overflow-wrap: break-word !important;
box-sizing: border-box !important;
}
body.bili-video-page .playlist-container--right .up-detail-top {
display: flex !important;
align-items: center !important;
justify-content: flex-start !important;
width: 100% !important;
gap: 8px !important;
}
body.bili-video-page .playlist-container--right .up-name {
white-space: nowrap !important;
text-overflow: ellipsis !important;
overflow: hidden !important;
flex-shrink: 1 !important;
min-width: 0 !important;
max-width: 100% !important;
}
body.bili-video-page .playlist-container--right .follow-btn .menu-popover,
body.bili-video-page .playlist-container--right .follow-btn-wrapper {
position: absolute !important;
top: 100% !important;
right: 0 !important;
left: auto !important;
z-index: 9999999 !important;
transform: none !important;
margin-top: 4px !important;
background: #fff !important;
border-radius: 4px !important;
box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;
}
/* 全屏时左栏铺满(与视频页 left-container 一致) */
body.video-fullscreen .playlist-container--left {
width: 100vw !important;
max-width: 100vw !important;
min-width: 100vw !important;
height: 100vh !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* ============================================================
========== 番剧播放页 ==========
============================================================ */
html:has(body.bili-bangumi-page),
body.bili-bangumi-page {
background: #ffffff !important;
width: 100% !important;
max-width: 100vw !important;
min-width: 0 !important;
overflow-x: hidden !important;
padding-top: 0 !important;
margin: 0 !important;
position: relative !important;
}
body.bili-bangumi-page #__next,
body.bili-bangumi-page .home-container {
width: 100% !important;
max-width: 100vw !important;
min-width: 0 !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
margin: 0 !important;
padding: 0 !important;
display: block !important;
position: relative !important;
}
body.bili-bangumi-page .main-container,
body.bili-bangumi-page .plp-layout,
body.bili-bangumi-page .plp-left-wrap,
body.bili-bangumi-page .plp-l,
body.bili-bangumi-page .player-left-components {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
overflow-x: hidden !important;
box-sizing: border-box !important;
margin: 0 !important;
padding: 0 !important;
display: contents !important;
position: static !important;
left: auto !important;
right: auto !important;
float: none !important;
}
/* ★★★ 番剧页播放器顶部间距:36px;宽屏下收窄并居中 ★★★ */
body.bili-bangumi-page .plp-player {
width: 100% !important;
max-width: 100% !important;
padding: 0 8px !important;
margin: 36px auto !important;
box-sizing: border-box !important;
height: auto !important;
min-height: 0 !important;
}
/* 番剧页正文容器(播放器 + 信息区)宽屏下居中显示 */
body.bili-bangumi-page .plp-layout,
body.bili-bangumi-page .plp-left-wrap,
body.bili-bangumi-page .plp-l {
max-width: 820px !important;
margin-left: auto !important;
margin-right: auto !important;
}
body.bili-bangumi-page .plp-left-wrap {
padding: 0 8px !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaInfoWrap"] {
margin-top: 0 !important;
}
body.bili-bangumi-page #bilibili-player-wrap {
position: relative !important;
width: 100% !important;
max-width: 100% !important;
height: calc((100vw - 22px) * 9 / 16 + 6px) !important;
max-height: calc((100vw - 22px) * 9 / 16 + 6px) !important;
padding: 0 !important;
border: 3px solid #00aeec !important;
border-radius: 12px !important;
box-shadow: 0 4px 16px rgba(0, 174, 236, 0.25) !important;
overflow: hidden !important;
box-sizing: border-box !important;
margin: 0 auto !important;
}
body.bili-bangumi-page #bilibili-player-wrap .video_playerInner__ox52b,
body.bili-bangumi-page #bilibili-player-wrap #bilibili-player,
body.bili-bangumi-page #bilibili-player-wrap .big-nano-player,
body.bili-bangumi-page #bilibili-player-wrap .bpx-docker,
body.bili-bangumi-page #bilibili-player-wrap .bpx-player-container,
body.bili-bangumi-page #bilibili-player-wrap .bpx-player-primary-area,
body.bili-bangumi-page #bilibili-player-wrap .bpx-player-video-area,
body.bili-bangumi-page #bilibili-player-wrap .bpx-player-video-wrap {
position: absolute !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
max-width: 100% !important;
max-height: 100% !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
transform: none !important;
border-radius: 0 !important;
}
body.bili-bangumi-page #bilibili-player-wrap video {
position: absolute !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
object-fit: contain !important;
background-color: #000 !important;
}
body.bili-bangumi-page .bpx-player-sending-area {
display: none !important;
}
/* ★ 修复简介完全展开后叠加到评论区的问题 ★
根因:plp-l.sticky 原始为 position: sticky,
简介展开后高度溢出,sticky 定位导致内容叠在评论区上方。
同时 plp-left-wrap / plp-l 需高度自适应,
player-left-components 为 display: contents 已不占位。 */
body.bili-bangumi-page .plp-left-wrap {
padding: 0 8px !important;
display: block !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
position: static !important;
}
body.bili-bangumi-page .plp-l,
body.bili-bangumi-page .plp-l.sticky {
padding: 0 !important;
display: block !important;
position: static !important;
top: auto !important;
bottom: auto !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
}
body.bili-bangumi-page .player-left-components {
padding: 0 !important;
display: contents !important;
}
body.bili-bangumi-page .toolbar,
body.bili-bangumi-page #like_info,
body.bili-bangumi-page #ogv_weslie_tool_coin_info,
body.bili-bangumi-page #ogv_weslie_tool_favorite_info,
body.bili-bangumi-page #share-container-id,
body.bili-bangumi-page #watch_together_tab,
body.bili-bangumi-page #tool-bar-more,
body.bili-bangumi-page .toolbar-right {
display: none !important;
visibility: hidden !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-bangumi-page .mediainfo_mediaToolbar__8Q7bn {
display: none !important;
visibility: hidden !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-bangumi-page .mediainfo_bottomBar__uBfeO {
display: none !important;
visibility: hidden !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-bangumi-page [class*="navTools_floatNavExp"],
body.bili-bangumi-page [class*="navTools_navMenu"] {
display: none !important;
visibility: hidden !important;
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaInfoWrap"] {
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
justify-content: flex-start !important;
flex-wrap: nowrap !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 10px 12px !important;
margin: 0 !important;
box-sizing: border-box !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
}
/* 确保 mediaInfoWrap 的 flex 子元素正常排列,不被压缩 */
body.bili-bangumi-page [class*="mediainfo_mediaInfoWrap"] > * {
flex: 0 0 auto !important;
min-height: auto !important;
max-height: none !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaInfoWrap"] [class*="mediainfo_display_area"] {
flex: 1 1 auto !important;
}
/* ★★★ 番剧页:隐藏封面图区域(图中红框部分) ★★★
仅作用于 mediainfo_mediaCover 内部,避免误伤侧边栏推荐/选集封面 */
body.bili-bangumi-page [class*="mediainfo_mediaCover"],
body.bili-bangumi-page a[class*="mediainfo_mediaCover"],
body.bili-bangumi-page [class*="mediainfo_mediaCover"] picture,
body.bili-bangumi-page [class*="mediainfo_mediaCover"] img,
body.bili-bangumi-page [class*="mediainfo_mediaCover"] svg {
display: none !important;
visibility: hidden !important;
width: 0 !important;
max-width: 0 !important;
min-width: 0 !important;
height: 0 !important;
max-height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: 0 !important;
opacity: 0 !important;
overflow: hidden !important;
position: absolute !important;
left: -9999px !important;
top: -9999px !important;
pointer-events: none !important;
flex: 0 0 0 !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaRight"] {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: flex-start !important;
text-align: center !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
float: none !important;
position: static !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaTitle"] {
font-size: 16px !important;
font-weight: bold !important;
margin: 0 0 6px 0 !important;
padding: 0 !important;
text-align: center !important;
width: 100% !important;
display: block !important;
height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
word-break: break-word !important;
}
/* ★ 番剧简介:始终完全展开,隐藏"展开/收起"按钮 ★
B站原生机制:收起态 display_area 用 -webkit-line-clamp 限高,
ellipsis 是末行渐变遮罩+"展开"按钮;展开态切换为纯 p 标签。
实测无论多少字,展开后也只多显示约一行,按钮意义不明。
方案:强制解除所有高度/行数限制,隐藏 ellipsis/placeholder/按钮,
让简介始终完整显示(纯 CSS,无 JS)。
两套 DOM 结构:
收起态 a[class*="mediainfo_media_desc_section"]
-> div.display_area > div.placeholder(hidden) + p.content + div.ellipsis("展开")
-> p.content_placeholder(hidden)
展开态 a[class*="mediainfo_media_desc"] -> p > span("简介:") + i("收起") */
body.bili-bangumi-page [class*="mediainfo_media_desc"] p,
body.bili-bangumi-page [class*="mediainfo_media_desc"] p *,
body.bili-bangumi-page [class*="mediainfo_display_area"],
body.bili-bangumi-page [class*="mediainfo_display_area"] *,
body.bili-bangumi-page [class*="mediainfo_content"],
body.bili-bangumi-page [class*="mediainfo_content"] * {
color: #61666d !important;
font-size: 13px !important;
font-weight: 400 !important;
line-height: 1.6 !important;
letter-spacing: normal !important;
font-style: normal !important;
text-transform: none !important;
text-align: center !important;
}
body.bili-bangumi-page [class*="mediainfo_media_desc"] {
width: 100% !important;
max-width: 100% !important;
display: block !important;
padding: 6px 0 0 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
text-overflow: clip !important;
white-space: normal !important;
word-break: break-word !important;
}
body.bili-bangumi-page [class*="mediainfo_media_desc"] p {
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
text-overflow: clip !important;
white-space: pre-wrap !important;
word-break: break-word !important;
}
/* ★ 关键:解除 display_area 的高度与行数限制,让收起态也能完整展开 ★
同时强制 position: static,防止 B站原始 absolute 定位导致
简介脱离文档流、叠加到评论区上方 */
body.bili-bangumi-page [class*="mediainfo_display_area"] {
position: static !important;
top: auto !important;
left: auto !important;
right: auto !important;
bottom: auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
text-overflow: clip !important;
white-space: normal !important;
word-break: break-word !important;
float: none !important;
z-index: auto !important;
}
body.bili-bangumi-page [class*="mediainfo_content"] {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
height: auto !important;
min-height: auto !important;
max-height: none !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
text-overflow: clip !important;
white-space: pre-wrap !important;
word-break: break-word !important;
}
/* ★ 隐藏"展开/收起"按钮、渐变遮罩、占位测量元素 ★ */
body.bili-bangumi-page [class*="mediainfo_ellipsis"],
body.bili-bangumi-page [class*="mediainfo_placeholder"],
body.bili-bangumi-page [class*="mediainfo_expand"],
body.bili-bangumi-page [class*="mediainfo_expandBtn"],
body.bili-bangumi-page [class*="mediainfo_moreBtn"],
body.bili-bangumi-page [class*="mediainfo_toggleBtn"],
body.bili-bangumi-page [class*="mediainfo_content_placeholder"] {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* ★ 隐藏展开态 p 里的 收起 按钮文字 ★ */
body.bili-bangumi-page [class*="mediainfo_media_desc"] p > i,
body.bili-bangumi-page [class*="mediainfo_content"] i {
display: none !important;
visibility: hidden !important;
}
body.bili-bangumi-page [class*="mediainfo_mediaRating"] {
display: inline-flex !important;
justify-content: center !important;
align-items: center !important;
margin: 0 auto !important;
}
body.bili-bangumi-page [class*="upinfo_upInfoCard"] {
display: inline-flex !important;
justify-content: center !important;
align-items: center !important;
margin: 0 auto !important;
}
body.bili-bangumi-page #comment-module {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 12px 0 0 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
display: block !important;
position: static !important;
clear: both !important;
}
body.bili-bangumi-page #comment-module * {
max-width: 100% !important;
box-sizing: border-box !important;
}
body.bili-bangumi-page #comment-body {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
display: block !important;
}
body.bili-bangumi-page #comment-body bili-comments {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
position: static !important;
}
/* ============================================================
========== 番剧页播放器控制栏 ==========
============================================================ */
body.bili-bangumi-page .bpx-player-ctrl-pip,
body.bili-bangumi-page .bpx-player-ctrl-wide,
body.bili-bangumi-page .bpx-player-ctrl-time,
body.bili-bangumi-page .bpx-player-ctrl-eplist { display: none !important; }
@media screen and (orientation: landscape) {
body.bili-bangumi-page .bpx-player-ctrl-time { display: block !important; }
}
@media screen and (width >= 750px) {
body.bili-bangumi-page .bpx-player-container[data-screen=full] .bpx-player-ctrl-quality-result {
height: unset !important;
font-size: 16px !important;
}
body.bili-bangumi-page .bpx-player-container[data-screen=full] .bpx-player-control-wrap { height: 43px !important; }
body.bili-bangumi-page .bpx-player-container[data-screen=full] .bpx-player-control-top { bottom: 43px !important; }
}
body.bili-bangumi-page div.bpx-player-control-bottom {
height: 29px !important;
margin-top: 7px !important;
padding: 0 7px !important;
}
body.bili-bangumi-page div.bpx-player-control-top {
transition: none;
bottom: 36px;
}
body.bili-bangumi-page .bpx-player-pbp .bpx-player-pbp-pin-tip { display: none !important; }
body.bili-bangumi-page .bpx-player-control-bottom-left,
body.bili-bangumi-page .bpx-player-control-bottom-right { flex: unset !important; }
body.bili-bangumi-page .bpx-player-container .bpx-player-control-bottom-left,
body.bili-bangumi-page .bpx-player-container .bpx-player-control-bottom-right { min-width: 0 !important; }
body.bili-bangumi-page .bpx-player-ctrl-quality {
min-width: 0;
flex: auto !important;
margin-right: 0 !important;
}
body.bili-bangumi-page .bpx-player-ctrl-quality-result,
body.bili-bangumi-page .bpx-player-ctrl-playbackrate { font-size: 12px !important; }
body.bili-bangumi-page .bpx-player-ctrl-quality-result { height: 22px; overflow: hidden; }
body.bili-bangumi-page .bpx-player-ctrl-playbackrate { text-wrap: nowrap; }
body.bili-bangumi-page .bpx-player-progress-wrap {
height: 7px !important;
padding-bottom: 3px !important;
}
body.bili-bangumi-page .bpx-player-control-mask {
background: linear-gradient(rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%) !important;
}
body.bili-bangumi-page .bpx-player-ctrl-quality-menu-wrap { bottom: 22px !important; }
body.bili-bangumi-page .bpx-player-ctrl-quality-menu-item {
max-width: 95px;
max-height: 36px;
height: 7.7vw !important;
padding: 0 8px 0 12px !important;
}
body.bili-bangumi-page .bpx-player-ctrl-quality-badge-bigvip {
color: #fff;
background-color: #f25d8e;
width: 16px;
overflow: hidden;
right: 8px !important;
}
body.bili-bangumi-page .bpx-player-ctrl-quality-badge-bigvip:before {
color: #fff;
content: "V";
background-color: #f25d8e;
padding: 0 4px;
position: absolute;
left: 0;
}
body.bili-bangumi-page .bpx-player-ctrl-playbackrate-menu { bottom: 22px !important; }
body.bili-bangumi-page .bpx-player-ctrl-playbackrate-menu-item {
justify-content: center;
align-items: center;
max-height: 36px;
display: flex;
height: 7.7vw !important;
}
body.bili-bangumi-page div.bpx-player-ctrl-subtitle-box {
bottom: 0;
right: 0;
transform: scale(.8);
}
body.bili-bangumi-page .bpx-player-ctrl-setting-box {
bottom: 0 !important;
right: 0 !important;
}
body.bili-bangumi-page .bpx-player-ctrl-setting-menu-right { padding: 5px !important; }
body.bili-bangumi-page .bpx-player-ctrl-setting-menu-right > div {
justify-content: center;
align-items: center;
max-height: 40px;
display: flex;
height: 10vw !important;
}
body.bili-bangumi-page .bpx-player-ctrl-setting-menu-right .bui-radio {
width: 77%;
margin: 0 0 8px 7px;
}
body.bili-bangumi-page .bpx-player-ctrl-setting-others-content {
margin-left: 7px;
width: 77% !important;
}
body.bili-bangumi-page .bpx-player-ctrl-setting-highenergy .bui-checkbox-name {
white-space: nowrap;
width: 48px;
overflow: hidden;
}
body.bili-bangumi-page .bpx-player-dm-setting-wrap {
top: 0;
left: 50%;
transform: translate(-50%);
bottom: unset !important;
position: fixed !important;
}
body.bili-bangumi-page .bpx-player-control-bottom-center .bpx-player-sending-bar {
height: 24px !important;
padding-right: 6px !important;
}
body.bili-bangumi-page .bpx-player-ctrl-viewpoint {
flex-shrink: 1 !important;
width: 45px !important;
min-width: 0 !important;
margin: 0 !important;
}
body.bili-bangumi-page .bpx-player-ctrl-viewpoint-text {
flex: none;
font-size: 12px;
width: 24px !important;
text-overflow: unset !important;
}
body.bili-bangumi-page .bpx-player-control-wrap:not(.new) { display: none; }
body.bili-bangumi-page .bpx-player-control-entity,
body.bili-bangumi-page .bpx-player-control-mask { display: block !important; }
body.bili-bangumi-page .bpx-player-container[data-ctrl-hidden=true] .bpx-player-control-bottom { display: none; }
body.bili-bangumi-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-wrap .bpx-player-control-mask {
opacity: 0;
transition: opacity .2s ease-in;
}
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-wrap .bpx-player-control-mask { opacity: 1; }
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-control-bottom {
opacity: 1;
display: flex;
}
body.bili-bangumi-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-control-bottom { display: none; }
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-control-top,
body.bili-bangumi-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-shadow-progress-area {
opacity: 1;
visibility: visible;
}
body.bili-bangumi-page .bpx-player-container[ctrl-shown=false] .bpx-player-control-entity .bpx-player-control-top,
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-shadow-progress-area {
opacity: 0;
visibility: hidden;
}
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-pbp {
opacity: 1;
width: 100%;
bottom: calc(100% + 6px);
left: 0;
}
body.bili-bangumi-page div.bpx-player-control-entity .bpx-player-pbp {
opacity: 0;
width: calc(100% + 24px);
bottom: 1px;
left: -12px;
}
body.bili-bangumi-page div.bpx-player-control-entity .bpx-player-pbp.pin { opacity: 1; }
body.bili-bangumi-page .bpx-player-pbp-pin { display: none; opacity: 1 !important; }
body.bili-bangumi-page .bpx-player-container[ctrl-shown=true] .bpx-player-control-entity .bpx-player-pbp-pin { display: block; }
body.bili-bangumi-page .bpx-player-video-perch { max-height: 0; }
body.bili-bangumi-page .bpx-player-top-wrap,
body.bili-bangumi-page .bpx-player-state-wrap { display: none !important; }
body.bili-bangumi-page .bpx-player-container,
body.bili-bangumi-page #bilibili-player-placeholder { box-shadow: none !important; }
/* ===== 动态页 ===== */
body.bili-dynamic-page { background: #f4f5f7 !important; }
body.bili-dynamic-page .bili-header,
body.bili-dynamic-page .international-header,
body.bili-dynamic-page .mini-header,
body.bili-dynamic-page .bili-header__bar,
body.bili-dynamic-page .bili-header__menu,
body.bili-dynamic-page #bili-header-container {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-dynamic-page .bgc,
body.bili-dynamic-page .bg { display: none !important; }
body.bili-dynamic-page .bili-dyn-home--member > .left,
body.bili-dynamic-page .bili-dyn-home--member > aside.left,
body.bili-dynamic-page .bili-dyn-home--member > .right,
body.bili-dynamic-page .bili-dyn-home--member > aside.right,
body.bili-dynamic-page .bili-dyn-sidebar,
body.bili-dynamic-page .bili-dyn-sidebar__btn {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-dynamic-page #app,
body.bili-dynamic-page #app > div,
body.bili-dynamic-page .bili-dyn-home--member,
body.bili-dynamic-page .bili-dyn-home--member > main,
body.bili-dynamic-page .bili-dyn-list,
body.bili-dynamic-page .bili-dyn-list__item,
body.bili-dynamic-page .bili-dyn-item {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
body.bili-dynamic-page .bili-dyn-list__items {
padding: 8px 0 8px 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-list__item {
padding: 0 8px 8px 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-item {
position: relative !important;
background: #ffffff !important;
border: 1px solid #e3e5e7 !important;
border-radius: 8px !important;
padding: 12px 8px 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
display: block !important;
float: none !important;
}
body.bili-dynamic-page .bili-dyn-item * {
max-width: 100% !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-item img,
body.bili-dynamic-page .bili-dyn-item video,
body.bili-dynamic-page .bili-dyn-item picture {
max-width: 100% !important;
height: auto !important;
}
body.bili-dynamic-page .bili-dyn-item__main {
position: relative !important;
padding-left: 0 !important;
padding-right: 0 !important;
box-sizing: border-box !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
float: none !important;
}
body.bili-dynamic-page .bili-dyn-item__avatar {
position: absolute !important;
left: 0 !important;
top: 0 !important;
width: 56px !important;
max-width: 56px !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-item__avatar .bili-dyn-avatar,
body.bili-dynamic-page .bili-dyn-item__avatar .b-avatar,
body.bili-dynamic-page .bili-dyn-item__avatar img {
width: 48px !important;
height: 48px !important;
max-width: 100% !important;
border-radius: 50% !important;
}
body.bili-dynamic-page .bili-dyn-item__header {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 64px !important;
padding-right: 8px !important;
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-item__more,
body.bili-dynamic-page .bili-dyn-more,
body.bili-dynamic-page .bili-dyn-more__btn,
body.bili-dynamic-page .bili-dyn-more__cascader {
display: none !important;
visibility: hidden !important;
}
body.bili-dynamic-page .bili-dyn-content,
body.bili-dynamic-page .bili-dyn-content__orig,
body.bili-dynamic-page .bili-dyn-content__orig__major {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-card-video {
display: flex !important;
flex-direction: column !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-card-video__header {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
flex: 0 0 auto !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-card-video__cover {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
aspect-ratio: 16 / 9 !important;
box-sizing: border-box !important;
}
body.bili-dynamic-page .bili-dyn-card-video__cover .b-img,
body.bili-dynamic-page .bili-dyn-card-video__cover .b-img__inner,
body.bili-dynamic-page .bili-dyn-card-video__cover img,
body.bili-dynamic-page .bili-dyn-card-video__cover picture {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
aspect-ratio: 16 / 9 !important;
object-fit: cover !important;
display: block !important;
}
body.bili-dynamic-page .bili-dyn-card-video__body {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
flex: 1 1 auto !important;
padding: 8px 0 0 0 !important;
box-sizing: border-box !important;
}
/* 投稿了视频:隐藏视频封面下方「框住标题/简介文字」的那条左侧半开口边框 */
body.bili-dynamic-page .bili-dyn-card-video__body,
body.bili-dynamic-page .bili-dyn-card-video__title,
body.bili-dynamic-page .bili-dyn-card-video__desc {
border: none !important;
border-top: none !important;
border-right: none !important;
border-bottom: none !important;
border-left: none !important;
border-width: 0 !important;
border-style: none !important;
box-shadow: none !important;
outline: none !important;
}
/* 该边框也可能是 ::before / ::after 画的竖条,一并清掉 */
body.bili-dynamic-page .bili-dyn-card-video__body::before,
body.bili-dynamic-page .bili-dyn-card-video__body::after,
body.bili-dynamic-page .bili-dyn-card-video__desc::before,
body.bili-dynamic-page .bili-dyn-card-video__desc::after {
content: none !important;
display: none !important;
border: none !important;
background: none !important;
box-shadow: none !important;
}
body.bili-dynamic-page .bili-dyn-card-video__title,
body.bili-dynamic-page .bili-dyn-card-video__desc,
body.bili-dynamic-page .bili-dyn-card-video__title .bili-ellipsis,
body.bili-dynamic-page .bili-dyn-card-video__desc .bili-ellipsis { text-align: center !important; }
body.bili-dynamic-page .bili-dyn-card-video__stat,
body.bili-dynamic-page .bili-dyn-card-video__stat__item,
body.bili-dynamic-page .bili-dyn-card-video__stat__item.danmaku {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-dynamic-page .bili-dyn-item,
body.bili-dynamic-page .bili-dyn-item * {
text-align: center !important;
}
/* 正文容器:只做内边距约束,绝不能隐藏(正文 .bili-dyn-content 就在它里面) */
body.bili-dynamic-page .bili-dyn-item__body {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
}
/* 去掉卡片内的「转发 / 评论 / 点赞」数量行(整行隐藏) */
body.bili-dynamic-page .bili-dyn-item__footer,
body.bili-dynamic-page .bili-dyn-item__action,
body.bili-dynamic-page .bili-dyn-action,
body.bili-dynamic-page .bili-dyn-action.forward,
body.bili-dynamic-page .bili-dyn-action.comment,
body.bili-dynamic-page .bili-dyn-action.like {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* 隐藏该行后,卡片底部补回一点留白,避免内容紧贴卡片下边缘 */
body.bili-dynamic-page .bili-dyn-item {
padding-bottom: 12px !important;
}
body.bili-dynamic-page .bili-dyn-content__orig__major img,
body.bili-dynamic-page .bili-dyn-content__orig__major picture,
body.bili-dynamic-page .bili-dyn-content__orig__major .b-img {
margin-left: auto !important;
margin-right: auto !important;
display: block !important;
}
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="grid"],
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="pics"],
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="gallery"],
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="goods"],
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="commodity"],
body.bili-dynamic-page .bili-dyn-content__orig__major [class*="card"] {
margin-left: auto !important;
margin-right: auto !important;
justify-content: center !important;
}
body.bili-dynamic-page .bili-dyn-item__action {
flex: 1 1 0 !important;
width: auto !important;
max-width: none !important;
min-width: 0 !important;
box-sizing: border-box !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
body.bili-dynamic-page .bili-dyn-action {
display: flex !important;
align-items: center !important;
justify-content: center !important;
width: 100% !important;
gap: 4px !important;
}
body.bili-dynamic-page .bili-dyn-list-tabs,
body.bili-dynamic-page .bili-dyn-list-tabs__list,
body.bili-dynamic-page .bili-dyn-list-tabs__item {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-dynamic-page .bili-dyn-home--member > main > section:nth-of-type(1),
body.bili-dynamic-page .bili-dyn-home--member > main > section:nth-of-type(2) {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-dynamic-page .bili-dyn-search-trendings,
body.bili-dynamic-page .trending-list,
body.bili-dynamic-page .sticky { display: none !important; }
/* ============================================================
动态详情页(t.bilibili.com/xxx 单条动态展开):评论区与视频页一致
结构:#app > .content > .card > .bili-tabs.dyn-tabs
> .bili-tabs__content > .bili-tab-pane > .comment-wrap
> .bili-comment-container > bili-comments(shadow DOM)
实测:bili-comments 仅 312 宽(360 屏),左右各 24px;视频页为 8px。
这里按视频页 #commentapp 的同一套外框规则拉齐,
shadow 内部(输入框/点赞/回复按钮等)由 installShadowRootPatch 统一处理。
============================================================ */
body.bili-dynamic-page .bili-tabs.dyn-tabs,
body.bili-dynamic-page .bili-tabs__content,
body.bili-dynamic-page .bili-tab-pane,
body.bili-dynamic-page .comment-wrap,
body.bili-dynamic-page .bili-comment-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
padding-left: 8px !important;
padding-right: 8px !important;
margin-left: 0 !important;
margin-right: 0 !important;
overflow: hidden !important;
float: none !important;
position: static !important;
}
body.bili-dynamic-page bili-comments,
body.bili-dynamic-page .bili-comment-container bili-comments {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
display: block !important;
}
/* 与视频页一致:外部的输入框/编辑器容器一并隐藏(shadow 内由 patch 处理) */
body.bili-dynamic-page .bili-comment-box,
body.bili-dynamic-page .bili-comment-input-wrap,
body.bili-dynamic-page .comment-send-box,
body.bili-dynamic-page .bili-comment-editor,
body.bili-dynamic-page .bili-comment-editor-wrap {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* 「评论 N」下面的那条分割线:恢复显示(v131.10)
不再清空 tabs 头部/导航的下边框与伪元素,
并显式补一条 1px 灰线,原生无边框时也能保证有线。 */
body.bili-dynamic-page .bili-tabs.dyn-tabs > .bili-tabs__header,
body.bili-dynamic-page .bili-tabs.dyn-tabs .bili-tabs__header {
border-top: 0 !important;
border-left: 0 !important;
border-right: 0 !important;
border-bottom: 1px solid #e3e5e7 !important;
box-shadow: none !important;
background-image: none !important;
}
/* 若出现两条线(原生伪元素 + 上面补的边框),
把下面这段的 border-bottom 改回 none 即可 */
body.bili-dynamic-page .bili-tabs__nav,
body.bili-dynamic-page .bili-tabs__nav__items,
body.bili-dynamic-page .bili-tabs__nav__item {
box-shadow: none !important;
background-image: none !important;
}
/* 只隐藏「赞与转发」这一个 tab 项,保留「评论 N」——
视频页评论区本来就有「评论 N」(shadow 内 #title),两边才一致。
探针:nav__items 中 nth-of-type(2) 为「评论 N」(.is-active),
nth-of-type(3) 为「赞与转发」。 */
body.bili-dynamic-page .bili-tabs__nav__item:nth-of-type(3),
body.bili-dynamic-page .bili-tabs__nav__items > .bili-tabs__nav__item:nth-of-type(3) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* 右侧悬浮工具栏(417 / 0 / 7 / 顶部):视频页没有,隐藏 */
body.bili-dynamic-page .sidebar-wrap,
body.bili-dynamic-page .side-toolbar,
body.bili-dynamic-page .side-toolbar__box,
body.bili-dynamic-page .side-toolbar__bottom {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* ============================================================
opus 详情页(www.bilibili.com/opus/xxx)评论区:同样对齐视频页
实测链路:opus-detail 344 -> .bili-tabs.opus-tabs 328
-> .bili-tabs__content 312 -> .comment-wrap 296
-> .bili-comment-container 280 -> bili-comments 264
每层各吃 16px,层层嵌套后只剩 264,比视频页的 328 窄了 64。
目标:344 - 8(容器) - 8(容器) = 328,与视频页 bili-comments 完全一致。
做法:中间各层水平内边距归零,只由 .bili-comment-container 提供 8px,
bili-comments 满宽且自身不留白。
(下面选择器比既有 opus 规则更具体,确保覆盖生效)
============================================================ */
body.bili-opus-page .bili-tabs.opus-tabs,
body.bili-opus-page .bili-tabs.opus-tabs > .bili-tabs__content,
body.bili-opus-page .bili-tabs.opus-tabs > .bili-tabs__content > .bili-tab-pane,
body.bili-opus-page .bili-tabs.opus-tabs .comment-wrap {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
position: static !important;
}
body.bili-opus-page .bili-tabs.opus-tabs .comment-wrap > .bili-comment-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
}
body.bili-opus-page .bili-comment-container bili-comments,
body.bili-opus-page .comment-wrap bili-comments {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
box-sizing: border-box !important;
}
/* 与视频页一致:外部输入框/编辑器容器隐藏(shadow 内由 patch 处理) */
body.bili-opus-page .bili-comment-box,
body.bili-opus-page .bili-comment-input-wrap,
body.bili-opus-page .comment-send-box,
body.bili-opus-page .bili-comment-editor,
body.bili-opus-page .bili-comment-editor-wrap {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* 只隐藏「赞与转发」tab,保留「评论 177」 */
body.bili-opus-page .bili-tabs__nav__item:nth-of-type(3),
body.bili-opus-page .bili-tabs__nav__items > .bili-tabs__nav__item:nth-of-type(3) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* 右侧悬浮工具栏(417 / 2 / 0 / 8 / 177 / 顶部) */
body.bili-opus-page .sidebar-wrap,
body.bili-opus-page .side-toolbar,
body.bili-opus-page .side-toolbar__box,
body.bili-opus-page .side-toolbar__bottom {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
/* ===== opus 详情页 ===== */
body.bili-opus-page {
background: #f4f5f7 !important;
overflow-x: hidden !important;
padding-top: 8px !important;
}
body.bili-opus-page .opus-module-content,
body.bili-opus-page .opus-module-content p,
body.bili-opus-page .opus-module-content span,
body.bili-opus-page .opus-module-title {
text-align: center !important;
}
body.bili-opus-page .opus-para-pic,
body.bili-opus-page .bili-album,
body.bili-opus-page .bili-album__preview.grid2,
body.bili-opus-page .opus-para-link-card,
body.bili-opus-page .bili-dyn-card-goods,
body.bili-opus-page .bili-dyn-card-goods__wrap,
body.bili-opus-page .bili-dyn-card-goods__one {
margin-left: auto !important;
margin-right: auto !important;
text-align: center !important;
}
body.bili-opus-page #bili-header-container,
body.bili-opus-page .bili-header,
body.bili-opus-page .bili-header--mini,
body.bili-opus-page .bili-header--fixed,
body.bili-opus-page .bili-header__bar,
body.bili-opus-page .bili-header__menu,
body.bili-opus-page .international-header,
body.bili-opus-page .mini-header {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-opus-page .bgc,
body.bili-opus-page .bg { display: none !important; }
body.bili-opus-page .right-sidebar-wrap,
body.bili-opus-page .side-toolbar,
body.bili-opus-page .go-top,
body.bili-opus-page [class*="back-top"],
body.bili-opus-page [class*="to-top"] {
display: none !important;
visibility: hidden !important;
}
body.bili-opus-page #app,
body.bili-opus-page #opus-detail-app,
body.bili-opus-page .opus-detail,
body.bili-opus-page .bili-opus-view,
body.bili-opus-page .opus-module-top,
body.bili-opus-page .opus-module-title,
body.bili-opus-page .opus-module-author,
body.bili-opus-page .opus-module-content,
body.bili-opus-page .opus-module-copyright,
body.bili-opus-page .opus-module-bottom,
body.bili-opus-page .bili-tabs.opus-tabs,
body.bili-opus-page .bili-tabs__header,
body.bili-opus-page .bili-tabs__content,
body.bili-opus-page .comment-wrap,
body.bili-opus-page .bili-comment-container {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
position: static !important;
left: auto !important;
right: auto !important;
}
body.bili-opus-page img,
body.bili-opus-page video,
body.bili-opus-page picture,
body.bili-opus-page .b-img,
body.bili-opus-page .b-img__inner {
max-width: 100% !important;
height: auto !important;
display: block !important;
}
body.bili-opus-page .opus-module-top__album__cover,
body.bili-opus-page .opus-module-top__display,
body.bili-opus-page .opus-module-top__album {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
box-sizing: border-box !important;
}
/* ===== opus 详情页:隐藏三处模块 =====
实测:.opus-module-top [312x187](标题上方的封面图)
.opus-module-copyright [312x54](cv53172768)
.opus-module-bottom [312x96](分享至 / 投诉或建议)
注意:上面已有的宽度规则里包含了这三个选择器,但只设了宽高/内边距,
这里单独用 display:none 隐藏;选择器更具体,优先级覆盖无冲突。 */
body.bili-opus-page .bili-opus-view > .opus-module-top,
body.bili-opus-page .opus-detail .opus-module-top,
body.bili-opus-page .opus-module-top {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-opus-page .bili-opus-view > .opus-module-copyright,
body.bili-opus-page .opus-detail .opus-module-copyright,
body.bili-opus-page .opus-module-copyright {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-opus-page .bili-opus-view > .opus-module-bottom,
body.bili-opus-page .opus-detail .opus-module-bottom,
body.bili-opus-page .opus-module-bottom,
body.bili-opus-page .opus-module-bottom__share,
body.bili-opus-page .opus-module-bottom__share__list {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-opus-page .opus-para-pic,
body.bili-opus-page .opus-pic-view,
body.bili-opus-page .bili-dyn-pic,
body.bili-opus-page .bili-dyn-pic__img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
margin-left: auto !important;
margin-right: auto !important;
box-sizing: border-box !important;
}
body.bili-opus-page * {
max-width: 100% !important;
box-sizing: border-box !important;
}
/* ============================================================
v131.28 长按头像弹出的「UP 主信息卡片」固定在屏幕内显示
探针实测(三份都已抓到,挂在 body 直下):
空间搜索页 body > div.bili-user-profile:nth-of-type(5) [360x261]
空间动态页 body > div.bili-user-profile:nth-of-type(5) [360x261]
动态详情页 body > div.bili-user-profile:nth-of-type(10) [360x266]
卡片本身已经是满宽 360,问题出在定位:站内 JS 按 PC 布局算出的
left/top(或 transform)把它推到了视口之外。探针只记录尺寸不记录坐标,
无法确定是被横向推出还是纵向推出,所以这里采用"强制钉在视口内"的
做法,两种情形一并覆盖:
· position: fixed —— 相对视口定位,不再受文档坐标影响
· left/right 双写 0 + width 100% —— 横向必定铺满视口
· top: auto + bottom: 0 —— 纵向必定贴底(手机上的 bottom-sheet)
· transform: none —— 压掉站内用 translate 做的偏移
!important 的作者样式优先级高于站内写在 style 属性里的普通声明。
注意:不写 display / visibility,显示与隐藏仍交给站内 JS 控制。
============================================================ */
body .bili-user-profile {
position: fixed !important;
left: 0 !important;
right: 0 !important;
/* v131.29:改为距屏幕顶部 36px(原来是贴底 bottom:0) */
top: 36px !important;
bottom: auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: 90vh !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
transform: none !important;
translate: none !important;
scale: none !important;
overflow-x: hidden !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch !important;
border-radius: 12px 12px 0 0 !important;
box-shadow: 0 -2px 12px rgba(0,0,0,0.12) !important;
z-index: 2147483647 !important;
}
/* 内部两层:满宽 + 裁掉溢出(背景图原生 366 宽,比视口宽 6px) */
body .bili-user-profile__content,
body .bili-user-profile-view,
body .bili-user-profile-view__background,
body .bili-user-profile-view__info {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
transform: none !important;
}
/* v131.29 隐藏「发消息」按键(保留「关注/已关注」)。
只写 display:none:footer 是 flex,移除后关注按钮会自动铺满,不留空隙。 */
body .bili-user-profile-view__info__button.chat {
display: none !important;
visibility: hidden !important;
width: 0 !important;
min-width: 0 !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* ============================================================
========== UP 主空间页 ==========
============================================================ */
html:has(body.bili-space-page),
body.bili-space-page {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
/* v131.33:hidden 会让 body 变成滚动容器,导致内部 sticky 全部失效
(胶囊栏吸不住、一滚就钻到搜索框底下 -> 间距看起来是 0)。
clip 同样能裁掉横向溢出,但不会创建滚动容器,sticky 正常工作。
两条都写:老浏览器吃 hidden,新版吃 clip。 */
overflow-x: hidden !important;
overflow-x: clip !important;
margin: 0 !important;
padding: 0 !important;
background: #f1f2f3 !important;
}
/* v131.37 顶部 52px 占位改为「唯一来源」。
原写法只给 body 加 padding-top: 52px,一旦它被站内样式或其它规则
覆盖,整个空间页内容就会顶到 y=0:
胶囊栏(pill) 8..42 完全落进固定搜索栏 0..52 里 -> 胶囊栏看不见
第一行卡片顶 50,被搜索栏压掉 2px -> 顶部裁剪显示不全
正好对应你反馈的两个现象。
改法:body 的 padding 归零,改由 #app 提供这 52px。
两者效果等价(都是把 #app 内容整体下移 52),但来源唯一、
不再依赖 body 那条容易被盖掉的规则。
放在 #app 上也同时保证 nav-bar(投稿页)初始位置就是 52,
与它自己的 sticky top:52 一致,不会先被搜索栏盖住再跳下来。 */
body.bili-space-page { padding-top: 0 !important; }
body.bili-space-page > #app,
body.bili-space-page > div#app {
padding-top: 52px !important;
box-sizing: border-box !important;
/* v131.39 真凶(探针 14-15-15 实证):#app 带站内原生的
margin-top: -64px,而且它与 body 的 margin 发生了外边距合并,
把 body 本身也顶到了 top=-64:
html top=0 / body top=-64 / #app top=-64 (pt=52 mt=-64)
→ main top=-12 → 胶囊栏 top=-4 → 卡片顶 38
于是胶囊栏 8..50 整体落进固定搜索栏 0..52 里被完全盖住,
第一行卡片顶 38 也被切掉 —— 正好是你看到的两个现象。
这个 -64 原本是站内给 PC 头部留的负补偿,脚本已隐藏 PC 头部,
它就必须归零。 */
margin-top: 0 !important;
}
/* 顺带断掉 body 与 #app 的外边距合并,避免再被负边距带偏 */
body.bili-space-page > #app::before {
content: '' !important;
display: block !important;
height: 0 !important;
overflow: hidden !important;
}
/* v131.38 加固:.space-theme-bg 是站内绝对定位的背景层(360x800),
脚本从未处理过它。若它层级高于普通流内容,就会把 main 顶部
(含胶囊栏)整块盖住 —— 表现就是"胶囊栏凭空消失"。
这里把它压到最底层并禁用命中,彻底排除遮挡可能。 */
body.bili-space-page .space-theme-bg,
body.bili-space-page #app > .space-theme-bg {
position: absolute !important;
top: 0 !important;
left: 0 !important;
z-index: 0 !important;
pointer-events: none !important;
}
/* main 与胶囊栏显式抬到背景层之上 */
body.bili-space-page #app > main.space-main {
position: relative !important;
z-index: 2 !important;
}
body.bili-space-page .search-sidebar,
body.bili-space-page .upload-sidenav {
z-index: 3 !important;
}
body.bili-space-page .bili-header,
body.bili-space-page .international-header,
body.bili-space-page .mini-header,
body.bili-space-page #biliMainHeader,
body.bili-space-page #bili-header-container,
body.bili-space-page .bili-header--mini,
body.bili-space-page .bili-header--fixed,
body.bili-space-page .bili-header__bar,
body.bili-space-page .bili-header__menu,
body.bili-space-page .footer,
body.bili-space-page .bili-footer,
body.bili-space-page .international-footer,
body.bili-space-page .mini-footer,
body.bili-space-page .space-footer,
body.bili-space-page .go-top,
body.bili-space-page .bili-go-top,
body.bili-space-page [class*="back-top"],
body.bili-space-page [class*="goto-top"],
body.bili-space-page [class*="to-top"],
body.bili-space-page .fixed-sidebar,
body.bili-space-page .bili-fixed-sidebar,
body.bili-space-page .side-toolbar,
body.bili-space-page .right-sidebar-wrap,
body.bili-space-page .space-float {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
}
body.bili-space-page .toutu.header-toutu {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
body.bili-space-page .header.space-header {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
body.bili-space-page .upinfo-detail__top .level,
body.bili-space-page .upinfo-detail__top a.level,
body.bili-space-page .upinfo-detail__top .vip,
body.bili-space-page .upinfo-detail__top .img-label,
body.bili-space-page .upinfo-detail__bottom,
body.bili-space-page .upinfo-sign,
body.bili-space-page .upinfo-sign__text,
body.bili-space-page .interactions > a.message-btn,
body.bili-space-page .interactions > .more-actions,
body.bili-space-page .interactions > .menu-popover.message,
body.bili-space-page .interactions > .v-popover-wrap.message-entry {
display: none !important;
visibility: hidden !important;
}
body.bili-space-page .nav-search.nav-bar-search,
body.bili-space-page label.nav-search,
body.bili-space-page input.nav-search-input,
body.bili-space-page .nav-bar__main-right,
body.bili-space-page .nav-statistics {
display: none !important;
visibility: hidden !important;
}
/* v131.26 导航条高度 64 → 52,与顶部自建搜索栏 #my-bili-searchbar 等高。
实测:#my-bili-searchbar 360x52;.nav-bar.space-navbar 360x64
(内部 .nav-bar__main / .nav-tab / a.nav-tab__item 都是 64,被 flex 拉伸)。
只压外层 + 内层容器的 height,icon(20x21) 与文字本身没变,
所以视觉上只是上下留白收紧 12px(各 6px),图标文字不受影响。 */
body.bili-space-page .nav-bar.space-navbar {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 52px !important;
max-height: 52px !important;
overflow: hidden !important;
box-sizing: border-box !important;
margin-left: 0 !important;
margin-right: 0 !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding: 0 8px !important;
/* v131.33:吸顶位置定死在自建搜索栏正下方(搜索栏高 52),
否则站内 PC 的 top 值会让它在手机上错位、把胶囊栏顶到搜索框底下。 */
position: sticky !important;
top: 52px !important;
z-index: 1000 !important;
background: #ffffff !important;
}
/* ------------------------------------------------------------
v131.25 UP主空间页→搜索页:隐藏「主页 动态 投稿 合集和系列」这一行
结构:#app > div.nav-bar.space-navbar[360x64](main 的前置兄弟节点)
#app > main.space-main.route_search
CSS 没有"选前面的兄弟"的选择器,所以用 :has() 从父级反查:
#app:has(> main.route_search) > .nav-bar.space-navbar
nav-bar 原生是 sticky,这里只写 display:none(不动 position),
收掉后它不再占位,下方内容自然顶上来,不留 64px 空隙。
------------------------------------------------------------ */
body.bili-space-page #app:has(> main.space-main.route_search) > .nav-bar.space-navbar,
body.bili-space-page #app:has(> main.space-main.route_search) > .header.space-header ~ .nav-bar.space-navbar,
body.bili-space-page:has(main.space-main.route_search) .nav-bar.space-navbar {
display: none !important;
visibility: hidden !important;
width: 0 !important;
max-width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* v131.36 UP主空间页→搜索页:隐藏 .header.space-header。
探针里它是 360x56(原为头像+昵称+关注),但脚本早已把内部内容
(头像/昵称/等级/签名/按钮等)逐个隐藏,只剩一个 56px 的空壳 —— 用户
截图确认"这一部分就是不存在"。
它的存在把胶囊栏整体推高了 56px:
搜索框底 52 → 空壳 52..108 → 胶囊栏 108..158
于是无论把间距放在胶囊栏的 padding 还是 margin 上,
白色胶囊 pill 的位置都是 116,肉眼看起来始终"紧贴搜索框"。
收掉空壳后:搜索框底 52 → 胶囊栏 60..110 → pill 顶 60,间距正好 8。
v131.40 这行改为「全部 UP主空间页都隐藏」(原先只对搜索页生效)。
原因是 v131.39 修掉了 #app 的 margin-top:-64px 之后,这行才第一次
真正露出来 —— 之前它被那 -64 顶到 top=-12..44,几乎整块压在固定
搜索栏(0..52)底下,所以你一直"看不到它"(v131.36 时你说得没错)。
现在归位到 52..108 就完整显示了,而里面的头像 .space-avatar 是
68x68、top=35,会往上戳进搜索栏区域被切掉一截 —— 正是你看到的
"被搜索栏遮挡了一部分"。
用户要求:这一行整体隐藏。于是直接收掉,不做显示。 */
body.bili-space-page .header.space-header,
body.bili-space-page #app > .header.space-header,
body.bili-space-page #app:has(> main.space-main.route_search) > .header.space-header,
body.bili-space-page:has(main.space-main.route_search) .header.space-header {
display: none !important;
visibility: hidden !important;
width: 0 !important;
max-width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-space-page .nav-bar__main {
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex-wrap: nowrap !important;
gap: 0 !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 52px !important;
max-height: 52px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* .nav-tab / .nav-bar__main-left / 各 tab 项同压到 52(v131.26) */
body.bili-space-page .nav-bar__main-left,
body.bili-space-page .nav-tab {
height: 52px !important;
max-height: 52px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* v131.27 按键组占满一整行,且「按键间距 = 左右距屏幕边缘」
实测(09-04-40 探针):.nav-bar__main[344] > .nav-bar__main-left[274]
> .nav-tab[274] ← 只到 274,右侧空 70
原因是 main-left 为 flex:0 1 auto / width:auto、nav-tab 也是 width:auto,
两者都只按内容宽度收缩,于是整组按键缩在中间。
改法:main-left 与 nav-tab 全部撑满 100%,tab 项改 flex:1 1 auto 均分余量。
算下来:内容区 344(nav-bar 左右各 8)− gap 8×3 = 24 − 按键自然宽
(52+52+52+94=250) = 70,4 个按键各增 17.5 → 69.5/69.5/69.5/111.5,
合计 320 + 24 = 344 正好满行;左右各留 8、按键间距 8,三者相等。 */
body.bili-space-page .nav-tab > a.nav-tab__item {
height: 52px !important;
max-height: 52px !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex: 1 1 auto !important;
width: auto !important;
min-width: 0 !important;
max-width: none !important;
}
body.bili-space-page .nav-bar__main-left {
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex: 1 1 auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
}
body.bili-space-page .nav-tab {
display: flex !important;
align-items: center !important;
justify-content: flex-start !important;
gap: 8px !important;
white-space: nowrap !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .radio-filter {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
overflow: hidden !important;
padding: 0 !important;
margin: 0 !important;
}
body.bili-space-page button.playall-btn,
body.bili-space-page .vui_button.playall-btn,
body.bili-space-page .action-btn.playall-btn,
body.bili-space-page [class*="playall"] {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
overflow: hidden !important;
padding: 0 !important;
margin: 0 !important;
}
body.bili-space-page #app,
body.bili-space-page main.space-main,
body.bili-space-page .space-home {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
display: block !important;
}
body.bili-space-page .space-home > .aside,
body.bili-space-page .space-home > aside.aside,
body.bili-space-page main.space-main .aside {
display: none !important;
visibility: hidden !important;
width: 0 !important;
max-width: 0 !important;
min-width: 0 !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
flex: 0 0 0 !important;
position: absolute !important;
left: -9999px !important;
}
body.bili-space-page .space-home > .content {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
flex: 1 1 100% !important;
/* v131.41:底部 padding 16 -> 0(原为给页脚留的,页脚已隐藏) */
padding: 0 8px 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
}
/* ------------------------------------------------------------
v131.45 首页「视频 ·N 查看更多」标题行:上间距改为与下间距一致
探针(14-37-19)实测坐标:
上一区块(代表作)bottom = -6624
.section-wrap__header top = -6600 ← 上间距 = 24
.section-wrap__header bottom = -6566
.section-wrap__content top = -6550 ← 下间距 = 16(卡片顶)
即:上 24 / 下 16,不一致。
上间距 24 来自区块之间的 margin-bottom(24);
下间距 16 来自 header 与 content 之间的原生留白。
改法:给整个 video-section 区块加 margin-top: -8px,
把整块上提 8px(header 与 content 的相对位置不变,仍是 16),
于是上间距 24-8 = 16 = 下间距 16,两边一致。
用 :has() 定位而不写 nth-of-type,区块顺序变了也不会错位。
------------------------------------------------------------ */
body.bili-space-page .route_home .home-section:has(> .section-wrap.video-section) {
margin-top: -8px !important;
}
/* ------------------------------------------------------------
v131.41 首页滑到最底部:去掉那条没用的分割线及其下方的空白
探针(14-37-19,已滚到底)实测:
最后一张专栏卡 bottom = 735
最后一个 section-wrap bottom = 760 ← 分割线在这一带
.content bottom = 800 ← 文档底
即分割线下方还有 40px 空白,构成为:
最后一个 home-section 的 margin-bottom 24(区块间距,底部不需要)
+ .content 的 padding-bottom 16(页脚占位,页脚已隐藏)
用户要求:分割线去掉、分割线下方的高度去掉、分割线上方的高度保留。
故这里只清「分割线本身 + 下方 40px」,
section-wrap 内部那 25px(分割线上方)原样保留。
------------------------------------------------------------ */
body.bili-space-page .route_home .home-section:last-of-type,
body.bili-space-page .route_home .content > .home-section:last-child {
margin-bottom: 0 !important;
border-bottom: none !important;
}
body.bili-space-page .route_home .home-section:last-of-type .section-wrap,
body.bili-space-page .route_home .content > .home-section:last-child .section-wrap {
margin-bottom: 0 !important;
border-bottom: none !important;
box-shadow: none !important;
}
/* 分割线本身:清掉最后一个区块的伪元素与背景线 */
body.bili-space-page .route_home .home-section:last-of-type .section-wrap::after,
body.bili-space-page .route_home .home-section:last-of-type .section-wrap::before,
body.bili-space-page .route_home .content > .home-section:last-child .section-wrap::after,
body.bili-space-page .route_home .content > .home-section:last-child .section-wrap::before {
content: none !important;
display: none !important;
border: none !important;
background: none !important;
box-shadow: none !important;
}
/* .content / .space-home 底部若还挂着一条线,一并清掉 */
body.bili-space-page .route_home .content,
body.bili-space-page .route_home .space-home {
border-bottom: none !important;
box-shadow: none !important;
background-image: none !important;
}
body.bili-space-page .route_home .content::after,
body.bili-space-page .route_home .space-home::after,
body.bili-space-page .route_home .content::before,
body.bili-space-page .route_home .space-home::before {
content: none !important;
display: none !important;
border: none !important;
background: none !important;
box-shadow: none !important;
}
body.bili-space-page img,
body.bili-space-page video,
body.bili-space-page picture {
max-width: 100% !important;
height: auto !important;
}
body.bili-space-page .masterpiece-block,
body.bili-space-page .items,
body.bili-space-page .video-list__content,
body.bili-space-page .article-list {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-gap: 8px !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
padding: 0 !important;
margin: 0 !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
list-style: none !important;
align-items: start !important;
align-content: start !important;
background: transparent !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
grid-auto-rows: auto !important;
}
body.bili-space-page .items > .items__item,
body.bili-space-page .masterpiece-block > .masterpiece-block__item,
body.bili-space-page .video-list__content > .video-list__item,
body.bili-space-page .article-list > .article-list__item {
display: contents !important;
}
/* ------------------------------------------------------------
主页「合集·xxx / 系列·xxx」区块:标题行与视频卡片之间固定 20px
上面把 .video-list__content 的 margin/padding 全部归零,
刚进主页时站内那条原生顶部间距还没补上,文字就会紧贴卡片;
点一次「合集和系列」再切回来,站内样式补上了才恢复正常。
这里把间距统一交给 content 的 margin-top,
并清掉 header 的下边距与容器的 gap,避免两处叠加成双倍。
实测:修复前 .video-list 高 589(34+531+24),
正常态 609(多出的 20 就是这条间距)。
------------------------------------------------------------ */
body.bili-space-page .route_home .lists-section .video-list {
display: block !important;
gap: 0 !important;
row-gap: 0 !important;
column-gap: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
}
body.bili-space-page .route_home .lists-section .video-list__header {
margin-top: 0 !important;
margin-bottom: 0 !important;
padding-bottom: 0 !important;
}
body.bili-space-page .route_home .lists-section .video-list__content {
margin-top: 20px !important;
padding-top: 0 !important;
}
/* ------------------------------------------------------------
v131.20 UP主空间内搜索页(route_search,空间右上角搜索进来的结果页)
原结构:.space-search[360] 是 flex-row
> .search-sidebar[150 宽,纵向侧栏] > .side-nav > .side-nav__item[150x52]
> .search-content[736(PC 定宽)] > .video > .video-body
> .video-list.grid-mode[736] > .upload-video-card[364x282]
改法:sidebar 从左侧纵向栏改成顶部横向胶囊(同投稿页 .upload-sidenav /
动态页 .space-dynamic__left),content 满宽后卡片自然回到 168x172。
------------------------------------------------------------ */
body.bili-space-page .space-search {
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
gap: 0 !important;
}
/* 「视频 328 / 动态 357」移到「主页 动态 投稿 合集和系列」下方,横向胶囊 */
body.bili-space-page .search-sidebar {
order: 1 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: none !important;
/* v131.35:同投稿页,间距改用容器外 margin-top 8,
padding-top 归零。搜索页紧贴胶囊栏上方的是 .header.space-header
(头像+昵称+已关注,56px),它底边 108 → 容器顶 116 → 胶囊顶 116,
容器间距与视觉间距都是 8。 */
padding: 0 8px 8px 8px !important;
margin: 8px 0 0 0 !important;
box-sizing: border-box !important;
/* v131.34:不吸顶,随页面滚走,不遮挡最上面的卡片
v131.37:改用 relative 并给低层级——
relative 不改变文档流位置(仍随页面滚动),
但能确保它参与正常的层叠顺序,不会被背景层压住。 */
position: relative !important;
top: auto !important;
left: auto !important;
right: auto !important;
bottom: auto !important;
z-index: 1 !important;
flex: 0 0 auto !important;
overflow: visible !important;
background: #f1f2f3 !important;
}
body.bili-space-page .search-sidebar .side-nav {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 auto !important;
box-sizing: border-box !important;
flex-wrap: wrap !important;
position: static !important;
}
body.bili-space-page .search-sidebar .side-nav__item {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
justify-content: center !important;
flex: 0 0 auto !important;
width: auto !important;
min-width: 64px !important;
max-width: 100% !important;
height: 34px !important;
padding: 0 16px !important;
margin: 0 !important;
box-sizing: border-box !important;
border-radius: 17px !important;
background: #ffffff !important;
color: #18191c !important;
font-size: 13px !important;
white-space: nowrap !important;
position: static !important;
}
body.bili-space-page .search-sidebar .side-nav__item.active {
background: #00aeec !important;
color: #ffffff !important;
}
body.bili-space-page .search-sidebar .side-nav__item__main,
body.bili-space-page .search-sidebar .side-nav__item__sub {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
justify-content: center !important;
gap: 4px !important;
width: auto !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
background: transparent !important;
}
body.bili-space-page .search-sidebar .side-nav__item__main-text {
color: inherit !important;
font-size: 13px !important;
font-weight: 500 !important;
line-height: 34px !important;
}
body.bili-space-page .search-sidebar .side-nav__item__sub-text {
color: inherit !important;
font-size: 13px !important;
font-weight: 400 !important;
line-height: 34px !important;
opacity: 0.8 !important;
}
body.bili-space-page .search-content {
order: 2 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
flex: 1 1 100% !important;
padding: 0 8px 16px 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
position: static !important;
}
/* 视频结果:容器满宽 + 两列网格,卡片回到 168x172(同投稿页) */
body.bili-space-page .space-search .video,
body.bili-space-page .space-search .video-header,
body.bili-space-page .space-search .video-header__top,
body.bili-space-page .space-search .video-header .title,
body.bili-space-page .space-search .video-header .sub-title,
body.bili-space-page .space-search .video-body {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
}
/* v131.33 搜索页:整行移除「共找到关于"宝可梦"的 N 个视频 / 条动态」
(v131.31/32 只收了 .title,sub-title 保留;这版连 header 整块收掉)
实测:.video-header[344x20] / .dynamic-header[344x70]。
收掉后胶囊与卡片之间只剩 sidenav 自带的 padding-bottom 8 → 正好 8px。 */
body.bili-space-page .space-search .video-header,
body.bili-space-page .space-search .video-header__top,
body.bili-space-page .space-search .video-header .title,
body.bili-space-page .space-search .video-header .sub-title,
body.bili-space-page .space-search .dynamic-header,
body.bili-space-page .space-search .dynamic-header__top,
body.bili-space-page .space-search .dynamic-header .title,
body.bili-space-page .space-search .dynamic-header .sub-title {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* 胶囊底 → 卡片顶 = sidenav padding-bottom 8 + 0 = 8 */
body.bili-space-page .space-search .video-body,
body.bili-space-page .space-search .dynamic-content {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .space-search .video-list,
body.bili-space-page .space-search .video-list.grid-mode,
body.bili-space-page .space-search .video-list.hide-stat {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-gap: 8px !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
align-items: start !important;
align-content: start !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
}
body.bili-space-page .space-search .upload-video-card,
body.bili-space-page .space-search .upload-video-card.grid-mode,
body.bili-space-page .space-search .upload-video-card__left,
body.bili-space-page .space-search .upload-video-card__main {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* 动态结果:与动态页一致(.search-content 已有 8px 边距,
这里把 item 的左右内边距归零,避免叠加成 16px)
v131.21 修正:搜索页动态用的是 .dynamic-list(不是动态页的 .bili-dyn-list),
而且是 PC 定宽 720(.dynamic-list[720] > .dynamic-list__item[720x670]),
在 360 屏上直接溢出。这里把整条链压回 100%。 */
body.bili-space-page .space-search .dynamic,
body.bili-space-page .space-search .dynamic-header,
body.bili-space-page .space-search .dynamic-content,
body.bili-space-page .space-search .dynamic-list,
body.bili-space-page .space-search .dynamic-list__item,
body.bili-space-page .space-search .bili-dyn-list,
body.bili-space-page .space-search .bili-dyn-list__items,
body.bili-space-page .space-search .bili-dyn-item,
body.bili-space-page .space-search .bili-dyn-item__main {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .space-search .dynamic-list__item,
body.bili-space-page .space-search .bili-dyn-list__item {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 0 8px 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
/* 720 定宽带来的横向滚动也要掐掉,否则 360 屏会被撑开 */
body.bili-space-page .space-search .dynamic-content,
body.bili-space-page .space-search .dynamic-list {
display: block !important;
overflow-x: hidden !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
}
body.bili-space-page .space-search .dynamic-list__item .bili-dyn-item,
body.bili-space-page .space-search .dynamic-list__item .bili-dyn-item__main,
body.bili-space-page .space-search .dynamic-list__item .bili-dyn-item__header,
body.bili-space-page .space-search .dynamic-list__item .bili-dyn-item__body,
body.bili-space-page .space-search .dynamic-list__item .bili-dyn-item__footer {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
margin-left: 0 !important;
margin-right: 0 !important;
}
/* ------------------------------------------------------------
v131.23 底部分页器(投稿→视频 / 空间搜索→视频)对齐主搜索页
两者对比(都在第 1 页):
主搜索页 .vui_pagenation[360x50] > .vui_pagenation--btns[360x34]
上一页 61x34 | 数字 32x34 | 下一页 61x34 | 无跳转区
空间页 .vui_pagenation--jump.video-pagination[736x34] ← PC 定宽溢出
> .vui_pagenation--btns[478x34]
数字 34x34 | 下一页 100x34
> .vui_pagenation-go[214x34] 「共 16 页 / 618 个,跳至 __ 页」
改法:容器压回 100% 并居中,按钮套用主搜索页同一组尺寸,
跳转区整块隐藏(.vui_pagenation-go)。
v131.24 补:上下间距对齐主搜索页。
主搜索页实测:外层 .flex_center.mt_x50.mb_x50[360x50],
脚本 870 行已把它的 margin 上下压成 8px;分页器 padding 8 0 + btns 34 = 50。
父容器 div[360x3854] = 列表 3788 + 50 + 8 + 8,正好相等
→ 父容器没有额外的 padding-bottom。
所以主搜索页的视觉间距是:卡片底 → 8+8 = 16 → 按钮 → 8+8 = 16 → 容器底。
空间页:.video-footer 原生 154 高(= 分页器 34 + 上下各 60),
且父容器 .upload-content / .search-content 自带 padding-bottom 16
(实测 .upload-content[360x3758] − .video[344x3742] = 16)。
若不抵消,底部会变成 8 + 8 + 16 = 24,比主搜索页多 8px。
故 .video-footer 取 margin: 8px 0 -8px(下边 -8 抵消父容器多出的 8),
分页器保持 padding: 8px 0 → 上下视觉间距各 16px,与主搜索页一致。
------------------------------------------------------------ */
/* 外层:上 8 / 下 -8(抵消父容器底部 padding 多出的 8) */
body.bili-space-page .video-footer {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
padding: 0 !important;
margin: 8px 0 -8px 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
background: transparent !important;
}
/* v131.49 「合集和系列」页底部分页器:上下间距与「投稿→视频」页完全一致
两份探针同批实测(09-28_17-45-47 = 投稿→视频,09-28_17-45-34 = 合集和系列):
投稿→视频(基准,已达标)
.video-body bottom=3736 ← 最后一张卡片底
.video-footer top=3744 h=50 pt=0 pb=0 mt=8 mb=-8
.video-pagination pt=8 pb=8
.vui_pagenation--btns 3752 → 3786
.upload-content pb=16 → main bottom=3802
⇒ 卡片底→按钮顶 = 3752-3736 = 16
⇒ 按钮底→页面底 = 3802-3786 = 16
合集和系列(改前)
.lists-content bottom=11891 ← 最后一张卡片底
.lists-footer top=11891 h=110 **pt=60** pb=0 mt=0 mb=0
.audio-list-paginaion pt=8 pb=8(已被上面 .vui_pagenation 通配规则压好)
.vui_pagenation--btns 11959 → 11993
.space-lists pb=16 → main bottom=12017
⇒ 卡片底→按钮顶 = 11959-11891 = 68(多 52,全来自 pt=60)
⇒ 按钮底→页面底 = 12017-11993 = 24(多 8,因为没有 mb=-8 抵消)
两页的分页器本体、父容器 padding-bottom 16 都已经相同,
差异 100% 出在 footer 这一层。所以直接照抄 .video-footer
那组已验证过的参数(padding 0 + margin 8px 0 -8px):
上 = mt 8 + pagination pt 8 = 16 ✓
下 = pagination pb 8 + mb(-8) + space-lists pb 16 = 16 ✓
------------------------------------------------------------ */
body.bili-space-page .lists-footer {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 8px 0 -8px 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
background: transparent !important;
}
/* 高特异性兜底(v131.36 套路),防站内晚加载的同权重 !important */
body.bili-space-page main.space-main.route_listsIndex
> .space-lists > .lists-footer {
padding: 0 !important;
margin: 8px 0 -8px 0 !important;
}
/* 分页器本体:与主搜索页同款 padding 8px 0 */
body.bili-space-page .vui_pagenation,
body.bili-space-page .vui_pagenation--jump,
body.bili-space-page .vui_pagenation--jump.video-pagination {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
padding: 8px 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
background: transparent !important;
}
/* 「共 N 页 / N 个,跳至 __ 页」整块隐藏 */
body.bili-space-page .vui_pagenation-go,
body.bili-space-page .vui_pagenation--jump .vui_pagenation-go,
body.bili-space-page .vui_pagenation .vui_input {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-width: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* 按钮行:与主搜索页同款(全宽、gap 4、可横向滚动、隐藏滚动条) */
body.bili-space-page .vui_pagenation--btns {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
justify-content: flex-start !important;
align-items: center !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
gap: 4px !important;
overflow-x: auto !important;
overflow-y: hidden !important;
-webkit-overflow-scrolling: touch !important;
scrollbar-width: none !important;
-ms-overflow-style: none !important;
}
body.bili-space-page .vui_pagenation--btns::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
}
/* 单个按钮:数字 32x34、字号 13、圆角 4,与主搜索页一致 */
body.bili-space-page .vui_pagenation--btn {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
flex-shrink: 0 !important;
flex-grow: 0 !important;
width: auto !important;
min-width: 32px !important;
height: 34px !important;
line-height: 34px !important;
padding: 0 6px !important;
margin: 0 !important;
box-sizing: border-box !important;
white-space: nowrap !important;
font-size: 13px !important;
text-align: center !important;
border-radius: 4px !important;
}
/* 上一页 / 下一页:空间页原生 100x34,压回主搜索页的 61 宽 */
body.bili-space-page .vui_pagenation--btn-side {
min-width: 44px !important;
padding: 0 10px !important;
font-size: 13px !important;
}
body.bili-space-page .space-dynamic {
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
gap: 0 !important;
}
body.bili-space-page .space-dynamic__left {
order: 1 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: none !important;
padding: 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
position: static !important;
top: auto !important;
left: auto !important;
bottom: auto !important;
right: auto !important;
background: #f1f2f3 !important;
flex: 0 0 auto !important;
overflow: visible !important;
}
body.bili-space-page .space-dynamic__left .side-nav {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 auto !important;
box-sizing: border-box !important;
flex-wrap: wrap !important;
position: static !important;
}
body.bili-space-page .space-dynamic__left .side-nav__item {
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex: 0 0 auto !important;
width: auto !important;
min-width: 64px !important;
max-width: 100% !important;
height: 34px !important;
padding: 0 16px !important;
margin: 0 !important;
box-sizing: border-box !important;
border-radius: 17px !important;
background: #ffffff !important;
color: #18191c !important;
font-size: 13px !important;
cursor: pointer !important;
user-select: none !important;
white-space: nowrap !important;
position: static !important;
}
body.bili-space-page .space-dynamic__left .side-nav__item.active {
background: #00aeec !important;
color: #ffffff !important;
}
body.bili-space-page .space-dynamic__left .side-nav__item__main {
display: flex !important;
align-items: center !important;
justify-content: center !important;
gap: 4px !important;
width: auto !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
background: transparent !important;
}
body.bili-space-page .space-dynamic__left .side-nav__item__main-text {
color: inherit !important;
font-size: 13px !important;
font-weight: 500 !important;
line-height: 34px !important;
}
body.bili-space-page .space-dynamic__content {
order: 2 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
flex: 1 1 100% !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
}
body.bili-space-page .space-dynamic__right {
display: none !important;
visibility: hidden !important;
width: 0 !important;
max-width: 0 !important;
height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
flex: 0 0 0 !important;
position: absolute !important;
left: -9999px !important;
}
body.bili-space-page .space-dynamic-inner,
body.bili-space-page .space-dynamic-inner > .content,
body.bili-space-page .bili-dyn-list,
body.bili-space-page .bili-dyn-list__items {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-list__item {
padding: 0 8px 8px 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
float: none !important;
}
body.bili-space-page .bili-dyn-item {
position: relative !important;
background: #ffffff !important;
border: 1px solid #e3e5e7 !important;
border-radius: 8px !important;
padding: 12px 8px 0 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
display: block !important;
float: none !important;
}
body.bili-space-page .bili-dyn-item * {
max-width: 100% !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-item img,
body.bili-space-page .bili-dyn-item video,
body.bili-space-page .bili-dyn-item picture {
max-width: 100% !important;
height: auto !important;
}
body.bili-space-page .bili-dyn-item__main {
position: relative !important;
padding-left: 0 !important;
padding-right: 0 !important;
box-sizing: border-box !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
float: none !important;
}
body.bili-space-page .bili-dyn-item__avatar {
position: absolute !important;
left: 0 !important;
top: 0 !important;
width: 56px !important;
max-width: 56px !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-item__avatar .bili-dyn-avatar,
body.bili-space-page .bili-dyn-item__avatar .b-avatar,
body.bili-space-page .bili-dyn-item__avatar img {
width: 48px !important;
height: 48px !important;
max-width: 100% !important;
border-radius: 50% !important;
}
body.bili-space-page .bili-dyn-item__header {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 64px !important;
padding-right: 8px !important;
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-item__more,
body.bili-space-page .bili-dyn-more,
body.bili-space-page .bili-dyn-more__btn,
body.bili-space-page .bili-dyn-more__cascader {
display: none !important;
visibility: hidden !important;
}
body.bili-space-page .bili-dyn-content,
body.bili-space-page .bili-dyn-content__orig,
body.bili-space-page .bili-dyn-content__orig__major {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-card-video {
display: flex !important;
flex-direction: column !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-card-video__header {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
flex: 0 0 auto !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-card-video__cover {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
aspect-ratio: 16 / 9 !important;
box-sizing: border-box !important;
}
body.bili-space-page .bili-dyn-card-video__cover .b-img,
body.bili-space-page .bili-dyn-card-video__cover .b-img__inner,
body.bili-space-page .bili-dyn-card-video__cover img,
body.bili-space-page .bili-dyn-card-video__cover picture {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
aspect-ratio: 16 / 9 !important;
object-fit: cover !important;
display: block !important;
}
body.bili-space-page .bili-dyn-card-video__body {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
flex: 1 1 auto !important;
padding: 8px 0 0 0 !important;
box-sizing: border-box !important;
}
/* 投稿了视频:隐藏视频封面下方「框住标题/简介文字」的那条左侧半开口边框 */
body.bili-space-page .bili-dyn-card-video__body,
body.bili-space-page .bili-dyn-card-video__title,
body.bili-space-page .bili-dyn-card-video__desc {
border: none !important;
border-top: none !important;
border-right: none !important;
border-bottom: none !important;
border-left: none !important;
border-width: 0 !important;
border-style: none !important;
box-shadow: none !important;
outline: none !important;
}
/* 该边框也可能是 ::before / ::after 画的竖条,一并清掉 */
body.bili-space-page .bili-dyn-card-video__body::before,
body.bili-space-page .bili-dyn-card-video__body::after,
body.bili-space-page .bili-dyn-card-video__desc::before,
body.bili-space-page .bili-dyn-card-video__desc::after {
content: none !important;
display: none !important;
border: none !important;
background: none !important;
box-shadow: none !important;
}
body.bili-space-page .bili-dyn-card-video__title,
body.bili-space-page .bili-dyn-card-video__desc,
body.bili-space-page .bili-dyn-card-video__title .bili-ellipsis,
body.bili-space-page .bili-dyn-card-video__desc .bili-ellipsis { text-align: center !important; }
body.bili-space-page .bili-dyn-card-video__stat,
body.bili-space-page .bili-dyn-card-video__stat__item,
body.bili-space-page .bili-dyn-card-video__stat__item.danmaku {
display: none !important;
visibility: hidden !important;
height: 0 !important;
overflow: hidden !important;
margin: 0 !important;
padding: 0 !important;
}
body.bili-space-page .bili-dyn-item,
body.bili-space-page .bili-dyn-item * {
text-align: center !important;
}
/* 正文容器:只做内边距约束,绝不能隐藏(正文 .bili-dyn-content 就在它里面) */
body.bili-space-page .bili-dyn-item__body {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
}
/* 去掉卡片内的「转发 / 评论 / 点赞」数量行(整行隐藏,与动态一致) */
body.bili-space-page .bili-dyn-item__footer,
body.bili-space-page .bili-dyn-item__action,
body.bili-space-page .bili-dyn-action,
body.bili-space-page .bili-dyn-action.forward,
body.bili-space-page .bili-dyn-action.comment,
body.bili-space-page .bili-dyn-action.like {
display: none !important;
visibility: hidden !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* 隐藏该行后,卡片底部补回一点留白,避免内容紧贴卡片下边缘 */
body.bili-space-page .bili-dyn-item {
padding-bottom: 12px !important;
}
body.bili-space-page .bili-dyn-content__orig__major img,
body.bili-space-page .bili-dyn-content__orig__major picture,
body.bili-space-page .bili-dyn-content__orig__major .b-img {
margin-left: auto !important;
margin-right: auto !important;
display: block !important;
}
body.bili-space-page .bili-dyn-content__orig__major [class*="grid"],
body.bili-space-page .bili-dyn-content__orig__major [class*="pics"],
body.bili-space-page .bili-dyn-content__orig__major [class*="gallery"],
body.bili-space-page .bili-dyn-content__orig__major [class*="goods"],
body.bili-space-page .bili-dyn-content__orig__major [class*="commodity"],
body.bili-space-page .bili-dyn-content__orig__major [class*="card"] {
margin-left: auto !important;
margin-right: auto !important;
justify-content: center !important;
}
body.bili-space-page .bili-dyn-item__action {
flex: 1 1 0 !important;
width: auto !important;
max-width: none !important;
min-width: 0 !important;
box-sizing: border-box !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
body.bili-space-page .bili-dyn-action {
display: flex !important;
align-items: center !important;
justify-content: center !important;
width: 100% !important;
gap: 4px !important;
}
body.bili-space-page .space-upload {
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
gap: 0 !important;
}
body.bili-space-page .upload-sidenav {
order: 1 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: none !important;
/* v131.35:间距必须在容器「外面」用 margin,不能靠内部 padding-top。
按内部 padding 算的话,容器顶 160 紧贴 nav-bar 底 160,容器间距是 0。
padding-top 归零 + margin-top 8 后:容器顶 168、胶囊顶 168,
容器间距与视觉间距都是 8。 */
padding: 0 8px 8px 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
position: static !important;
flex: 0 0 auto !important;
overflow: visible !important;
background: #f1f2f3 !important;
/* v131.34:按用户选择改回不吸顶,随页面一起滚走。
吸顶虽能保证间距,但会把最上面的卡片遮住一部分;
改为 static 后卡片完整显示,胶囊距导航条 8px(自身 padding-top)。 */
position: static !important;
top: auto !important;
z-index: auto !important;
}
body.bili-space-page .upload-sidenav .side-nav {
display: flex !important;
flex-direction: row !important;
justify-content: center !important;
align-items: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
padding: 0 !important;
margin: 0 auto !important;
box-sizing: border-box !important;
flex-wrap: wrap !important;
position: static !important;
}
body.bili-space-page .upload-sidenav .side-nav__item {
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex: 0 0 auto !important;
width: auto !important;
min-width: 64px !important;
max-width: 100% !important;
height: 34px !important;
padding: 0 16px !important;
margin: 0 !important;
box-sizing: border-box !important;
border-radius: 17px !important;
background: #ffffff !important;
color: #18191c !important;
font-size: 13px !important;
cursor: pointer !important;
user-select: none !important;
white-space: nowrap !important;
position: static !important;
}
body.bili-space-page .upload-sidenav .side-nav__item.active {
background: #00aeec !important;
color: #ffffff !important;
}
body.bili-space-page .upload-sidenav .side-nav__item__main {
display: flex !important;
align-items: center !important;
justify-content: center !important;
gap: 4px !important;
width: auto !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
background: transparent !important;
}
body.bili-space-page .upload-sidenav .side-nav__item__main-text {
color: inherit !important;
font-size: 13px !important;
font-weight: 500 !important;
line-height: 34px !important;
}
body.bili-space-page .upload-content {
order: 2 !important;
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
flex: 1 1 100% !important;
padding: 0 8px 16px 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
overflow: visible !important;
position: static !important;
}
/* ------------------------------------------------------------
v131.30 投稿页:移除「TA的视频」,并让筛选胶囊与卡片等距
实测(11-01-27 探针):
.upload-sidenav[360x50] = padding 8 + 胶囊 34 + padding 8
.upload-content[360x3742] → .video[344x3734]
> .video-header[344x64](.video-header__top > .title「TA的视频」)
> .video-body[344x3582](卡片网格)
> .video-footer(分页器)
1) 隐藏「TA的视频」:直接收掉整个 .video-header(64 高),
只隐藏 .title 会留下 64px 空白,间距仍然对不上。
2) 间距对齐分页器:v131.24 已把分页器按钮距底定为 16px
(pagenation padding-bottom 8 + video-footer margin -8
+ upload-content padding-bottom 16)。
胶囊底 → 卡片顶要同样为 16px:
sidenav 自带 padding-bottom 8 + .video-body margin-top 8 = 16
------------------------------------------------------------ */
body.bili-space-page .upload-content .video-header,
body.bili-space-page .upload-content .video-header__top,
body.bili-space-page .upload-content .video-header .title,
body.bili-space-page .upload-content .video-header .sub-title {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-space-page .upload-content .video-body {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
/* v131.31:胶囊底 → 卡片顶 = sidenav padding-bottom 8 + 0 = 8
(与卡片间距一致。v131.30 的 8px 会让总间距变成 16) */
margin-top: 0 !important;
margin-bottom: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* v131.35:nav-bar 底 → 胶囊栏容器顶 = 8(容器外 margin)。
注意这条在后面,会覆盖前面的 margin: 0,必须写成 8。 */
body.bili-space-page .upload-sidenav {
margin-top: 8px !important;
margin-bottom: 0 !important;
padding-top: 0 !important;
}
/* v131.36 兜底:用「父 > 子:nth-of-type(1)」把特异性提到最高,
确保 margin-top 8 / padding-top 0 不被任何同名规则盖回去。 */
body.bili-space-page .space-upload > div.upload-sidenav:nth-of-type(1) {
margin-top: 8px !important;
margin-bottom: 0 !important;
padding-top: 0 !important;
}
body.bili-space-page .space-search > div.search-sidebar:nth-of-type(1) {
margin-top: 8px !important;
margin-bottom: 0 !important;
padding-top: 0 !important;
}
body.bili-space-page .lists-view-mode,
body.bili-space-page .video-mode-switcher,
body.bili-space-page .lists-view-mode__action {
display: none !important;
visibility: hidden !important;
}
body.bili-space-page .upload-content .video-list,
body.bili-space-page .upload-content .video-list.grid-mode,
body.bili-space-page .upload-content .video-list.hide-stat,
body.bili-space-page .video-list.grid-mode,
body.bili-space-page .video-list.hide-stat {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-gap: 8px !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
padding: 0 !important;
margin: 0 !important;
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
list-style: none !important;
align-items: start !important;
align-content: start !important;
background: transparent !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
overflow: visible !important;
grid-auto-rows: auto !important;
}
/* ------------------------------------------------------------
v131.16 「合集和系列」整页(route_listsIndex)左右边距对齐主页
结构:main.space-main.route_listsIndex
> .space-lists[360 满屏,无内边距]
> .lists-header[360] + .lists-content[360]
> .contet-list[360] > .video-list[360]
> .video-list__content[360,已是两列网格 gap8]
这一页此前没有命中任何边距规则,卡片 176 宽直接顶到屏幕边缘;
主页 .space-home > .content 是 padding: 0 8px 16px 8px,
这里给 .space-lists 同一组值,内容宽回到 344、卡片 168,与主页一致。
v131.17 修正:只补左右边距,不要动 position / padding-top。
.lists-header 是 sticky 定位(自带 top 偏移躲开吸顶的 navbar),
上一版给它写了 position: static,粘性失效后它就直接跑到
「主页 动态 投稿 合集和系列」那一排按键底下被压住了。
同理 padding-top 也不能清零。
------------------------------------------------------------ */
body.bili-space-page .space-lists {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
padding-bottom: 16px !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
overflow: visible !important;
}
body.bili-space-page .space-lists .lists-content,
body.bili-space-page .space-lists .contet-list,
body.bili-space-page .space-lists .video-list {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
/* 标题行同样只补左右,保留它自己的 sticky / top 偏移 */
body.bili-space-page .space-lists .lists-header {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
padding-bottom: 16px !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
/* v131.49 去掉「合集和系列」这一行大标题。
探针 09-28_17-45-34 实测:
main.route_listsIndex top=134(.space-lists mt=30)
> .space-lists
> .lists-header[344x50] top=134 bottom=184 pt=0 pb=16
> .title[120x34] top=134 bottom=168 text=合集和系列
> .lists-content[344x11707] top=184
.lists-header 里**只有 .title 一个子节点**,没有别的控件,
所以整块 display:none 即可,不需要单独去清 .title
(.title 是站内通用类名,单独选中反而容易误伤别的页面)。
隐藏后 .lists-content 直接顶到 main 的 134,
与 navbar 底部(104)之间保留 .space-lists 自带的 mt=30。
上面 v131.17 那条「不要动 .lists-header 的 position / padding-top」
的告诫在这里不适用了——整块都不显示了,sticky 也就无从谈起。 */
body.bili-space-page .space-lists > .lists-header {
display: none !important;
}
body.bili-space-page main.space-main.route_listsIndex
> .space-lists > .lists-header {
display: none !important;
}
body.bili-space-page .space-lists .lists-header .title {
display: none !important;
}
/* 标题行与卡片之间,沿用主页「合集·/系列·」的 20px */
body.bili-space-page .space-lists .video-list__content {
margin-top: 20px !important;
}
/* ------------------------------------------------------------
v131.18 合集详情页(route_listDetails,点进某个「合集·xxx」后)
结构:main.space-main.route_listDetails
> .space-list-details[360]
> .list-header[360x110](.title + .subtitle)
> .list-content[360x170]
> .list-video-item[59x110,桌面版一排放 5 个]
问题:整页无边距、卡片被压成 59 宽(封面只剩 33 高)。
改法:外层补 8px 左右边距(同主页 .space-home > .content),
.list-content 改两列网格,卡片回到 168x172(封面 95 + 信息区 77)。
注意:.list-header 同样是 sticky,这里不写 position / padding-top。
------------------------------------------------------------ */
body.bili-space-page .space-list-details {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 8px !important;
padding-right: 8px !important;
padding-bottom: 16px !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
overflow: visible !important;
}
body.bili-space-page .space-list-details .list-header {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
box-sizing: border-box !important;
float: none !important;
}
/* 标题「合集·xxx」与卡片之间 20px,和主页一致 */
body.bili-space-page .space-list-details .list-header .subtitle,
body.bili-space-page .space-list-details .list-header .meta {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin-bottom: 20px !important;
box-sizing: border-box !important;
}
/* v131.50 合集详情页:「合集 6个视频 9月14日更新」整行居中
探针 09-28_18-03-48 实测(route_listDetails):
.list-header[344x144] top=134 bottom=278 mb=22
> .title[344x68] (.back[20x20] + .name[316x68])mb=20
> .subtitle[344x20] top=222 **pos=relative** mb=20
> .meta[344x20] mb=20
> .stats[344x20] text=合集 6个视频 9月14日更新
三层盒子都已经是满宽 344,文字靠左只是因为默认 text-align。
所以这里**不改 display**(.subtitle 是 relative、.meta/.stats
可能是 flex,贸然改成 block 会把站内的行内排布打散),
只同时给两条居中通路:
text-align:center -> 命中普通块级 / 行内文本
justify-content:center -> 命中 flex 容器
两条互不干扰,谁生效取决于站内实际用的是哪种布局。 */
body.bili-space-page .space-list-details .list-header .subtitle,
body.bili-space-page .space-list-details .list-header .subtitle .meta,
body.bili-space-page .space-list-details .list-header .subtitle .meta .stats,
body.bili-space-page .space-list-details .list-header .meta,
body.bili-space-page .space-list-details .list-header .stats {
text-align: center !important;
justify-content: center !important;
}
/* 高特异性兜底(v131.36 套路) */
body.bili-space-page main.space-main.route_listDetails
> .space-list-details > .list-header > .subtitle > .meta > .stats {
text-align: center !important;
justify-content: center !important;
}
/* v131.50 顺带覆盖 .list-header 里除 .title 以外的任何直接子节点。
原因:探针算下来 .list-header 有 16px 对不上账——
.title 68 + mb 20 + .subtitle 20 + mb 20 = 128,
而 .list-header 实测 144 高,多出的 16px 在探针里找不到归属元素。
「默认 / 倒序」排序按键在这份探针里也完全查不到
(5 份探针全文 grep「排序 / 默认 / 倒序」均 0 命中),
很可能就是这块延迟渲染 / 未被探针遍历到的东西。
这条规则只写 text-align / justify-content,命中不了就完全无副作用,
命中了就顺手把它一起居中;真正的定位还要等新探针确认。 */
body.bili-space-page .space-list-details .list-header > *:not(.title) {
text-align: center !important;
justify-content: center !important;
}
/* v131.51 合集详情页:简介行「.desc」文字一半跑到屏幕外 + 居中
探针 09-28_18-14-58 实测(route_listDetails):
.list-header[344x210] top=134 bottom=344 mb=22
> .title[344x102] (.back[20x20] + .name[316x102])mb=20
> **.desc[677x20]** top=256 left=8 mb=12 ovf=hidden
> .subtitle[344x20] top=288(pos=relative)mb=20
真凶就是 .desc:它是站内 PC 版留下的**定宽 677px**,
在 360 的视口里从 left=8 一直伸到 685,右半截整个在屏幕外;
自身 overflow:hidden 又只给 20px 高,等于"一行 + 裁掉右边"。
(顺带结案:上一版探针里 .list-header 对不上账的那 16px,
就是这个 .desc —— 那份探针没有列出它,我当时推测是排序按键,
推错了,排序按键在 .subtitle 里,已由 v131.50 那条规则居中。)
改法:宽度收回 100%(344),高度放开让它按 344 宽自动换行
(这句 21 个字,677px 一行 -> 344px 两行),
再解掉站内的单行省略号机制(nowrap / ellipsis / line-clamp),
最后 text-align + justify-content 双通路居中。 */
body.bili-space-page .space-list-details .list-header .desc,
body.bili-space-page .space-list-details .list-header > .desc {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 0 12px 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
float: none !important;
line-height: 20px !important;
text-align: center !important;
justify-content: center !important;
white-space: normal !important;
word-break: break-word !important;
overflow-wrap: anywhere !important;
text-overflow: clip !important;
-webkit-line-clamp: unset !important;
line-clamp: unset !important;
overflow: visible !important;
background: transparent !important;
}
/* 高特异性兜底(v131.36 套路):站内这条定宽大概率写在选择器里,
用完整链路压过去,确保 677px 一定被 100% 顶掉。 */
body.bili-space-page main.space-main.route_listDetails
> .space-list-details > .list-header > .desc {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
max-height: none !important;
text-align: center !important;
white-space: normal !important;
overflow: visible !important;
}
body.bili-space-page .space-list-details .list-content {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-auto-rows: auto !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
align-items: start !important;
align-content: start !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
float: none !important;
overflow: visible !important;
}
/* 桌面版给 item 算的是 5 列宽(59),这里放开让它吃满格子 */
body.bili-space-page .space-list-details .list-video-item {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
position: static !important;
transform: none !important;
left: auto !important;
top: auto !important;
float: none !important;
flex: 0 1 auto !important;
}
/* ============================================================
========== 通用两列视频卡片 ==========
============================================================ */
body.bili-home-page .container .bili-video-card,
body.bili-home-page .container .bili-live-card,
body.bili-search-page .bili-video-card,
body.bili-search-page .bili-live-card,
body.bili-search-page .search-video-card,
body.bili-space-page .bili-video-card,
body.bili-space-page .bili-live-card {
--cover-radio: 56.25% !important;
--title-font-size: 13px !important;
--title-line-height: 18px !important;
--title-padding-right: 0 !important;
--no-interest-entry-size: 22px !important;
--info-margin-top: 6px !important;
--subtitle-font-size: 11px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: none !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
display: block !important;
align-self: start !important;
background: #ffffff !important;
border: none !important;
border-radius: 8px !important;
box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
overflow: hidden !important;
box-sizing: border-box !important;
position: relative !important;
float: none !important;
}
body.bili-home-page .container .bili-video-card__wrap,
body.bili-home-page .container .bili-live-card__wrap,
body.bili-search-page .bili-video-card__wrap,
body.bili-search-page .bili-live-card__wrap,
body.bili-space-page .bili-video-card__wrap,
body.bili-space-page .bili-live-card__wrap {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
display: block !important;
background: transparent !important;
border: none !important;
border-radius: 8px !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
body.bili-home-page .bili-video-card__image--wrap,
body.bili-home-page .bili-video-card__image--link,
body.bili-home-page .v-img.bili-video-card__cover,
body.bili-home-page .bili-video-card .b-img,
body.bili-home-page .bili-video-card picture,
body.bili-search-page .bili-video-card__image--wrap,
body.bili-search-page .bili-video-card__image--link,
body.bili-search-page .v-img.bili-video-card__cover,
body.bili-search-page .bili-video-card .b-img,
body.bili-search-page .bili-video-card picture,
body.bili-space-page .bili-video-card__image--wrap,
body.bili-space-page .bili-video-card__image--link,
body.bili-space-page .v-img.bili-video-card__cover,
body.bili-space-page .bili-video-card .b-img,
body.bili-space-page .bili-video-card picture {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border-radius: 8px 8px 0 0 !important;
overflow: hidden !important;
position: relative !important;
display: block !important;
float: none !important;
box-sizing: border-box !important;
}
body.bili-home-page .bili-video-card__image--wrap img,
body.bili-home-page .bili-video-card__image--link img,
body.bili-home-page .v-img.bili-video-card__cover img,
body.bili-home-page .bili-video-card .b-img > img,
body.bili-home-page .bili-video-card .b-img__inner,
body.bili-home-page .bili-video-card picture img,
body.bili-search-page .bili-video-card__image--wrap img,
body.bili-search-page .bili-video-card__image--link img,
body.bili-search-page .v-img.bili-video-card__cover img,
body.bili-search-page .bili-video-card .b-img > img,
body.bili-search-page .bili-video-card .b-img__inner,
body.bili-search-page .bili-video-card picture img,
body.bili-space-page .bili-video-card__image--wrap img,
body.bili-space-page .bili-video-card__image--link img,
body.bili-space-page .v-img.bili-video-card__cover img,
body.bili-space-page .bili-video-card .b-img > img,
body.bili-space-page .bili-video-card .b-img__inner,
body.bili-space-page .bili-video-card picture img {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
aspect-ratio: 16 / 9 !important;
object-fit: cover !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
body.bili-home-page .bili-video-card__image--wrap picture > *,
body.bili-search-page .bili-video-card__image--wrap picture > *,
body.bili-space-page .bili-video-card__image--wrap picture > * {
width: 100% !important;
max-width: 100% !important;
height: auto !important;
padding: 0 !important;
margin: 0 !important;
display: block !important;
box-sizing: border-box !important;
}
body.bili-home-page .bili-video-card__info,
body.bili-home-page .bili-live-card__info,
body.bili-home-page .video-info,
body.bili-search-page .bili-video-card__info,
body.bili-search-page .bili-live-card__info,
body.bili-search-page .video-info,
body.bili-space-page .bili-video-card__details,
body.bili-space-page .bili-video-card__info,
body.bili-space-page .bili-live-card__info {
width: 100% !important;
padding: 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
text-align: center !important;
display: block !important;
height: auto !important;
max-height: none !important;
min-height: 0 !important;
background: transparent !important;
}
body.bili-home-page .bili-video-card__info--tit,
body.bili-home-page .bili-video-card__info--tit a,
body.bili-home-page .bili-video-card h3,
body.bili-home-page .bili-video-card h3 a,
body.bili-home-page .bili-live-card__info--tit,
body.bili-home-page .bili-live-card__info--tit a,
body.bili-search-page .bili-video-card__info--tit,
body.bili-search-page .bili-video-card__info--tit a,
body.bili-search-page .bili-video-card h3,
body.bili-search-page .bili-video-card h3 a,
body.bili-search-page .bili-live-card__info--tit,
body.bili-search-page .bili-live-card__info--tit a,
body.bili-space-page .bili-video-card__title,
body.bili-space-page .bili-video-card__title > a,
body.bili-space-page .bili-video-card__title .bili-ellipsis,
body.bili-space-page .bili-video-card__info--tit,
body.bili-space-page .bili-video-card__info--tit a {
display: -webkit-box !important;
-webkit-line-clamp: 2 !important;
-webkit-box-orient: vertical !important;
overflow: hidden !important;
text-align: center !important;
font-size: 13px !important;
line-height: 18px !important;
min-height: 36px !important;
max-height: 36px !important;
color: #18191c !important;
font-weight: 500 !important;
margin: 0 !important;
padding: 0 !important;
word-break: break-all !important;
width: 100% !important;
}
body.bili-home-page .bili-video-card__info--bottom,
body.bili-home-page .bili-video-card__info--owner,
body.bili-home-page .bili-video-card__info--stat,
body.bili-search-page .bili-video-card__info--bottom,
body.bili-search-page .bili-video-card__info--owner,
body.bili-search-page .bili-video-card__info--stat,
body.bili-space-page .bili-video-card__info--bottom,
body.bili-space-page .bili-video-card__info--owner,
body.bili-space-page .bili-video-card__stats,
body.bili-space-page .bili-video-card__subtitle,
body.bili-space-page .bili-video-card__date {
display: flex !important;
justify-content: center !important;
align-items: center !important;
text-align: center !important;
width: 100% !important;
margin-top: 4px !important;
margin-left: auto !important;
margin-right: auto !important;
padding: 0 !important;
height: 21px !important;
min-height: 21px !important;
}
body.bili-home-page .bili-watch-later,
body.bili-home-page [class*="watch-later"],
body.bili-home-page [class*="watchlater"],
body.bili-home-page [class*="add-to-watch-later"],
body.bili-home-page [class*="watch-later-btn"],
body.bili-home-page .bili-video-card__mask,
body.bili-search-page .bili-watch-later,
body.bili-search-page [class*="watch-later"],
body.bili-search-page [class*="watchlater"],
body.bili-search-page [class*="add-to-watch-later"],
body.bili-search-page [class*="watch-later-btn"],
body.bili-search-page .bili-video-card__mask,
body.bili-space-page .bili-card-watch-later,
body.bili-space-page .bili-video-card .bili-watch-later,
body.bili-space-page .bili-video-card [class*="watch-later"] {
display: none !important;
visibility: hidden !important;
}
/* v131.21 投稿页 / 搜索页的卡片外观改为与主页卡片完全一致。
主页和投稿页用的是同一个 .bili-video-card 组件(168x172,
封面 95 + 信息区 77,标题 152x36,副标题 152x21),DOM 尺寸本来就一样,
差的只是这条规则把投稿卡的背景/圆角/阴影全清掉了,看起来比主页卡"素"。
这里只保留 border:none(v131.6 要去掉的投稿卡文字框边框),
背景、圆角、阴影统统交还给原生 -> 与主页同源、必然一致。
搜索页的卡片同样包在 .upload-video-card 里,一并生效。 */
body.bili-space-page .upload-video-card .bili-video-card,
body.bili-space-page .upload-video-card .bili-video-card__wrap {
border: none !important;
overflow: hidden !important;
}
/* ============================================================
v131.13 UP主主页三处调整
============================================================ */
/* ---------- 1) 隐藏「收藏夹 ·N」整块 ----------
结构:section.home-section > .section-wrap.fav-section
> .section-wrap__header + .section-wrap__content
> .fav-section__content > .items
用 :has() 把外层 section 一并收掉,避免留下空壳占位。 */
/* ---------- 1c) 隐藏「最近点赞的视频」整块(v131.22)----------
探针实测(洛克宅桑主页):
section.home-section:nth-of-type(8) > .section-wrap.like-section[344x964]
> .section-wrap__header(标题「最近点赞的视频」)
> .section-wrap__content > .like-section__content[344x890] > .items
用 :has() 连带外层 section,避免只收内层留下空壳。 */
body.bili-space-page .route_home .section-wrap.like-section,
body.bili-space-page .route_home .like-section__content,
body.bili-space-page .route_home .home-section:has(> .section-wrap.like-section) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* ---------- 1b) 隐藏「订阅追番 ·N」整块(v131.21)----------
与收藏夹同一套路:按区块类名收掉,并用 :has() 连带外层 section。
站内这一块的类名在 bangumi / sub / follow 之间换过,
这里三种写法都写上,任一命中即隐藏。 */
body.bili-space-page .route_home .section-wrap.bangumi-section,
body.bili-space-page .route_home .bangumi-section__content,
body.bili-space-page .route_home .section-wrap.sub-section,
body.bili-space-page .route_home .sub-section__content,
body.bili-space-page .route_home .section-wrap.follow-section,
body.bili-space-page .route_home .follow-section__content,
body.bili-space-page .route_home .home-section:has(> .section-wrap.bangumi-section),
body.bili-space-page .route_home .home-section:has(> .section-wrap.sub-section),
body.bili-space-page .route_home .home-section:has(> .section-wrap.follow-section) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
overflow: hidden !important;
}
body.bili-space-page .route_home .section-wrap.fav-section,
body.bili-space-page .route_home .fav-section__content,
body.bili-space-page .route_home .home-section:has(> .section-wrap.fav-section) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* ---------- 2) 专栏卡片 -> 与视频卡片完全一致 ----------
视频卡实测:168x172 = 封面 95(16:9) + 信息区 77
信息区 = padding8 + 标题36(13px/18px 两行) + 间距4 + 副标题21 + padding8
专栏卡原为 168x166(封面 95 + 底部 61,标题 15px/22.5px 三行),
这里把外框/圆角/阴影/字号行高全部对齐视频卡,并把信息区锁成 77px,
保证两列网格里两种卡片等高、标题基线一致。 */
body.bili-space-page .route_home .article-section .article-list {
margin-top: 20px !important;
}
body.bili-space-page .article-card {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 172px !important;
max-height: 172px !important;
min-height: 172px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
display: block !important;
position: relative !important;
float: none !important;
background: #ffffff !important;
border: none !important;
border-radius: 8px !important;
box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
overflow: hidden !important;
}
/* 封面区:原生是用 padding-top 比例盒(或定高 95px)撑开、
封面 绝对定位铺满的。上一版在这里写了
height:auto + padding:0,把比例盒清零 -> 封面塌成 0 高,
文字就顶到了卡片最上面。这里只改外观,不再碰 height/padding,
比例交给原生(168x95 本身就是 16:9)。 */
body.bili-space-page .article-card__top {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
/* 兜底:高度算不出来时用 16:9 撑开(定高或比例盒在时不起作用) */
aspect-ratio: 16 / 9 !important;
position: relative !important;
float: none !important;
border: none !important;
border-radius: 8px 8px 0 0 !important;
overflow: hidden !important;
background: transparent !important;
}
body.bili-space-page .article-card__cover {
display: block !important;
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
border: none !important;
border-radius: 8px 8px 0 0 !important;
overflow: hidden !important;
background: transparent !important;
}
/* 缩略图兜底:万一原生高度没算出来,用 16:9 撑住,
图片铺满并按 cover 裁切,保证任何情况下都有封面 */
body.bili-space-page .article-card__top > .article-card__cover,
body.bili-space-page .article-card__top .bili-cover-card__thumbnail {
position: absolute !important;
inset: 0 !important;
width: 100% !important;
height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .article-card__top img,
body.bili-space-page .article-card__cover img,
body.bili-space-page .article-card__top .b-img__inner {
width: 100% !important;
max-width: 100% !important;
height: 100% !important;
object-fit: cover !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
border-radius: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .article-card__bottom {
width: 100% !important;
height: 77px !important;
min-height: 77px !important;
max-height: 77px !important;
margin: 0 !important;
padding: 8px !important;
box-sizing: border-box !important;
background: transparent !important;
display: flex !important;
flex-direction: column !important;
justify-content: center !important;
align-items: stretch !important;
text-align: center !important;
overflow: hidden !important;
}
body.bili-space-page .article-card__bottom .title {
display: -webkit-box !important;
-webkit-line-clamp: 2 !important;
-webkit-box-orient: vertical !important;
overflow: hidden !important;
text-align: center !important;
width: 100% !important;
font-size: 13px !important;
line-height: 18px !important;
min-height: 36px !important;
max-height: 36px !important;
color: #18191c !important;
font-weight: 500 !important;
margin: 0 !important;
padding: 0 !important;
word-break: break-all !important;
text-decoration: none !important;
}
/* 标题内层再套了一层 .vui_ellipsis.multi-mode,
让它退化为普通内联文本,避免两层 clamp 叠出额外高度 */
body.bili-space-page .article-card__bottom .title > * {
display: inline !important;
font-size: 13px !important;
line-height: 18px !important;
color: #18191c !important;
font-weight: 500 !important;
-webkit-line-clamp: unset !important;
-webkit-box-orient: unset !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
text-align: center !important;
white-space: normal !important;
}
/* ---------- 3) 顶部 tab 蓝色位置条:改为跟随选中项自身定位 ----------
原因:脚本用 fixSpaceNavTabs() 把「收藏夹/订阅」等 tab 设为 display:none,
站内那条蓝色条是按 tab 序号/旧布局算出来的绝对定位元素,
隐藏若干 tab 后算出的 left 就对不上了(每次刷新还不一定一样)。
做法:隐藏所有非 的兄弟节点(即那条 JS 定位的滑动条),
改由选中项自身的 ::after 画线,位置永远等于该项实际位置。 */
body.bili-space-page .nav-tab {
position: relative !important;
}
body.bili-space-page .nav-tab > *:not(a) {
display: none !important;
visibility: hidden !important;
width: 0 !important;
height: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
}
body.bili-space-page .nav-tab::before,
body.bili-space-page .nav-tab::after,
body.bili-space-page .nav-tab > a.nav-tab__item::before {
content: none !important;
display: none !important;
}
body.bili-space-page .nav-tab > a.nav-tab__item {
position: relative !important;
}
body.bili-space-page .nav-tab > a.nav-tab__item::after {
content: '' !important;
display: block !important;
position: absolute !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: auto !important;
min-width: 0 !important;
height: 3px !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
border-radius: 2px !important;
transform: none !important;
transition: none !important;
background: transparent !important;
}
body.bili-space-page .nav-tab > a.nav-tab__item.active::after,
body.bili-space-page .nav-tab > a.nav-tab__item.router-link-exact-active::after {
background: #00aeec !important;
}
body.bili-space-page .nav-tab > a.nav-tab__item.active,
body.bili-space-page .nav-tab > a.nav-tab__item.router-link-exact-active {
color: #00aeec !important;
}
/* ---------- 4a) 投稿 → 图文:筛选栏「全部图文 / 专栏 / 动态」上下间距 8px ----------
v131.42 结构(探针 09-27_18-12-07 实测,route_uploadOpus):
.upload-content[360x2422](脚本设的 padding: 0 8px 16px)
> .opus[344x2406]
> .opus-header[344x34](全部图文 专栏 动态)
> .opus-header__top[344x34] > .content-filter
> .content-tab(.active = 全部图文 / 专栏 / 动态)
> .opus-body[344x2222] > .opus-feed > .masonry_grid_v2
目标(与卡片间距 8px 一致):
① 胶囊栏「视频 图文 音频」底 → 筛选栏顶 = 8
= upload-sidenav 自带的 padding-bottom 8
+ .opus / .opus-header 的 margin-top 归零
② 筛选栏底 → 卡片顶 = 8
= .opus-header margin-bottom 8 + .opus-body margin-top 归零
站内原生在 header 与 body 之间留了很大空档(旧探针里
.opus 2406 − header 34 − body 2222 = 150),这里一并归零。
------------------------------------------------------------ */
body.bili-space-page .opus {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* v131.43 修正下边距:v131.42 把 .opus-header 和它的子元素
.opus-header__top 都设了 margin-bottom: 8px,父子两层嵌套叠加
-> 实际间距 16px。这里只保留外层 .opus-header 一个 8,
内层 __top 的 margin 全部归零。 */
/* v131.44 下边距仍偏高 -> 说明 margin 不是唯一来源。
既然 header 内部可能还挂着别的子节点(或站内给它留了固有高度),
这里不再猜内容,直接把「筛选栏这一行的可见高度」锁死为 34px
(探针实测筛选胶囊就是 34 高)+ overflow:hidden 裁掉多余,
下方间距就恒等于 margin-bottom 8px,与内容多寡无关。 */
body.bili-space-page .opus-header {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 34px !important;
min-height: 34px !important;
max-height: 34px !important;
margin: 0 0 8px 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
body.bili-space-page .opus-header__top {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 34px !important;
min-height: 34px !important;
max-height: 34px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
/* v131.46 筛选栏整行居中(纯 CSS,不用 JS 量宽度)。
探针 09-28_17-02-40 实测:.content-filter[344x34] 内三个
.content-tab 分别 130 / 82 / 48,gap 8 -> 内容总宽 276,
右侧空 68,故为左对齐(left 依次 8 / 146 / 236)。
只加 justify-content:center 即可让 276 在 344 内左右各留 34,
不动 tab 自身宽度 / padding / flex,避免连带改变胶囊外观。 */
body.bili-space-page .content-filter {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
justify-content: center !important;
gap: 8px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 34px !important;
min-height: 34px !important;
max-height: 34px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
body.bili-space-page .content-tab {
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* v131.46 兜底:沿用 v131.36 的思路,把完整链路写进选择器抬高特异性,
防止站内晚加载的同权重 !important 规则把居中顶掉。 */
body.bili-space-page main.space-main .upload-content .opus
> .opus-header > .opus-header__top > .content-filter {
justify-content: center !important;
}
/* ---------- 4a-2) 投稿 → 图文:筛选栏竖条居中 + 文字缩小 ----------
v131.47 探针 09-28_17-15-03 实测(居中已生效):
.content-filter[344x34](justify-content:center 生效)
> .content-tab[130x24] left=42 全部图文
> .content-tab.active[82x24] left=180 专栏
> .content-tab[48x24] left=270 动态
竖条在探针里查不到——探针只遍历真实元素,竖条是 .content-tab 的
伪元素。但宽度把它暴露了:「动态」是最后一个胶囊、身后没有竖条,
48 = 2 字 + 左右内边距;「专栏」2 字却占 82,「全部图文」4 字占 130,
两者都比纯文字多出约 34px。这 34px 就是**在文档流里**的竖条
(约 1px 线 + 左右各 16px 外边距),它长在胶囊内部右侧。
于是「文字 → 竖条」只有 16,而「竖条 → 下一个胶囊的文字」是
16 + 我们设的 gap 8 + 对方内边距 —— 竖条自然偏向左边那个按键,
这正是用户看到的不平分。
解法(依旧纯 CSS):
① 先把站内挂在 ::before / ::after 上的竖条全部停掉,
让胶囊宽度回归纯文字宽度;
② 竖条由我们自己用 ::after 重画,position:absolute +
left:100% + margin-left:3.5px —— 即落在 8px 间隙的正中
((8 − 1) / 2 = 3.5),与左右两个按键严格等距;
③ 字号 14 → 12,行高锁 24 保持胶囊高度与垂直居中不变。
绝对定位的竖条不占文档流,所以 gap 就是纯粹的文字间距,
整行仍由 .content-filter 的 justify-content:center 居中。
------------------------------------------------------------ */
body.bili-space-page .content-filter > .content-tab {
position: relative !important;
height: 24px !important;
min-height: 24px !important;
max-height: 24px !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
box-sizing: border-box !important;
font-size: 12px !important;
line-height: 24px !important;
flex: 0 0 auto !important;
}
/* ① 停掉站内自绘的竖条(两个伪元素都清,避免漏网或重复) */
body.bili-space-page .content-filter > .content-tab::before {
display: none !important;
content: none !important;
}
body.bili-space-page .content-filter > .content-tab::after {
display: none !important;
content: none !important;
}
/* ② 我们自己画:只在非最后一个胶囊的右侧、8px 间隙正中 */
body.bili-space-page .content-filter > .content-tab:not(:last-child)::after {
display: block !important;
content: '' !important;
position: absolute !important;
top: 50% !important;
left: 100% !important;
right: auto !important;
width: 1px !important;
height: 10px !important;
margin: 0 0 0 3.5px !important;
padding: 0 !important;
border: none !important;
border-radius: 0 !important;
transform: translateY(-50%) !important;
background: #e5e9ef !important;
}
/* 高特异性兜底:与 v131.36 / v131.46 同一套路,
防站内晚加载的同权重 !important 把上面这组顶掉。 */
body.bili-space-page main.space-main .upload-content .opus
> .opus-header > .opus-header__top > .content-filter > .content-tab {
position: relative !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
font-size: 12px !important;
line-height: 24px !important;
}
/* v131.43:下游这一串的上边距全部归零,
下边距只由 .opus-header 那一个 8px 提供,避免任何一处再叠加。 */
body.bili-space-page .opus-body {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .opus-body .opus-feed,
body.bili-space-page .opus-body .opus-feed .masonry_grid_v2,
body.bili-space-page .opus-body .opus-feed .masonry_grid_v2 > .container,
body.bili-space-page .opus-body .opus-feed .masonry_grid_v2 > .container > .item {
margin-top: 0 !important;
padding-top: 0 !important;
min-height: 0 !important;
box-sizing: border-box !important;
}
/* v131.44 兜底:瀑布流是 JS 布局,站内常给容器留 min-height /
给首个 item 写 transform 偏移。这里把首行之前的一切偏移清掉。 */
body.bili-space-page .opus-body .opus-feed .masonry_grid_v2 > .container > .item:first-child,
body.bili-space-page .opus-body .opus-feed .masonry_grid_v2 > .container > .item:nth-of-type(1) {
margin-top: 0 !important;
padding-top: 0 !important;
transform: none !important;
translate: none !important;
}
/* ---------- 4) 投稿 → 图文:瀑布流改两列网格,卡片对齐主页专栏卡 ----------
结构:.opus-feed > .masonry_grid_v2 > .container[814 宽,JS 瀑布流]
> .item(绝对定位 + transform) > .opus-card > .opus-card--with-cover
> [a.opus-card__cover(缩略图 + stats), a.opus-card__title]
原卡 189x187(封面 142 + 标题 46),瀑布流列宽由 JS 算。
(!important 的作者样式优先级高于站内 JS 写在 style 属性里的普通声明,
所以 transform / position / width 都能直接压住。) */
/* 外层只做"满宽容器",绝不能再设成网格:
一旦 .masonry_grid_v2 也是两列网格,它唯一的子元素 .container
就会变成占一列的网格项,宽度掉到 (344-8)/2 = 168,
卡片再被挤成 80x172,整块内容就都堆在屏幕左半边了。 */
body.bili-space-page .opus-feed .masonry_grid_v2 {
display: block !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
position: static !important;
overflow: visible !important;
}
body.bili-space-page .opus-feed .masonry_grid_v2 > .container {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
grid-auto-rows: auto !important;
gap: 8px !important;
row-gap: 8px !important;
column-gap: 8px !important;
align-items: start !important;
align-content: start !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
position: static !important;
overflow: visible !important;
list-style: none !important;
}
body.bili-space-page .opus-feed .masonry_grid_v2 > .container > .item {
position: static !important;
transform: none !important;
translate: none !important;
left: auto !important;
top: auto !important;
right: auto !important;
bottom: auto !important;
inset: auto !important;
width: auto !important;
max-width: 100% !important;
min-width: 0 !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
display: block !important;
visibility: visible !important;
opacity: 1 !important;
float: none !important;
}
/* 卡片本体:与主页专栏卡同一套外观(白底 / 8px 圆角 / 同一条阴影 / 172 高) */
body.bili-space-page .opus-card,
body.bili-space-page .opus-card--with-cover {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
height: 172px !important;
min-height: 172px !important;
max-height: 172px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
display: block !important;
position: relative !important;
float: none !important;
background: #ffffff !important;
border: none !important;
border-radius: 8px !important;
box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
overflow: hidden !important;
}
body.bili-space-page .opus-card__cover {
display: block !important;
position: relative !important;
float: none !important;
width: 100% !important;
max-width: 100% !important;
height: 95px !important;
min-height: 95px !important;
max-height: 95px !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
border: none !important;
border-radius: 8px 8px 0 0 !important;
overflow: hidden !important;
background: transparent !important;
}
body.bili-space-page .opus-card__cover > .bili-cover-card__thumbnail,
body.bili-space-page .opus-card__cover > a.bili-cover-card__thumbnail {
position: absolute !important;
inset: 0 !important;
width: 100% !important;
height: 100% !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
body.bili-space-page .opus-card__cover img,
body.bili-space-page .opus-card__cover .b-img__inner {
width: 100% !important;
max-width: 100% !important;
height: 100% !important;
object-fit: cover !important;
display: block !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
border-radius: 0 !important;
box-sizing: border-box !important;
}
/* 标题区:高度仍是 77px(= 卡片 172 − 封面 95),但内部不再留白。
v131.48 探针 09-28_17-02-40 实测:
a.opus-card__title[168x77](pt 8 / pb 8,overflow hidden)
> div.vui_ellipsis.multi-mode[152x36] ← 只有这一个子节点
关键差异:别的页面卡片(主页 / 投稿视频 / 专栏)标题下方还有一行
日期·播放量之类的元信息,所以 77px 里必须给那行留位置;
而图文卡的标题盒里**只有文字**,没有任何元信息行,
旧规则照抄 77px 结构 + 2 行截断,就白扔掉了
77 − 8×2 − 36 = 25px 的空白。
可用文字高度 = 77 − 上下 padding 8×2 = 61px:
2 行 × 18 = 36(旧,浪费 25)
3 行 × 20 = 60(新,只剩 1px 余量,几乎填满)
4 行 × 18 = 72 > 61(放不下,会被 overflow 裁掉半行)
所以取 3 行,并把行高从 18 提到 20 —— 字号仍是 13px 不变,
多出的 2px 行距既补足高度,也让三行不至于挤在一起。 */
body.bili-space-page .opus-card__title {
display: block !important;
width: 100% !important;
max-width: 100% !important;
height: 77px !important;
min-height: 77px !important;
max-height: 77px !important;
padding: 8px !important;
margin: 0 !important;
box-sizing: border-box !important;
text-align: center !important;
text-decoration: none !important;
background: transparent !important;
overflow: hidden !important;
}
body.bili-space-page .opus-card__title > * {
display: -webkit-box !important;
-webkit-line-clamp: 3 !important;
line-clamp: 3 !important;
-webkit-box-orient: vertical !important;
overflow: hidden !important;
text-align: center !important;
width: 100% !important;
font-size: 13px !important;
line-height: 20px !important;
min-height: 60px !important;
max-height: 60px !important;
color: #18191c !important;
font-weight: 500 !important;
margin: 0 !important;
padding: 0 !important;
word-break: break-all !important;
white-space: normal !important;
}
/* v131.48 兜底:站内 .vui_ellipsis.multi-mode 自己带一套
line-clamp / max-height(探针里它被压成 152x36 就是这套在起作用),
用完整链路抬特异性,确保 3 行 / 60px 压得住。 */
body.bili-space-page .opus-card .opus-card--with-cover
> a.opus-card__title > .vui_ellipsis.multi-mode {
display: -webkit-box !important;
-webkit-line-clamp: 3 !important;
line-clamp: 3 !important;
-webkit-box-orient: vertical !important;
overflow: hidden !important;
width: 100% !important;
max-width: 100% !important;
height: 60px !important;
min-height: 60px !important;
max-height: 60px !important;
font-size: 13px !important;
line-height: 20px !important;
text-align: center !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
word-break: break-all !important;
white-space: normal !important;
text-overflow: ellipsis !important;
}
/* ---------- 4a-3) 投稿 → 图文 → 专栏:隐藏封面底部的播放量浮层 ----------
v131.52 探针 09-28_18-44-13 实测(route_uploadOpus,专栏 tab):
.opus-collection[344x209] mb=30
> .opus-collection-wrap[344x208]
> .opus-collection-list[344x208] pb=30 ← 一行 5 张
> .upload-opus-collection-card[51x178] ×5
> .upload-opus-collection-card__top[51x68]
> a.upload-opus-collection-card__cover[51x68]
(pt=68.4062px,用 padding 撑封面比例)
> .bili-cover-card__thumbnail[51x68](absolute)
> **.bili-cover-card__stats[51x34]**
(absolute z=2,pt=14 pb=4,top=230→264)
text = 30万 1篇专栏 / 111.7万 4篇专栏 …
> .upload-opus-collection-card__bottom[51x74]
(a.title[51x44] + .subtitle[51x26])
用户要去掉的「眼睛图标 30万 / 眼睛图标 111.7万」就是
.bili-cover-card__stats 这层浮在封面底部的半透明条。
⚠ 一个硬限制:探针显示 .bili-cover-card__stats **没有任何子元素**,
「30万」和「1篇专栏」是同一个 div 里的两串文本节点
(眼睛图标走伪元素 / 图标字体),CSS 能选到的最小粒度就是这个
div 整体 —— 没法只挑出播放量那一串而留下「N篇专栏」。
所以这里整层 display:none,「N篇专栏」会一并消失。
真要只留「N篇专栏」,就只能上 JS 遍历文本节点,与"尽量用 CSS"相悖。
封面本体不受影响:比例是靠 a 上的 padding-top:68.4062px 撑的,
与 stats 无绝对定位依赖,隐藏后封面不会塌陷。
作用域严格锁在 .upload-opus-collection-card 内 ——
全部图文 tab 的 .opus-card 封面同样挂着 .bili-cover-card__stats
(显示 379 / 420 之类播放量),那处用户没要求动,绝不能误伤。
------------------------------------------------------------ */
body.bili-space-page .opus-collection-list
.upload-opus-collection-card .bili-cover-card__stats {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
}
body.bili-space-page .upload-opus-collection-card__cover
> .bili-cover-card__stats {
display: none !important;
}
/* 高特异性兜底(v131.36 套路):完整链路压过去,
防站内晚加载的同权重 !important 把浮层放回来。 */
body.bili-space-page main.space-main.route_uploadOpus .opus-collection
> .opus-collection-wrap > .opus-collection-list
> .upload-opus-collection-card > .upload-opus-collection-card__top
> a.upload-opus-collection-card__cover > .bili-cover-card__stats {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
}
`;
root.appendChild(style);
}
const PAGE_CLASS_RULES = [
{ test: isSearchPage, cls: ['bili-search-page'] },
{ test: isTBiliDynamic, cls: ['bili-dynamic-page'] },
{ test: isOpusPage, cls: ['bili-opus-page'] },
{ test: isHome, cls: ['bili-home-page'] },
{ test: isSpacePage, cls: ['bili-space-page'] },
// 播放列表页:额外带上 bili-video-page,直接复用视频页的全部优化
{ test: isListPage, cls: ['bili-video-page', 'bili-list-page'] },
{ test: isVideoPage, cls: ['bili-video-page'] },
{ test: isBangumiPage, cls: ['bili-bangumi-page'] }
];
const ALL_PAGE_CLASSES = [
'bili-search-page', 'bili-dynamic-page', 'bili-opus-page', 'bili-home-page',
'bili-space-page', 'bili-video-page', 'bili-list-page', 'bili-bangumi-page'
];
function currentPageClasses() {
for (let i = 0; i < PAGE_CLASS_RULES.length; i++) {
if (PAGE_CLASS_RULES[i].test()) return PAGE_CLASS_RULES[i].cls;
}
return [];
}
function syncPageClass() {
if (!document.body) return false;
const want = currentPageClasses();
const cl = document.body.classList;
ALL_PAGE_CLASSES.forEach(c => { if (want.indexOf(c) === -1) cl.remove(c); });
want.forEach(c => cl.add(c));
return true;
}
function applyPageClassEarly() {
if (!syncPageClass()) {
const obs = new MutationObserver(() => {
if (syncPageClass()) obs.disconnect();
});
obs.observe(document.documentElement, { childList: true, subtree: true });
}
// 站内跳转(如 /list/ 与 /video/ 互跳)时同步页面 class
window.addEventListener('popstate', syncPageClass);
['pushState', 'replaceState'].forEach(fn => {
const orig = history[fn];
if (typeof orig !== 'function') return;
history[fn] = function () {
const ret = orig.apply(this, arguments);
setTimeout(syncPageClass, 0);
return ret;
};
});
}
function fixVideoControls() {
if (!isVideoPage() && !isBangumiPage() && !isListPage()) return;
if (fixVideoControls._done) return;
const playerContainer = document.querySelector('body.bili-video-page .bpx-player-container') || document.querySelector('body.bili-bangumi-page .bpx-player-container');
if (!playerContainer) return;
const videoArea = playerContainer.querySelector('.bpx-player-video-area');
if (!videoArea) return;
const videoPerch = videoArea.querySelector('.bpx-player-video-perch');
const videoWrap = (videoPerch && videoPerch.querySelector('.bpx-player-video-wrap'))
|| videoArea.querySelector('.bpx-player-video-wrap');
if (!videoWrap) return;
const video = videoWrap.querySelector('video');
if (!video) return;
if (videoWrap.parentElement === videoArea && videoArea.firstElementChild === videoWrap) {
fixVideoControls._done = true;
return;
}
if (videoPerch && videoWrap.parentElement !== videoArea) {
videoArea.insertBefore(videoWrap, videoPerch);
}
video.playsInline = true;
const oldControlWrap = videoArea.querySelector('.bpx-player-control-wrap:not(.new)');
if (!oldControlWrap) return;
const controlEntity = oldControlWrap.querySelector('.bpx-player-control-entity');
if (!controlEntity) return;
let clickTimer;
let hideTimer;
const controlWrap = document.createElement('div');
controlWrap.className = 'bpx-player-control-wrap new';
controlWrap.innerHTML = '';
videoArea.insertBefore(controlWrap, oldControlWrap);
controlWrap.appendChild(controlEntity);
const controlTop = controlEntity.querySelector('.bpx-player-control-top');
const bottomRight = controlEntity.querySelector('.bpx-player-control-bottom-right');
const isBpxStateShow = () => controlEntity.querySelector('.bpx-player-control-bottom-right > .bpx-state-show');
const isShown = () => playerContainer.getAttribute('ctrl-shown') === 'true';
playerContainer.setAttribute('ctrl-shown', 'false');
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
const firstNode = mutation.addedNodes[0];
if (firstNode && firstNode.nodeType === Node.ELEMENT_NODE
&& firstNode.classList.contains('bpx-player-ctrl-web')) {
if (video.paused) showControlWrap();
const subtitleBtn = document.querySelector('.bpx-player-ctrl-subtitle');
if (subtitleBtn) {
window.addEventListener('click', (event) => {
if (!subtitleBtn.contains(event.target)) {
subtitleBtn.dispatchEvent(new MouseEvent('mouseleave'));
}
});
}
observer.disconnect();
}
});
});
if (bottomRight) observer.observe(bottomRight, { childList: true });
function hideControlWrap(isEnd = false) {
if ((!video.paused && !isBpxStateShow()) || isEnd) {
playerContainer.setAttribute('ctrl-shown', 'false');
clearTimeout(hideTimer);
} else {
delayHideTimer();
}
}
function showControlWrap() {
playerContainer.setAttribute('ctrl-shown', 'true');
delayHideTimer();
}
function delayHideTimer() {
clearTimeout(hideTimer);
hideTimer = setTimeout(hideControlWrap, 3000);
}
function unmute() {
video.muted = false;
if (video.volume === 0) {
const muteIcon = document.querySelector('.bpx-player-ctrl-muted-icon');
if (muteIcon) muteIcon.click();
}
}
video.addEventListener('ended', () => hideControlWrap(true));
video.addEventListener('play', delayHideTimer);
videoWrap.addEventListener('mousemove', (e) => e.stopPropagation());
videoWrap.addEventListener('click', () => {
clearTimeout(clickTimer);
clickTimer = setTimeout(() => {
if (isShown()) hideControlWrap();
else showControlWrap();
if (video.paused) video.play();
else video.pause();
}, 250);
});
videoWrap.addEventListener('dblclick', () => {
clearTimeout(clickTimer);
unmute();
const isPortrait = video.videoHeight / video.videoWidth > 1;
if (isPortrait) {
const webBtn = document.querySelector('.bpx-player-ctrl-web');
if (webBtn) webBtn.click();
} else if (videoPerch) {
videoPerch.dispatchEvent(new MouseEvent('dblclick', { bubbles: true }));
}
});
controlWrap.addEventListener('mousemove', (e) => e.stopPropagation());
controlWrap.addEventListener('click', (e) => {
e.stopPropagation();
delayHideTimer();
});
if (controlTop) controlTop.addEventListener('touchstart', delayHideTimer);
fixVideoControls._done = true;
}
function bindVideoSlideGesture() {
if (!isVideoPage() && !isBangumiPage() && !isListPage()) return;
if (bindVideoSlideGesture._bound) return;
bindVideoSlideGesture._bound = true;
let mask = document.getElementById('my-bili-right-mask');
if (!mask) {
mask = document.createElement('div');
mask.id = 'my-bili-right-mask';
document.body.appendChild(mask);
}
const MIN_DISTANCE = 60;
const MAX_TIME = 600;
function getPanel() {
if (isListPage()) return document.querySelector('body.bili-list-page .playlist-container--right');
if (isVideoPage()) return document.querySelector('body.bili-video-page .right-container');
if (isBangumiPage()) return document.querySelector('body.bili-bangumi-page .plp-r-wrap');
return null;
}
function isOpen() { const r = getPanel(); return r && r.classList.contains('show'); }
function openPanel() { const r = getPanel(); if (r) r.classList.add('show'); mask.classList.add('show'); }
function closePanel() { const r = getPanel(); if (r) r.classList.remove('show'); mask.classList.remove('show'); }
mask.addEventListener('click', closePanel);
let startX = 0, startY = 0, startTime = 0;
document.addEventListener('touchstart', e => {
if (e.touches.length !== 1) return;
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
startTime = Date.now();
}, { passive: true });
document.addEventListener('touchend', e => {
if (e.changedTouches.length !== 1) return;
const dx = e.changedTouches[0].clientX - startX;
const dy = e.changedTouches[0].clientY - startY;
const dt = Date.now() - startTime;
if (Math.abs(dy) > Math.abs(dx)) return;
if (dt > MAX_TIME) return;
if (dx < -MIN_DISTANCE && !isOpen()) openPanel();
else if (dx > MIN_DISTANCE && isOpen()) closePanel();
}, { passive: true });
}
function bindFullscreenFix() {
if (!isVideoPage() && !isListPage()) return;
if (bindFullscreenFix._bound) return;
bindFullscreenFix._bound = true;
const handleChange = () => {
const isFull = !!(document.fullscreenElement || document.webkitFullscreenElement ||
document.mozFullScreenElement || document.msFullscreenElement);
if (isFull) {
document.body.classList.add('video-fullscreen');
} else {
document.body.classList.remove('video-fullscreen');
}
};
document.addEventListener('fullscreenchange', handleChange);
document.addEventListener('webkitfullscreenchange', handleChange);
document.addEventListener('mozfullscreenchange', handleChange);
document.addEventListener('MSFullscreenChange', handleChange);
document.addEventListener('orientationchange', () => {
if (document.fullscreenElement || document.webkitFullscreenElement) {
setTimeout(handleChange, 100);
}
});
}
function createSearchBar() {
if (!isHome() && !isSearchPage() && !isSpacePage()) return;
if (document.getElementById('my-bili-searchbar')) return;
const onSearch = isSearchPage();
const onSpace = isSpacePage();
const url = new URL(location.href);
const currentOrder = url.searchParams.get('order') || '';
const isLatest = currentOrder === 'pubdate';
const bar = document.createElement('div');
bar.id = 'my-bili-searchbar';
const showLeftBtn = !onSpace;
let leftBtnHTML = '';
if (showLeftBtn) {
if (onSearch) {
leftBtnHTML = `