Dev.to Image Lightbox

Add image lightbox to dev.to

  1. // ==UserScript==
  2. // @name Dev.to Image Lightbox
  3. // @version 1.0
  4. // @description Add image lightbox to dev.to
  5. // @license MIT
  6. // @author Parsa Kafi
  7. // @namespace https://github.com/parsakafi
  8. // @include https://dev.to/*
  9. // @run-at document-idle
  10. // @grant none
  11. // @icon https://dev.to/favicon.ico
  12. // ==/UserScript==
  13.  
  14. (function () {
  15. 'use strict';
  16.  
  17. var bodyElement = document.getElementsByTagName('body')[0],
  18. bodyImages = document.getElementsByClassName('article-body-image-wrapper');
  19.  
  20. var imageModalStyleSheet = document.createElement('style')
  21. imageModalStyleSheet.innerHTML = "body.active-modal-image{overflow-y:hidden;height: 100%;}#image-modal{display:none;overflow:auto;position:fixed;width:100%;height:100vh;background-color:#fff;z-index:2000;top:0;left:0}#image-modal.display-modal{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;align-items:center;justify-content:center}#image-modal>img{max-width:100%;height:auto;margin:10px;display:block;-webkit-animation-name:zoom;-webkit-animation-duration:.6s;animation-name:zoom;animation-duration:.6s}@-webkit-keyframes zoom{from{-webkit-transform:scale(0)}to{-webkit-transform:scale(1)}}@keyframes zoom{from{transform:scale(0)}to{transform:scale(1)}}#image-modal>button{border:1px solid #0d1219;color:#fff;background-color:#141f2d;position:absolute;right:30px;top:30px;font-size:1.2em;padding:0 10px 5px;cursor:pointer;z-index:5}body.night-theme #image-modal{background-color:#0d1219}";
  22. document.body.appendChild(imageModalStyleSheet);
  23.  
  24. var imageModalElement = createModalElement('<div id="image-modal"><img src="" /><button id="hide-image-modal">x</button></div>');
  25. document.body.insertBefore(imageModalElement, document.body.childNodes[0]);
  26. var imageModal = document.getElementById('image-modal');
  27.  
  28. document.getElementById('hide-image-modal').addEventListener("click", function () {
  29. toggleImageModal();
  30. });
  31.  
  32. for (var i = 0; i < bodyImages.length; i++) {
  33. (function (index) {
  34. bodyImages[index].addEventListener("click", function (event) {
  35. event.preventDefault();
  36. imageModal.children[0].setAttribute("src", bodyImages[index].getAttribute('href'));
  37. toggleImageModal();
  38. })
  39. })(i);
  40. }
  41.  
  42. function toggleImageModal(){
  43. bodyElement.classList.toggle("active-modal-image");
  44. imageModal.classList.toggle("display-modal");
  45. }
  46.  
  47. function createModalElement(htmlStr) {
  48. var frag = document.createDocumentFragment(),
  49. temp = document.createElement('div');
  50. temp.innerHTML = htmlStr;
  51. while (temp.firstChild) {
  52. frag.appendChild(temp.firstChild);
  53. }
  54. return frag;
  55. }
  56. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址