NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name April Fools CSS // @description Some CSS april fools // @author jerone // @namespace https://github.com/jerone/UserScripts/tree/master/April_Fools_CSS // @copyright 2014+, jerone (https://github.com/jerone) // @license CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt // @supportURL https://github.com/jerone/UserScripts/issues // @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VCYMHWQ7ZMBKW // @include * // @version 1.0 // ==/UserScript== // cSpell:ignore transform, aprilfool /* eslint security/detect-object-injection: "off" */ if (window.top === window) { var duration = 2000, // [Integer, positive, milliseconds] This controls the duration of an april fool item; interval = 8000; // [Integer, positive, milliseconds] This controls the interval of the next april fool; // [String] April fools in CSS; Use {duration} for a dynamic duration; var aprilFools = [ // editorconfig-checker-disable "img { \ -webkit-transform: rotate(180deg); \ -moz-transform: rotate(180deg); \ -ms-transform: rotate(180deg); \ -o-transform: rotate(180deg); \ transform: rotate(180deg); \ }", "body { \ -webkit-transform: rotate(1deg); \ -moz-transform: rotate(1deg); \ -ms-transform: rotate(1deg); \ -o-transform: rotate(1deg); \ transform: rotate(1deg); \ }", "body { \ -webkit-perspective: 300px; \ -moz-perspective: 300px; \ -ms-perspective: 300px; \ perspective: 300px; \ -webkit-transform: rotateY(180deg); \ -moz-transform: rotateY(180deg); \ -ms-transform: rotateY(180deg); \ transform: rotateY(180deg); \ -webkit-transform-style: preserve-3d; \ -moz-transform-style: preserve-3d; \ -ms-transform-style: preserve-3d; \ transform-style: preserve-3d; \ }", "img { \ -webkit-transform: scale(0.8); \ -moz-transform: scale(0.8); \ -ms-transform: scale(0.8); \ -o-transform: scale(0.8); \ transform: scale(0.8); \ }", "img { -webkit-animation: spin {duration}s linear infinite; } \ @-webkit-keyframes spin { \ 0% { -webkit-transform: rotate(0deg); } \ 100% { -webkit-transform: rotate(360deg); } \ }", "body { -webkit-animation: rainbow {duration}s infinite; } \ @-webkit-keyframes rainbow { \ 100% { -webkit-filter: hue-rotate(360deg); } \ }", // editorconfig-checker-enable ], aprilFool = 0, aprilFooled = 0; interval = Math.abs(interval); duration = Math.max(1000, Math.abs(duration)); window.setInterval( function () { do { aprilFool = Math.floor(Math.random() * aprilFools.length); } while (aprilFool === aprilFooled); document.documentElement.classList.add( "aprilfool" + (aprilFooled = aprilFool), ); window.console && console.log("added aprilfool" + aprilFool); window.setTimeout(function () { document.documentElement.classList.remove( "aprilfool" + aprilFooled, ); window.console && console.log("removed aprilfool" + aprilFool); }, duration); }, interval + duration + 10, ); for (var aprilFoolText in aprilFools) { GM_addStyle( ".aprilfool" + aprilFoolText + " " + aprilFools[aprilFoolText].replace( "{duration}", duration / 1000, ), ); } }