Greasy Fork is available in English.
collapsible image previews for kbin.social.
当前为
// ==UserScript==
// @name kbin collapsible media preview
// @match https://kbin.social/*
// @match https://fedia.io/*
// @match https://karab.in/*
// @namespace http://greasyfork.icu/en/users/1098129-domicidaldesigns
// @version 1.0.1
// @description collapsible image previews for kbin.social.
// @author DomicidalDesigns
// @grant none
// @license MIT
// ==/UserScript==
//attributions: [1] W3Schools (collapse js tutorial)
(function() {
'use strict';
// Your code here...
function collapsePreviews() {
// Add buttons after every image preview
var x = document.getElementsByClassName('preview');
for (let i = 0; i < x.length; i++) {
var _button = document.createElement("button");
_button.classList.add('collapsible');
_button.classList.add('active');
var ref = x[i].parentNode;
var parent = ref.parentNode;
parent.insertBefore(_button, ref);
ref.classList.add('collapseContent');
}
// Toggle content when collapse buttons are clicked.[1]
var coll = document.getElementsByClassName("collapsible");
for (let j = 0; j < coll.length; j++) {
coll[j].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
}
}
function removeCollapses() {
// Delete collapse buttons
var collapses = document.getElementsByClassName('collapsible');
while (collapses[0]) {
collapses[0].parentNode.removeChild(collapses[0]);
}
}
// styles
var css = `<style>
.collapsible {
background: none;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.collapsible:after {
content: '-';
color: white;
font-weight: bold;
float: left;
margin-left: 5px;
}
.collapsible.active:after {
content: "+";
}
.collapseContent {
padding: 0 18px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
background: none;
}
</style>`;
document.body.innerHTML += css;
// initial population of media preview collapse buttons
setTimeout(collapsePreviews, 1000);
function collapseMedia() {
removeCollapses();
collapsePreviews();
}
// Populate new collapse buttons on scroll
document.addEventListener("scroll", function() {
collapseMedia();
})
})();