Bilibili Evolved V2 Evolved

增强 Bilibili Evolved V2 样式,请在安装 Bilibili Evolved V2 后再下载使用本脚本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name               Bilibili Evolved V2 Evolved
// @namespace          A user script about something
// @description        增强 Bilibili Evolved V2 样式,请在安装 Bilibili Evolved V2 后再下载使用本脚本
// @version            1.1.1
// @author             Tinhone
// @license            MIT
// @run-at             document-start
// @match              *://*.bilibili.com/*
// @grant              GM_addStyle
// @grant              GM_setValue
// @grant              GM_getValue
// @grant              GM_registerMenuCommand
// @compatible         firefox V50+
// @compatible         edge V50+
// @compatible         chrome V50+
// @icon               data:image/png;base64,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
// ==/UserScript==

(function () {
    'use strict'

    GM_addStyle(`
        /********** Bilibili Evolved 顶栏更新 **********/

        /* 减小高度 */
        :root {
            --navbar-height: 36px !important;
        }

        /* 原版顶栏高度适配,#biliMainHeader 重复是为了 CSS 优先级 */
        body > #biliMainHeader#biliMainHeader,
        #app > #biliMainHeader#biliMainHeader {
            height: initial !important;
            max-height: initial !important;
            min-height: var(--navbar-height) !important;
        }

        /* 美化一级元素上的消息数量提示 */
        .custom-navbar-items > .custom-navbar-item > .notify-count {
            font-size: 7pt !important;
            line-height: 10px !important;
        }

        /* 美化一级元素字体大小 */
        .custom-navbar-items > .custom-navbar-item > .main-content {
            font-size: 9pt !important;
        }

        /* 美化当页面为对应一级元素时的字体大小 */
        .custom-navbar-items > .custom-navbar-item.active > .main-content {
            font-size: 9.5pt !important;
        }

        /* 美化搜索框 */
        .custom-navbar-items > .custom-navbar-item[data-name=search] .launch-bar {
            border-radius: 4px !important;
            height: 23px !important;
        }

        /* 美化搜索框右箭头图标 */
        .custom-navbar-items > .custom-navbar-item[data-name=search] .launch-bar .be-icon.be-iconfont-right-arrow {
            --size: 15px !important;
        }

        /* 缩小头像大小,调整头像动画 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo] .user-face-container {
            height: calc(var(--navbar-height) - 12px);
            width: calc(var(--navbar-height) - 12px);
            transition: transform 230ms cubic-bezier(0, 0.3, 0.3, 0.95) 0.2s;
            z-index: 100;
        }

        /* 头像框偏移适配-头像 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo] .user-face-container .user-face {
            transform: initial;
            z-index: initial;
            opacity: initial;
        }

        /* 头像框偏移适配-头像框 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo] .user-face-container .user-pendant {
            transform: translate(-50%, -50%);
            left: 50%;
            top: 50%;
            z-index: initial;
            opacity: 0;
        }

        /* 头像框偏移适配-头像和头像框 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo]:hover .user-face-container {
            transform: scale(2) translateY(10px);
        }

        /* 头像框偏移适配-头像 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo]:hover .user-face-container .user-face {
            transform: initial;
            z-index: initial;
            opacity: initial;
        }

        /* 头像框偏移适配-头像框 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo]:hover .user-face-container .user-pendant {
            transform: translate(-50%, -50%);
            z-index: initial;
            opacity: 1;
        }

        /* 缩小昵称和头像间隔 */
        .custom-navbar-items > .custom-navbar-item[data-name=userInfo] .user-info-panel > .logged-in > .name {
            margin: calc(var(--navbar-height) * 0.5 + 37px) 0 0 0 !important;
        }

        /* 美化“消息”二级菜单的消息数量提示 */
        .custom-navbar-items > .custom-navbar-item[data-name=messages] .messages-popup > .message-entry > a::after {
            padding: 3px 8px !important;
        }

        /* 美化“投稿”字体大小 */
        .custom-navbar-items > .custom-navbar-item[data-name=upload] .navbar-upload > .navbar-upload-name {
            font-size: 9.5pt !important;
        }

        /* 美化“投稿”图标大小 */
        .custom-navbar-items > .custom-navbar-item[data-name=upload] .navbar-upload > .be-icon.be-iconfont-upload {
            --size: 15px !important;
        }

        /* 告知浏览器变化 */
        .custom-navbar-items:hover > .custom-navbar-item {
            will-change: background-color !important;
        }

        /* 告知浏览器变化 */
        .custom-navbar-items:hover > .custom-navbar-item > .popup-container {
            will-change: top !important;
        }

        /* 告知浏览器变化 */
        .custom-navbar-items:hover > .custom-navbar-item > .popup-container > .popup.no-padding {
            will-change: opacity !important;
        }

        /* 告知浏览器变化 */
        .custom-navbar-items:hover > .custom-navbar-item .launch-bar {
            will-change: opacity !important;
        }

        /* 告知浏览器变化 */
        .custom-navbar-items:hover > .custom-navbar-item .launch-bar-suggest-list {
            will-change: opacity, transform !important;
        }


        /********** Bilibili Evolved 侧栏更新 **********/

        /* 组件详情面板 */
        .be-settings > .settings-panel-popup > .settings-panel .component-detail-panel {
            height: calc(100% + 1px) !important;
            border-radius: 0px 8px 8px 0px !important;
        }

        .be-settings > .settings-panel-popup > .settings-panel .component-detail > .component-detail-description {
            padding-bottom: 64px !important;
        }

        /* 功能栏按钮 */
        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .be-button:not(.be-check-box) {
            border-radius: 8px !important;
            padding: 8px 12px 8px 8px !important;
            box-shadow: none !important;
            border: 2px solid rgba(136, 136, 136, 0.2) !important;
            outline: 0px solid var(--theme-color-20) !important;
            transition: 0.2s all ease-out !important;
        }

        /* 功能栏按钮 */
        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .be-button:not(.be-check-box):active:focus-within {
            box-shadow: none !important;
            border: 2px solid var(--theme-color) !important;
            outline: 3px solid var(--theme-color-20) !important;
        }

        /* 功能栏按钮 */
        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .be-button:not(.be-check-box):hover {
            box-shadow: none !important;
            border: 2px solid var(--theme-color) !important;
        }

        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .bvid-convert.widget-item {
            border-radius: 8px !important;
            padding: 8px 8px 8px 11px !important;
            line-height: 20px !important;
            box-shadow: none !important;
            border: 2px solid rgba(136, 136, 136, 0.2) !important;
        }

        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .be-dev-client.widget-item {
            border-radius: 8px !important;
            padding: 8px 8px 8px 11px !important;
            line-height: 20px !important;
            box-shadow: none !important;
            border: 2px solid rgba(136, 136, 136, 0.2) !important;
        }

        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items .multiple-widgets {
            gap: 10px !important;
        }

        .be-settings > .widgets-panel-popup > .widgets-panel .widget-items {
            gap: 10px !important;
        }


        /********** 旧版评论区更新 **********/

        /* 禁止评论区里的头像框动画 */
        .bb-comment .bili-avatar-pendent-dom > .bili-avatar-img {
            -webkit-animation: none !important;
            -moz-animation: none !important;
            -o-animation: none !important;
            animation: none !important;
        }

        /* 美化[回复]按钮 */
        .bb-comment .info > .reply.btn-hover {
            height: 16px !important;
            padding-top: 2px !important;
            padding-bottom: 2px !important;
        }

        /* 禁止顶部横幅 */
        .bb-comment .reply-notice {
            display: none !important;
        }

        /* 隐藏底部回复栏 */
        .bb-comment .comment-send-lite {
            display: none !important;
        }


        /********** 新版评论区更新 **********/

        /* 禁止顶部横幅 */
        .bili-comment .reply-notice {
            display: none !important;
        }

        /* 隐藏底部回复栏 */
        .bili-comment > .comment-container > .reply-warp > .fixed-reply-box {
            display: none !important;
        }


        /********** 旧版动态首页更新 **********/

        /* 隐藏在新版入口旁边闪烁的提示 */
        .bili-dyn-version-control > .bili-dyn-version-control__reminding {
            display: none !important;
        }


        /********** 旧版动态更新 **********/

        /* 增加动态卡片宽度 */
        #app > .content {
            width: 930px !important;
        }

        /* 增加动态卡片宽度 */
        #app > .content .bili-dyn-item__body > .bili-dyn-content {
            width: 830px !important;
        }

        /* 增加动态卡片中包含的转发动态宽度 */
        #app > .content .bili-dyn-item__body .bili-dyn-content__orig__major {
            width: 818px !important;
        }

        /* 增加动态卡片中包含的转发动态宽度 */
        #app > .content .bili-dyn-item__body .bili-dyn-content__orig__additional {
            width: 818px !important;
        }

        /* 改为适合的鼠标指针样式 */
        #app > .content .bili-dyn-content__orig > .bili-dyn-content__orig__desc {
            cursor: auto !important;
        }


        /********** 新版动态更新 **********/

        /* 增加动态卡片宽度 */
        #app > .opus-detail {
            width: 930px !important;
        }

        /* 增加右侧边栏 margin 距离 */
        #app > .opus-detail > .right-sidebar-wrap {
            margin-left: 942px !important;
        }


        /********** 消息中心更新 **********/

        /* 面板高度适配 */
        #message-navbar ~ .container {
            --animation-start: 300ms ease-out;
            --animation-end: 100ms ease-in;
            height: calc(100vh - var(--navbar-height)) !important;
            margin-top: var(--navbar-height) !important;
        }

        /* 面板高度适配 */
        #message-navbar ~ .container > #link-message-container > .container {
            height: 100% !important;
        }

        /* 面板右侧高度适配,height 随便填一个是 px 的值,剩下交给 flex-grow */
        #message-navbar ~ .container > #link-message-container .space-right-bottom.ps {
            height: 0px !important;
            flex-grow: 1 !important;
        }

        /* 面板右侧高度适配 */
        #message-navbar ~ .container > #link-message-container .space-right-bottom.ps > .router-view > .d {
            --space-right-top-height: 42px;
            --padding: 10px;
            height: calc(100vh - var(--navbar-height) - var(--space-right-top-height) - var(--padding) * 3) !important;
        }

        /* 面板左侧消息提醒优化 */
        #message-navbar ~ .container > #link-message-container .space-right-bottom.ps > .router-view > .d .list-item > .notify {
            background-color: var(--theme-color) !important;
        }

        /* 面板左侧消息提醒数字优化 */
        #message-navbar ~ .container > #link-message-container .space-right-bottom.ps > .router-view > .d .list-item > .notify-number {
            padding: 1px 7px !important;
            font-size: 8px !important;
            line-height: 10px !important;
            border-radius: 5px !important;
            width: initial !important;
            height: initial !important;
            right: 9px !important;
        }

        /* 面板左侧消息提醒圆点优化 */
        #message-navbar ~ .container > #link-message-container .space-right-bottom.ps > .router-view > .d .list-item > .notify-dot {
            width: 7px !important;
            height: 7px !important;
            top: 22px !important;
            right: 10px !important;
        }


        /* 面板左侧优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list {
            display: flex !important;
            flex-direction: column !important;
            align-items: center !important;
            padding-left: 0 !important;
        }

        /* 面板左侧优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item {
            width: 100% !important;
            justify-content: center !important;
            transition: color var(--animation-end) !important;
        }

        /* 面板左侧优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item::before {
            display: none !important;
        }

        /* 面板左侧优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item > a {
            display: flex !important;
            width: 100% !important;
            height: 100% !important;
            flex: initial !important;
            -webkit-box-flex: initial !important;
            -ms-flex: initial !important;
            flex-direction: row !important;
            gap: 5px !important;
            padding-left: 0 !important;
            line-height: 12px !important;
            align-items: center !important;
            justify-content: center !important;
            transition: inherit;
        }

        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item:hover,
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item.active,
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item:hover > a,
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item.active > a {
            cursor: pointer;
            color: var(--theme-color) !important;
            transition: color var(--animation-start) !important;
        }

        /* 面板左侧消息提醒优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item > a > .notify {
            display: inline-block !important;
            position: static !important;
            margin-right: -4px !important;
            background-color: var(--theme-color) !important;
            margin-top: 1px !important;
            top: 0 !important;
            right: 0 !important;
        }

        /* 面板左侧消息提醒数字优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item > a > .notify-number {
            padding: 1px 8px !important;
            font-size: 10px !important;
            line-height: 12px !important;
            border-radius: 6px !important;
            width: initial !important;
            height: initial !important;
        }

        /* 面板左侧消息提醒圆点优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .list > .item > a > .notify-dot {
            width: 7px !important;
            height: 7px !important;
        }

        #message-navbar ~ .container > #link-message-container .side-bar > .divided-line {
            display: none !important;
        }

        /* 面板左侧“消息设置”优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item {
            flex-direction: column !important;
            margin-top: 18px !important;
            padding-left: 0 !important;
            transition: color var(--animation-end) !important;
        }

        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item > a {
            width: 100% !important;
            text-align: center !important;
            transition: inherit !important;
        }

        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item:hover,
        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item.active,
        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item:hover > a,
        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item.active > a {
            cursor: pointer !important;
            color: var(--theme-color) !important;
            transition: color var(--animation-start) !important;
        }

        /* 面板左侧“消息中心”“消息设置”图标优化 */
        #message-navbar ~ .container > #link-message-container .side-bar > .title > .air-craft,
        #message-navbar ~ .container > #link-message-container .side-bar > .setting.item > a > .setting-icon {
            margin-right: 8px !important;
        }
    `)

    if (GM_getValue('isAdjustFreshHome') === undefined) {
        GM_setValue('isAdjustFreshHome', false)
    }

    if (GM_getValue('isAdjustFreshHome') && window.location.href === 'https://www.bilibili.com/') {
        const callback = (mutationList, observer) => {
            for (let i = mutationList.length - 1; i >= 0; --i) {
                const mutation = mutationList[i]
                if (mutation.target.nodeName !== 'BODY') {
                    continue
                }
                Object.defineProperty(mutation.target, 'scrollHeight', {
                    value: 100000,
                    writable: false,
                });
                observer.disconnect()
                break
            }
        }

        const target = document.childNodes[1]

        const options = {
            subtree: true,
            childList: true,
        }

        const theObserver = new MutationObserver(callback)
        theObserver.observe(target, options)
    }

    const deleteOld = () => {
        window.alert('请删除那个没有菜单选项的同名老脚本,原因是可能会导致功能冲突')
    }
    const openBilibiliEvolvedHomePage = () => {
        window.open('https://github.com/the1812/Bilibili-Evolved', '_blank')
    }

    GM_registerMenuCommand('请删除那个没有菜单选项的同名老脚本,原因是可能会导致功能冲突', deleteOld)
    GM_registerMenuCommand('访问 Bilibili Evolved 仓库主页', openBilibiliEvolvedHomePage)
})()