From 5b6142918dd0fd15c6d9c35b00565b182b268ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=99=E5=90=9B=E5=BE=A1?= Date: Tue, 15 Jul 2025 20:03:39 +0800 Subject: [PATCH] 2.0 --- MCdoc.js | 289 ++++++++++++++++++++++++++----------------------------- 1 file changed, 138 insertions(+), 151 deletions(-) diff --git a/MCdoc.js b/MCdoc.js index 16434fc..dfc09a1 100644 --- a/MCdoc.js +++ b/MCdoc.js @@ -1,7 +1,9 @@ // ==UserScript== // @name 中国版我的世界开发者文档 美化 // @namespace https://git.xjyofc.top/xjy/MCdoc_js -// @version 1.0 +// @updateURL https://git.xjyofc.top/xjy/MCdoc_js/raw/branch/main/MCdoc.js +// @downloadURL https://git.xjyofc.top/xjy/MCdoc_js/raw/branch/main/MCdoc.js +// @version 2.0 // @description 更好的中国版我的世界开发者文档界面 // @author 仙君御 // @match https://mc.163.com/dev/* @@ -12,173 +14,158 @@ (function() { 'use strict'; - // 隐藏NIE-topBar元素 - document.getElementById('NIE-topBar').style.display = 'none'; + // 新样式 + function newUI(){ + const navBar = document.querySelector('.nav-bar'); + const header = document.querySelector('header.navbar.fixed-navbar'); + const searchBtn = document.querySelector('.search-btn'); + const searchBox = document.querySelector('.search-box'); + const searchCont = document.querySelector('.search-cont'); + const themeContent = document.querySelector('.theme-default-content'); + const sidebar = document.querySelector('.sidebar'); + const page = document.querySelector('.page'); - // 将nav-bar元素置顶 - const navBar = document.querySelector('.nav-bar'); - if (navBar) { - navBar.style.top = '0'; + if (navBar) {navBar.style.top = '0';} + if (header) {header.style.top = '0';} + if (searchBtn) { searchBtn.style.width = '60px';} + if (searchBox) {searchBox.style.width = 'auto';} + if (themeContent) { themeContent.style.borderRadius = '8px'; } + if (searchCont && header) { + searchCont.style.width = 'auto'; + searchCont.style.position = 'fixed'; + searchCont.style.top = '22px'; + searchCont.style.left = '50%'; + searchCont.style.transform = 'translateX(-90%)'; + header.appendChild(searchCont); + } + if (sidebar) { + sidebar.style.top = '75px'; + sidebar.style.height = '-webkit-fill-available'; + sidebar.style.removeProperty('display'); + } + if (page) { + page.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.1)'; + page.style.borderRadius = '8px'; + } } + - // 将header.navbar.fixed-navbar元素置顶 - const header = document.querySelector('header.navbar.fixed-navbar'); - if (header) { - header.style.top = '0'; - } - - // 设置.search-btn的宽度为65px - const searchBtn = document.querySelector('.search-btn'); - if (searchBtn) { - searchBtn.style.width = '60px'; - } - - // 设置.search-box宽度为auto - const searchBox = document.querySelector('.search-box'); - if (searchBox) { - searchBox.style.width = 'auto'; - } - - // 设置.search-cont宽度为auto并移动到navbar fixed-navbar中置顶居中 - const searchCont = document.querySelector('.search-cont'); - const newheader = document.querySelector('header.navbar.fixed-navbar'); - if (searchCont && newheader) { - searchCont.style.width = 'auto'; - searchCont.style.position = 'fixed'; - searchCont.style.top = '22px'; - searchCont.style.left = '50%'; - searchCont.style.transform = 'translateX(-90%)'; - header.appendChild(searchCont); - } - - // 隐藏.page-top元素 - // 动态隐藏.page-top元素 - function hidePageTop() { + // 动态隐藏元素 + function hide() { const pageTop = document.querySelector('.page-top'); const pageTopFixed = document.querySelector('.page-top-fixed'); const pageTopboth = document.querySelector('.page-top-fixed.page-top'); - if (pageTop) { - pageTop.style.display = 'none'; - } - if (pageTopFixed) { - pageTopFixed.style.display = 'none'; - } - if (pageTopboth) { - pageTopboth.style.display = 'none'; - } - // 移除.page元素的padding-top + const navBtn = document.querySelector('.nav-btn'); + const btnCont = document.querySelector('.btn-cont'); + const openRight = document.querySelector('.open-right'); + const page = document.querySelector('.page'); + const footer = document.querySelector('.footer'); + const feedbackBtn = document.querySelector('.btn.feedback'); + const hideSide = document.querySelector('.hide-side'); + const nietopbar = document.getElementById('NIE-topBar'); + + if (pageTop) { pageTop.style.display = 'none'; } + if (pageTopFixed) {pageTopFixed.style.display = 'none';} + if (pageTopboth) {pageTopboth.style.display = 'none';} + if (page) {page.style.paddingTop = '0';} + if (navBtn) {navBtn.style.display = 'none';} + if (btnCont) {btnCont.style.display = 'none';} + if (openRight) {openRight.style.display = 'none';} + if (footer) {footer.style.display = 'none';} + if (feedbackBtn) {feedbackBtn.style.display = 'none';} + if (hideSide) { hideSide.style.display = 'none';} + if (nietopbar) {nietopbar.style.display = 'none';} + + } + + // 页面布局修复 + function fix() { const page = document.querySelector('.page'); if (page) { page.style.paddingTop = '0'; + page.style.flex = '0'; + page.style.marginLeft = 'auto'; + page.style.width = '67%'; + page.style.overflow = 'visible'; + } + const pageContent = document.querySelector('.page-container'); + if (pageContent) { + pageContent.style.display = 'block'; + } + // 设置html宽度为浏览器窗口实际大小 + const htmlElement = document.documentElement; + if (htmlElement) { + htmlElement.style.width = window.innerWidth + 'px'; + htmlElement.style.minWidth = window.innerWidth + 'px'; + htmlElement.style.transform = 'none'; + // 确保不出现横向滚动条 + htmlElement.style.overflowX = 'hidden'; + } + // 设置body元素宽度 + if (document.body) { + document.body.style.width = window.innerWidth + 'px'; + } + // 设置id为app的元素宽度 + const appElement = document.getElementById('app'); + if (appElement) { + appElement.style.width = window.innerWidth + 'px'; } } - // 初始隐藏 - hidePageTop(); - - // 监听DOM变化和页面重新渲染 - const observer = new MutationObserver(function(mutations) { - hidePageTop(); - // 检查是否有节点被添加或属性变化 - mutations.forEach(function(mutation) { - if (mutation.addedNodes.length > 0 || mutation.attributeName) { - console.log('检测到页面重新渲染'); - // 在这里添加重新渲染后的处理逻辑 - } - }); - }); - observer.observe(document.body, { - childList: true, - subtree: true, - attributes: true, - attributeFilter: ['style', 'class'] - }); - - // 监听窗口缩放事件 - window.addEventListener('resize', hidePageTop); - // 监听滚动事件 - window.addEventListener('scroll', hidePageTop); - - // 隐藏.nav-btn元素 - const navBtn = document.querySelector('.nav-btn'); - if (navBtn) { - navBtn.style.display = 'none'; - } - - // 设置.center-cont宽度为auto - const centerCont = document.querySelector('.center-cont'); - if (centerCont) { - centerCont.style.width = 'auto'; - } - - // 隐藏.btn-cont元素 - const btnCont = document.querySelector('.btn-cont'); - if (btnCont) { - btnCont.style.display = 'none'; - } - - // 隐藏.open-right元素 - const openRight = document.querySelector('.open-right'); - if (openRight) { - openRight.style.display = 'none'; - } - - // 设置.sidebar元素的top样式 - const sidebar = document.querySelector('.sidebar'); - if (sidebar) { - sidebar.style.top = '75px'; - sidebar.style.height = '-webkit-fill-available'; - sidebar.style.removeProperty('display'); - } - // 创建urlmenu菜单 - const urlMenu = document.createElement('div'); - urlMenu.className = 'urlmenu'; - urlMenu.innerHTML = ` - API文档 - 开发指南 - 教学课程 - 新闻与活动 - 帮助中心 - 问题反馈 - MCStudio - `; - - // 设置菜单样式 - urlMenu.style.position = 'fixed'; - urlMenu.style.right = '20px'; - urlMenu.style.top = '15px'; - // urlMenu.style.backgroundColor = 'rgba(0, 0, 0, 0)'; - urlMenu.style.padding = '10px'; - urlMenu.style.borderRadius = '5px'; - - // 添加到navbar fixed-navbar中 - if (header) { - header.appendChild(urlMenu); - } - - // 为.theme-default-content添加圆角 - const themeContent = document.querySelector('.theme-default-content'); - if (themeContent) { - themeContent.style.borderRadius = '8px'; + function Menu() { + const header = document.querySelector('header.navbar.fixed-navbar'); + const urlMenu = document.createElement('div'); + urlMenu.className = 'urlmenu'; + urlMenu.innerHTML = ` + API文档 + 开发指南 + 教学课程 + 新闻与活动 + 帮助中心 + 问题反馈 + MCStudio + `; + // 设置菜单样式 + urlMenu.style.position = 'fixed'; + urlMenu.style.right = '20px'; + urlMenu.style.top = '15px'; + urlMenu.style.padding = '10px'; + urlMenu.style.borderRadius = '5px'; + // urlMenu.style.backgroundColor = 'rgba(0, 0, 0, 0)'; + // 添加到navbar fixed-navbar中 + if (header) {header.appendChild(urlMenu);} } - // 隐藏footer元素 - const footer = document.querySelector('.footer'); - if (footer) { - footer.style.display = 'none'; + // 注册功能函数 + function mian() { + hide(); + Menu(); + newUI(); + fix(); } - // 隐藏反馈按钮 - const feedbackBtn = document.querySelector('.btn.feedback'); - if (feedbackBtn) { - feedbackBtn.style.display = 'none'; - } + // 监听在页面和脚本渲染完成后 + document.addEventListener('DOMContentLoaded', function() { + mian(); + }); - // 隐藏.hide-side元素 - const hideSide = document.querySelector('.hide-side'); - if (hideSide) { - hideSide.style.display = 'none'; - } + // 监听窗口大小变化 + window.addEventListener('resize', function() { + mian(); + }) + + // 监听页面滚动事件 + window.addEventListener('scroll', function() { + mian(); + }); + + // 监听文档加载状态变化(开始渲染时) + document.addEventListener('readystatechange', function() { + // interactive表示DOM已加载但资源可能未完成,complete表示所有资源加载完成 + if (document.readyState === 'interactive' || document.readyState === 'complete') { + mian(); + } + }); })();