base for gallery without proper css
This commit is contained in:
parent
b7d83f5add
commit
64e477c6e5
126
visual/4c-gallery.js
Normal file
126
visual/4c-gallery.js
Normal file
@ -0,0 +1,126 @@
|
||||
// ==UserScript==
|
||||
// @name Draggable gallery for media
|
||||
// @namespace Violentmonkey Scripts
|
||||
// @author 17ms
|
||||
// @match *://boards.4channel.org/*/thread/*
|
||||
// @match *://boards.4chan.org/*/thread/*
|
||||
// @version 1.0
|
||||
// ==/UserScript==
|
||||
|
||||
const dragElement = (elem) => {
|
||||
const dragMouseDown = (e) => {
|
||||
e = e || window.event
|
||||
e.preventDefault()
|
||||
pos3 = e.clientX
|
||||
pos4 = e.clientY
|
||||
document.onmouseup = closeDragElement
|
||||
document.onmousemove = elementDrag
|
||||
}
|
||||
|
||||
const elementDrag = (e) => {
|
||||
e = e || window.event
|
||||
e.preventDefault()
|
||||
pos1 = pos3 - e.clientX
|
||||
pos2 = pos4 - e.clientY
|
||||
pos3 = e.clientX
|
||||
pos4 = e.clientY
|
||||
|
||||
elem.style.top = (elem.offsetTop - pos2) + "px"
|
||||
elem.style.left = (elem.offsetLeft - pos1) + "px"
|
||||
}
|
||||
|
||||
const closeDragElement = () => {
|
||||
document.onmouseup = null
|
||||
document.onmousemove = null
|
||||
}
|
||||
|
||||
let pos1, pos2, pos3, pos4
|
||||
|
||||
if (document.getElementsByClassName("drDrag").length > 0) {
|
||||
document.getElementsByClassName("drDrag")[0].onmousedown = dragMouseDown
|
||||
} else {
|
||||
elem.onmousedown = dragMouseDown
|
||||
}
|
||||
}
|
||||
|
||||
const prevImg = () => {
|
||||
if (i === 0) {
|
||||
i = sources.length - 1
|
||||
} else {
|
||||
i--
|
||||
}
|
||||
|
||||
galleryElem.src = sources[i]
|
||||
}
|
||||
|
||||
const nextImg = () => {
|
||||
if (i === sources.length - 1) {
|
||||
i = 0
|
||||
} else {
|
||||
i++
|
||||
}
|
||||
|
||||
galleryElem.src = sources[i]
|
||||
}
|
||||
|
||||
const limiter = document.getElementsByClassName("boardBanner")[0]
|
||||
const newNode = document.createElement("div")
|
||||
newNode.innerHTML = `<div id="drGallery" class="extPanel reply">
|
||||
<div id="drHeader" class="drag drDrag">Gallery</div>
|
||||
<div id="drContainer">
|
||||
<img id="drImg" src="" alt="" />
|
||||
</div>
|
||||
<div id="drHeader">
|
||||
<button id="drPrev">p</button>
|
||||
<button id="drNext">n</button>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
const styleSheet = document.createElement("style")
|
||||
styleSheet.innerText = `#drGallery {
|
||||
position: absolute;
|
||||
z-index: 9;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#drHeader {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
height: 20px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#drContainer {
|
||||
resize: both;
|
||||
overflow: auto;
|
||||
min-width: 100px;
|
||||
min-height: 100px;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
#drContainer img {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
#drButton {
|
||||
padding: 5px;
|
||||
}`
|
||||
|
||||
document.head.appendChild(styleSheet)
|
||||
document.body.insertBefore(newNode, limiter)
|
||||
|
||||
let i = 0
|
||||
let sources = []
|
||||
const elems = document.getElementsByClassName("fileThumb")
|
||||
|
||||
for (let e of elems) {
|
||||
sources.push(e.href)
|
||||
}
|
||||
|
||||
const galleryElem = document.getElementById("drImg")
|
||||
|
||||
document.getElementById("drPrev").onclick = () => prevImg()
|
||||
document.getElementById("drNext").onclick = () => nextImg()
|
||||
dragElement(document.getElementById("drGallery"))
|
Loading…
Reference in New Issue
Block a user