diff --git a/templates/assets/js/main.js b/templates/assets/js/main.js index 31ed1db6..a28ff596 100644 --- a/templates/assets/js/main.js +++ b/templates/assets/js/main.js @@ -245,31 +245,31 @@ document.addEventListener('DOMContentLoaded', function () { * 需要 jQuery */ - // let detectJgJsLoad = false - // const runJustifiedGallery = function (ele) { - // const $justifiedGallery = $(ele) - // const $imgList = $justifiedGallery.find('img') - // $imgList.unwrap() - // if ($imgList.length) { - // $imgList.each(function (i, o) { - // if ($(o).attr('data-lazy-src')) $(o).attr('src', $(o).attr('data-lazy-src')) - // $(o).wrap('
') - // }) - // } - // - // if (detectJgJsLoad) btf.initJustifiedGallery($justifiedGallery) - // else { - // $('head').append(``) - // $.getScript(`${GLOBAL_CONFIG.source.justifiedGallery.js}`, function () { - // btf.initJustifiedGallery($justifiedGallery) - // }) - // detectJgJsLoad = true - // } - // } + let detectJgJsLoad = false + const runJustifiedGallery = function (ele) { + const $justifiedGallery = $(ele) + const $imgList = $justifiedGallery.find('img') + $imgList.unwrap() + if ($imgList.length) { + $imgList.each(function (i, o) { + if ($(o).attr('data-lazy-src')) $(o).attr('src', $(o).attr('data-lazy-src')) + $(o).wrap('
') + }) + } + + if (detectJgJsLoad) btf.initJustifiedGallery($justifiedGallery) + else { + $('head').append(``) + $.getScript(`${GLOBAL_CONFIG.source.justifiedGallery.js}`, function () { + btf.initJustifiedGallery($justifiedGallery) + }) + detectJgJsLoad = true + } + } /** - * fancybox和 mediumZoom - */ + * fancybox和 mediumZoom + */ const addFancybox = function (ele) { const runFancybox = (ele) => { ele.each(function (i, o) { @@ -308,26 +308,26 @@ document.addEventListener('DOMContentLoaded', function () { const addMediumZoom = () => { const zoom = mediumZoom(document.querySelectorAll('#article-container :not(a)>img')) zoom.on('open', e => { - const photoBg = document.documentElement.getAttribute('data-theme') === 'dark' ? '#121212' : '#fff' - zoom.update({ - background: photoBg - }) + const photoBg = document.documentElement.getAttribute('data-theme') === 'dark' ? '#121212' : '#fff' + zoom.update({ + background: photoBg + }) }) - } - + } + const jqLoadAndRun = () => { const $fancyboxEle = GLOBAL_CONFIG.lightbox === 'fancybox' - ? document.querySelectorAll('#article-container :not(a):not(.gallery-group) > img, #article-container > img,.bber-content-img > img') - : [] + ? document.querySelectorAll('#article-container :not(a):not(.gallery-group):not(.site-card-avatar) > img, #article-container > img,.bber-content-img > img') + : [] const fbLengthNoZero = $fancyboxEle.length > 0 const $jgEle = document.querySelectorAll('#article-container .justified-gallery') const jgLengthNoZero = $jgEle.length > 0 - + if (jgLengthNoZero || fbLengthNoZero) { - btf.isJqueryLoad(() => { - jgLengthNoZero && runJustifiedGallery($jgEle) - fbLengthNoZero && addFancybox($fancyboxEle) - }) + btf.isJqueryLoad(() => { + jgLengthNoZero && runJustifiedGallery($jgEle) + fbLengthNoZero && addFancybox($fancyboxEle) + }) } } @@ -338,13 +338,13 @@ document.addEventListener('DOMContentLoaded', function () { const $rightside = document.getElementById('rightside') const innerHeight = window.innerHeight + 0 // console.log("滚动处理运行"); - + // 當滾動條小于 0 的時候 if (document.body.scrollHeight <= innerHeight) { - $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' - return + $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' + return } - + let initTop = 0 let isChatShow = true const $header = document.getElementById('page-header') @@ -353,48 +353,48 @@ document.addEventListener('DOMContentLoaded', function () { const isChatBtnHide = typeof chatBtnHide === 'function' const isChatBtnShow = typeof chatBtnShow === 'function' window.addEventListener('scroll', btf.throttle(function (e) { - const currentTop = window.scrollY || document.documentElement.scrollTop - const isDown = scrollDirection(currentTop) - if (currentTop > 0) { - if (isDown) { - if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible') - if (isChatBtnShow && isChatShow === true) { - chatBtnHide() - isChatShow = false - } + const currentTop = window.scrollY || document.documentElement.scrollTop + const isDown = scrollDirection(currentTop) + if (currentTop > 0) { + if (isDown) { + if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible') + if (isChatBtnShow && isChatShow === true) { + chatBtnHide() + isChatShow = false + } + } else { + if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible') + if (isChatBtnHide && isChatShow === false) { + chatBtnShow() + isChatShow = true + } + } + + + $header.classList.add('nav-fixed') + if($cookies_window!=null && $cookies_window!=''){ + $cookies_window.classList.add('cw-hide') + } + if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') { + $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' + } } else { - if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible') - if (isChatBtnHide && isChatShow === false) { - chatBtnShow() - isChatShow = true - } + if (currentTop === 0) { + $header.classList.remove('nav-fixed', 'nav-visible') + } + $rightside.style.cssText = "opacity: ''; transform: ''" } - - $header.classList.add('nav-fixed') - if($cookies_window!=null && $cookies_window!=''){ - $cookies_window.classList.add('cw-hide') - } - if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') { - $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' + if (document.body.scrollHeight <= innerHeight) { + $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' } - } else { - if (currentTop === 0) { - $header.classList.remove('nav-fixed', 'nav-visible') - } - $rightside.style.cssText = "opacity: ''; transform: ''" - } - - if (document.body.scrollHeight <= innerHeight) { - $rightside.style.cssText = 'opacity: 1; transform: translateX(-38px)' - } }, 200)) - + // find the scroll direction function scrollDirection (currentTop) { - const result = currentTop > initTop // true is down & false is up - initTop = currentTop - return result + const result = currentTop > initTop // true is down & false is up + initTop = currentTop + return result } } @@ -867,7 +867,7 @@ document.addEventListener('DOMContentLoaded', function () { }) clickFnOfSubMenu() - + GLOBAL_CONFIG.copyright !== undefined && addCopyright() } @@ -891,7 +891,7 @@ document.addEventListener('DOMContentLoaded', function () { sidebarFn() GLOBAL_CONFIG.isHome && scrollDownInIndex() // addHighlightTool() - // GLOBAL_CONFIG.isPhotoFigcaption && addPhotoFigcaption() + //GLOBAL_CONFIG.isPhotoFigcaption && addPhotoFigcaption() scrollFn() addTableWrap() clickFnOfTagHide() diff --git a/templates/assets/js/utils.js b/templates/assets/js/utils.js index 61c55b3a..140e5824 100644 --- a/templates/assets/js/utils.js +++ b/templates/assets/js/utils.js @@ -4,16 +4,16 @@ var btf = { // 修改时间显示"最近" diffDate: function (d, more = false) { - const dateNow = new Date(); - const datePost = new Date(d); - const dateDiff = dateNow.getTime() - datePost.getTime(); - const minute = 1000 * 60; - const hour = minute * 60; - const day = hour * 24; - const month = day * 30; + const dateNow = new Date(); + const datePost = new Date(d); + const dateDiff = dateNow.getTime() - datePost.getTime(); + const minute = 1000 * 60; + const hour = minute * 60; + const day = hour * 24; + const month = day * 30; - let result; - if (more) { + let result; + if (more) { const monthCount = dateDiff / month; const dayCount = dateDiff / day; const hourCount = dateDiff / hour; @@ -30,49 +30,108 @@ var btf = { } else { result = GLOBAL_CONFIG.date_suffix.just; } - } else { - result = parseInt(dateDiff / day); + } else { + result = parseInt(dateDiff / day); } return result; }, + // loadLightbox: ele => { + // const service = GLOBAL_CONFIG.lightbox; + + // if (service === "mediumZoom") { + // const zoom = mediumZoom(ele); + // zoom.on("open", e => { + // const photoBg = document.documentElement.getAttribute("data-theme") === "dark" ? "#121212" : "#fff"; + // zoom.update({ + // background: photoBg, + // }); + // }); + // } + + // if (service === "fancybox") { + // ele.forEach(i => { + // if (i.parentNode.tagName !== "A") { + // const dataSrc = i.dataset.lazySrc || i.src; + // const dataCaption = i.title || i.alt || ""; + // btf.wrap(i, "a", { + // href: dataSrc, + // "data-fancybox": "gallery", + // "data-caption": dataCaption, + // "data-thumb": dataSrc, + // }); + // } + // }); + + // if (!window.fancyboxRun) { + // Fancybox.bind("[data-fancybox]", { + // Hash: false, + // Thumbs: { + // autoStart: false, + // }, + // }); + // window.fancyboxRun = true; + // } + // } + // }, loadLightbox: ele => { - const service = GLOBAL_CONFIG.lightbox; - - if (service === "mediumZoom") { - const zoom = mediumZoom(ele); - zoom.on("open", e => { - const photoBg = document.documentElement.getAttribute("data-theme") === "dark" ? "#121212" : "#fff"; - zoom.update({ - background: photoBg, - }); - }); - } - - if (service === "fancybox") { - ele.forEach(i => { - if (i.parentNode.tagName !== "A") { - const dataSrc = i.dataset.lazySrc || i.src; - const dataCaption = i.title || i.alt || ""; - btf.wrap(i, "a", { - href: dataSrc, - "data-fancybox": "gallery", - "data-caption": dataCaption, - "data-thumb": dataSrc, - }); + + const jqLoadAndRun = () => { + const $fancyboxEle = GLOBAL_CONFIG.lightbox === 'fancybox' + ? ele + : [] + const fbLengthNoZero = $fancyboxEle.length > 0 + + if (fbLengthNoZero) { + btf.isJqueryLoad(() => { + fbLengthNoZero && addFancybox($fancyboxEle) + }) } - }); - - if (!window.fancyboxRun) { - Fancybox.bind("[data-fancybox]", { - Hash: false, - Thumbs: { - autoStart: false, - }, - }); - window.fancyboxRun = true; - } } + + + + + /** + * fancybox + */ + const addFancybox = function (ele) { + const runFancybox = (ele) => { + ele.each(function (i, o) { + const $this = $(o) + const lazyloadSrc = $this.attr('data-lazy-src') || $this.attr('src') + const lazyloadSrc1600 = lazyloadSrc + '_1600w' + const dataCaption = $this.attr('alt') || '' + if (lazyloadSrc.indexOf('!blogimg') != -1) { + $this.wrap(``) + } else { + $this.wrap(``) + } + + }) + + $().fancybox({ + selector: '[data-fancybox]', + loop: true, + transitionEffect: 'slide', + protect: true, + buttons: ['slideShow', 'fullScreen', 'thumbs', 'close'], + hash: false + }) + } + + if (typeof $.fancybox === 'undefined') { + $('head').append(``) + $.getScript(`${GLOBAL_CONFIG.source.fancybox.js}`, function () { + runFancybox($(ele)) + }) + } else { + runFancybox($(ele)) + } + } + + jqLoadAndRun() + }, debounce: function (func, wait, immediate) { let timeout @@ -217,7 +276,7 @@ var btf = { } }, - + scrollToDest: (e,t)=>{ if (e < 0 || t < 0) return; @@ -230,19 +289,19 @@ var btf = { }); let o = null; t = t || 500, - window.requestAnimationFrame((function i(s) { - if (o = o || s, - n < e) { - const r = s - o; - window.scrollTo(0, (e - n) * r / t + n), - r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) - } else { - const r = s - o; - window.scrollTo(0, n - (n - e) * r / t), - r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) - } - } - )) + window.requestAnimationFrame((function i(s) { + if (o = o || s, + n < e) { + const r = s - o; + window.scrollTo(0, (e - n) * r / t + n), + r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) + } else { + const r = s - o; + window.scrollTo(0, n - (n - e) * r / t), + r < t ? window.requestAnimationFrame(i) : window.scrollTo(0, e) + } + } + )) }, fadeIn: (ele, time) => { diff --git a/templates/modules/head.html b/templates/modules/head.html index b73a425e..cddc608a 100644 --- a/templates/modules/head.html +++ b/templates/modules/head.html @@ -174,6 +174,17 @@ allPlaylist: [[${theme.config.other.nav_music.all_playlist}]], navMusicEnable:[[${theme.config.other.nav_musicEnable}]], isMusic: [[${ htmlType == 'music'}]], + source: { + jQuery: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js', + justifiedGallery: { + js: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/justifiedGallery/3.8.1/js/jquery.justifiedGallery.min.js', + css: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/justifiedGallery/3.8.1/css/justifiedGallery.min.css' + }, + fancybox: { + js: 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.js', + css: 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/fancybox/3.5.7/jquery.fancybox.min.css' + } + }, date_suffix: { just: '刚刚', min: '分钟前', diff --git a/templates/modules/twikoo.html b/templates/modules/twikoo.html index 6b9e1b21..1b2f09fe 100644 --- a/templates/modules/twikoo.html +++ b/templates/modules/twikoo.html @@ -17,7 +17,7 @@ envId: [[${theme.config.comments.twikoos.envId}]], region: '', onCommentLoaded: function () { - //- btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.vemoji)')) + btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.vemoji)')) $("input").focus(function () { heo_intype = true; });