您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fixes YouTube’s layout to display 4 thumbnails per row, resizing them for a more compact and cleaner browsing experience on the homepage and subscription feed.
当前为
- // ==UserScript==
- // @name YouTube 4 Thumbnails Per Row Fix
- // @namespace https://greasyfork.org/users/1461079
- // @version 1.0
- // @description Fixes YouTube’s layout to display 4 thumbnails per row, resizing them for a more compact and cleaner browsing experience on the homepage and subscription feed.
- // @author Michaelsoft
- // @match *://www.youtube.com/*
- // @grant none
- // @run-at document-start
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- function applyFixes() {
- const gridRenderer = document.querySelector('ytd-rich-grid-renderer');
- if (gridRenderer) {
- gridRenderer.style.setProperty('--ytd-rich-grid-items-per-row', '4', 'important');
- }
- document.querySelectorAll('ytd-rich-grid-row, #contents.ytd-rich-grid-row').forEach(el => {
- el.style.setProperty('display', 'contents', 'important');
- });
- document.querySelectorAll('ytd-rich-item-renderer').forEach(el => {
- el.style.setProperty('margin-right', 'calc(var(--ytd-rich-grid-item-margin)/2)', 'important');
- el.style.setProperty('margin-left', 'calc(var(--ytd-rich-grid-item-margin)/2)', 'important');
- });
- // Optional: font size fixes
- document.querySelectorAll('#video-title.ytd-rich-grid-media, #video-title.ytd-rich-grid-slim-media').forEach(el => {
- el.style.setProperty('font-size', '1.4rem', 'important');
- el.style.setProperty('line-height', '2rem', 'important');
- });
- document.querySelectorAll('#metadata-line.ytd-video-meta-block').forEach(el => {
- el.style.setProperty('font-size', '1.2rem', 'important');
- el.style.setProperty('line-height', '1.8rem', 'important');
- });
- }
- // Observe for dynamic content (SPA nav, infinite scroll)
- const observer = new MutationObserver(() => {
- applyFixes();
- });
- window.addEventListener('load', () => {
- applyFixes();
- observer.observe(document.body, { childList: true, subtree: true });
- });
- })();