Remove header and remove bottom padding
Per
// ==UserScript==
// @name Trello remove padding
// @namespace Violentmonkey Scripts
// @version 1.3
// @description Remove header and remove bottom padding
// @match https://trello.com/*
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
// Helper to wait for a selector to appear
function waitForElement(selector, timeout = 10000) {
return new Promise((resolve, reject) => {
const interval = 100;
let elapsed = 0;
const timer = setInterval(() => {
const el = document.querySelector(selector);
if (el) {
clearInterval(timer);
resolve(el);
} else if ((elapsed += interval) >= timeout) {
clearInterval(timer);
reject(new Error(`Timeout: ${selector} not found`));
}
}, interval);
});
}
function removeHeadersAndStyleBoard() {
// Remove all elements with data-js-id="header-container"
document.querySelectorAll('[data-js-id="header-container"]').forEach(el => el.remove());
// Remove specific header
const header = document.querySelector(
'#trello-board-root > div > div > div > div.board-header.u-clearfix.js-board-header.board-header-redesign-blur'
);
if (header) header.remove();
// Adjust #board styles
const board = document.querySelector('#board');
if (board) {
board.style.setProperty('padding-bottom', '0', 'important');
board.style.setProperty('margin-bottom', '0');
}
// Adjust .board-canvas margin-top
const canvas = document.querySelector('.board-canvas');
if (canvas) {
canvas.style.setProperty('margin-top', '0');
}
document.querySelectorAll(`
#island-nav > div:nth-child(1),
#island-nav > div:nth-child(2),
#island-nav > div:nth-child(3),
#island-nav > span
`).forEach(el => el.remove());
}
// Run when DOM is ready and target element exists
window.addEventListener('load', () => {
waitForElement('#board').then(removeHeadersAndStyleBoard).catch(console.warn);
});
})();