您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide li elements without "sep" class and add toggle button
// ==UserScript== // @name Toggle Button for Non-sep Items // @namespace https://jirehlov.com // @version 0.4 // @description Hide li elements without "sep" class and add toggle button // @author Jirehlov // @match https://bgm.tv/subject/* // @match https://bangumi.tv/subject/* // @match https://chii.in/subject/* // @grant none // @license MIT // ==/UserScript== (function () { "use strict"; const style = document.createElement("style"); style.textContent = ` span.toggleButton { cursor: pointer; color: #2EA6FF; margin-left: 5px; } div.avatarCnt { margin-right: 15px; margin-top: 0px; margin-top: -15px; text-align: right; opacity: 0.99; } span.avatarOverlay { width: 75px; margin-top: -8px; border-radius: 0 0 8px 8px; mask-image: linear-gradient(to top, black, transparent); background-size: cover } span.avatar_1o2 { height: 42px; opacity: 0.65; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,44 L0,44 Z"); } span.avatar_1o3 { height: 24px; opacity: 0.75; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,26 L0,26 Z"); } span.avatar_2o3 { height: 24px; opacity: 0.40; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,26 L0,26 Z"); } span.avatar_1o4 { height: 18px; opacity: 0.85; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,20 L0,20 Z"); } span.avatar_2o4 { height: 18px; opacity: 0.60; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,20 L0,20 Z"); } span.avatar_3o4 { height: 18px; opacity: 0.35; clip-path: path("M0,-2 a8,8,0,0,0,8,8 l59,0 a8,8,0,0,0,8,-8 L75,20 L0,20 Z"); } `; document.head.appendChild(style); const ulElement = document.querySelector("div.subject_section ul.browserCoverMedium"); if (!ulElement) return; const liElements = ulElement.querySelectorAll("li"); let lastSepElement = null; let relatedItems = []; liElements.forEach(li => { if (li.classList.contains("sep")) { if (relatedItems.length > 0) { doCollection(lastSepElement, relatedItems); lastSepElement.style.display = "none"; relatedItems = []; } lastSepElement = li; } else { if (lastSepElement) { relatedItems.push(li); li.style.display = "none"; } } }); if (relatedItems.length > 0) { doCollection(lastSepElement, relatedItems); lastSepElement.style.display = "none"; } function doCollection(sepElement, relatedItems) { const sepSubSpan = sepElement.querySelector("span.sub"); if (!sepSubSpan) return; const parentDiv = sepElement.parentNode; const collSubSpan = sepSubSpan.cloneNode(true); const collElement = document.createElement("li"); relatedItems.unshift(sepElement); addToggleButton(collSubSpan, collElement, relatedItems, "[展开]"); addToggleButton(sepSubSpan, collElement, relatedItems, "[折叠]"); collElement.className = "sep collection"; collElement.appendChild(collSubSpan); addCollection(collElement, relatedItems); addCollCnt(collElement, relatedItems.length); const links = collElement.querySelectorAll("a"); links.forEach(link => link.removeAttribute("href")); parentDiv.insertBefore(collElement, sepElement); } function addCollection(collElement, relatedItems) { const realLen = relatedItems.length; const shownLen = Math.min(realLen, 4); const prefix = "avatarNeue avatarOverlay avatar_"; for (let i = 0; i < shownLen; i++) { const avatarElement = relatedItems[i].querySelector(".avatar"); if (avatarElement) { const avatar = avatarElement.cloneNode(true); if (i) avatar.querySelector("span").className = `${ prefix }${ i }o${ shownLen }`; collElement.appendChild(avatar); } } } function addCollCnt(collElement, len) { const div = document.createElement("div"); div.className = "avatarCnt"; const span = document.createElement("span"); span.className = "tip"; span.textContent = len; div.appendChild(span); collElement.appendChild(div); } function addToggleButton(subSpan, collElement, relatedItems, textContent) { const toggleButton = document.createElement("span"); toggleButton.textContent = textContent; toggleButton.className = "toggleButton"; toggleButton.addEventListener("click", event => { event.stopPropagation(); toggleItems(collElement, relatedItems); }); subSpan.appendChild(toggleButton); } function toggleItems(collElement, relatedItems) { const isHidden = relatedItems[0].style.display === "none"; relatedItems.forEach(item => { item.style.display = isHidden ? "list-item" : "none"; }); collElement.style.display = !isHidden ? "list-item" : "none"; } }());