AnnaniZhu's script

优化部分网页的交互体验

  1. // ==UserScript==
  2. // @name AnnaniZhu's script
  3. // @namespace https://github.com/AnaniZhu/tampermonkey-scripts
  4. // @version 0.3.0
  5. // @description 优化部分网页的交互体验
  6. // @author AnnaniZhu
  7. // @license MIT
  8. // @create 2019-10-23
  9. // @home-url https://github.com/AnaniZhu/tampermonkey-scripts
  10. // @run-at document-idle
  11. // @include *://nodejs.cn/api/*
  12. // @include *://juejin.im/post/*
  13. // @include *dalipan.com/detail/*
  14. // @include *webpack.wuhaolin.cn/*
  15. // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
  16. // @grant GM_addStyle
  17. // ==/UserScript==
  18.  
  19. (function () {
  20. 'use strict'
  21. /* eslint-disable-next-line */
  22. const { href: URL, host: HOST } = window.location
  23.  
  24. const DOMAIN_SCRIPT_MAP = {
  25. 'nodejs.cn': createNodeSideMenu,
  26. 'juejin.im': fixedJueJinCategory,
  27. 'dalipan.com': unLockDaLiPan,
  28. 'webpack.wuhaolin.cn': hideWebpackModal
  29. }
  30.  
  31. // 注入通用样式
  32. addCommonStyle()
  33.  
  34. Object.keys(DOMAIN_SCRIPT_MAP).forEach(key => {
  35. if (new RegExp(key).test(HOST)) {
  36. DOMAIN_SCRIPT_MAP[key]()
  37. }
  38. })
  39.  
  40. // node
  41. function createNodeSideMenu () {
  42. const sideMenu = document.createElement('div')
  43. const toggle = document.createElement('div')
  44. sideMenu.id = 'side_menu__nodejs'
  45. toggle.id = 'side_menu_toggle'
  46. const $toc = $('#toc')
  47. $toc.addClass('scroll-view')
  48. sideMenu.appendChild(toggle)
  49. sideMenu.appendChild($('#toc')[0])
  50.  
  51. function toggleSideMenu () {
  52. $(sideMenu).toggleClass('open')
  53. }
  54.  
  55. // 点击按钮或按 ESC 切换侧边栏显隐
  56. $(toggle).click(toggleSideMenu)
  57. $(document).keydown((e) => {
  58. if (e.key === 'Escape') {
  59. toggleSideMenu()
  60. }
  61. })
  62.  
  63. GM_addStyle(`
  64. #side_menu__nodejs {
  65. position: fixed;
  66. top: 0;
  67. right: 0;
  68. width: 20%;
  69. min-width: 250px;
  70. transform: translateX(100%);
  71. transition: transform .15s;
  72. }
  73.  
  74. #side_menu__nodejs.open {
  75. transform: translateX(0%);
  76. }
  77.  
  78. #side_menu_toggle {
  79. position: absolute;
  80. left: -40px;
  81. top: 100px;
  82. padding: 20px;
  83. border-radius: 50%;
  84. color: #fff;
  85. background-color: rgba(113, 199, 173, 0.7);
  86. cursor: pointer;
  87. transform: translateX(-100%);
  88. transition: all 0.2s;
  89. animation: halo 2s 0s ease-out infinite;
  90. }
  91.  
  92. @keyframes halo {
  93. 0% {
  94. box-shadow: 0 0 2px 10px rgba(113, 199, 173, 0.7);
  95. }
  96.  
  97. 10% {
  98. box-shadow: 0 0 2px 10px rgb(113, 199, 173);
  99. }
  100.  
  101. 100% {
  102. box-shadow: 0 0 2px 40px rgba(113, 199, 173, 0.1);
  103. }
  104. }
  105.  
  106. #toc {
  107. box-sizing: border-box;
  108. height: 100vh;
  109. padding: 16px 0 24px 0;
  110. overflow-y: auto;
  111. color: #fff;
  112. background-color: #333;
  113. }
  114.  
  115. #toc h2,
  116. #toc url {
  117. margin: 0;
  118. }
  119.  
  120. #toc h2 {
  121. font-size: 16px;
  122. text-align: center;
  123. margin-bottom: 8px;
  124. }
  125.  
  126. #toc a {
  127. color: #ccc;
  128. }
  129.  
  130. #toc a:hover {
  131. color: #fff;
  132. }
  133. `)
  134.  
  135. document.body.appendChild(sideMenu)
  136. }
  137.  
  138. // 掘金
  139. function fixedJueJinCategory () {
  140. // dom 延迟加载
  141. setTimeout(() => {
  142. $('body').attr('id', 'zwh')
  143. $('.sticky-block-box').addClass('scroll-view')
  144. }, 300)
  145. GM_addStyle(`
  146.  
  147. #zwh .article-suspended-panel {
  148. top: auto;
  149. bottom: calc(2rem + 120px);
  150. right: calc((100vw - 960px) / 2 + 240px - 8px);
  151. transform: translateX(100%);
  152. }
  153.  
  154. #zwh .suspension-panel {
  155. right: calc((100vw - 960px) / 2 + 240px - 46px);
  156. }
  157.  
  158. #zwh .sidebar {
  159. right: -56px;
  160. }
  161.  
  162. .scroll-view.sticky-block-box {
  163. position: fixed;
  164. left: 8px;
  165. top: 80px;
  166. bottom: 20px;
  167. width: 300px !important;
  168. max-width: calc((100% - 960px) / 2 - 8px);
  169. margin: auto;
  170. z-index: 1000;
  171. }
  172. `)
  173. }
  174.  
  175. // 大力盘
  176. function unLockDaLiPan () {
  177. GM_addStyle(`
  178. #enfidialog .mobile-qrcode {
  179. display: none;
  180. }
  181. #enfidialog .mobile-ads {
  182. display: block !important;
  183. }
  184. `)
  185. }
  186.  
  187. // 深入浅出 webpack
  188. function hideWebpackModal () {
  189. GM_addStyle(`
  190. .gitbook-plugin-modal {
  191. left: 9999px !important;
  192. }
  193. `)
  194. }
  195.  
  196. function addCommonStyle () {
  197. GM_addStyle(`
  198. .scroll-view {
  199. overflow-y: auto;
  200. }
  201. .scroll-view::-webkit-scrollbar {
  202. width: 6px;
  203. }
  204. .scroll-view::-webkit-scrollbar-track {
  205. box-shadow:inset 0 0 6px rgba(0,0,0,0.3);
  206. border-radius: 10px;
  207. }
  208. .scroll-view::-webkit-scrollbar-thumb {
  209. border-radius: 10px;
  210. background: rgba(0,0,0,0.1);
  211. box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
  212. }
  213. .scroll-view::-webkit-scrollbar-thumb:window-inactive {
  214. background: rgba(255,0,0,0.4);
  215. }
  216. `)
  217. }
  218. })()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址