mirror of
https://ghfast.top/https://github.com/zsjy/halo-theme-dream2.0-plus.git
synced 2025-03-16 12:29:41 +08:00
1 line
24 KiB
JavaScript
1 line
24 KiB
JavaScript
(()=>{var __webpack_modules__={"./src/js/common.js":()=>{eval("window.encrypt = (str) => window.btoa(unescape(encodeURIComponent(str)))\r\nwindow.decrypt = (str) => decodeURIComponent(escape(window.atob(str)))\r\n\r\nconst commonContext = {\r\n /* 初始化widget */\r\n initWidget() {\r\n const $columnRight = $('.columns .column-right')\r\n const $columnRightShadow = $('.columns .column-right-shadow')\r\n // 实现将右边widget拷贝的左边\r\n if ($columnRight.length && $columnRightShadow.length && !$columnRightShadow[0].children.length) {\r\n for (const child of $columnRight[0].children) {\r\n $columnRightShadow[0].append(child.cloneNode(true))\r\n }\r\n }\r\n },\r\n /* 初始化目录和公告模块 */\r\n initTocAndNotice() {\r\n const {pathname} = location\r\n window.tocPjax && window.tocPjax()\r\n let hideToc = $('.widget.toc .card-content ul').length === 0\r\n let hideNotice = (DreamConfig.notice_show_mode === 'toc' && !hideToc)\r\n || (DreamConfig.notice_show_mode === 'index' && pathname !== '/')\r\n if (hideToc) {\r\n $('.widget.toc,.action-toc').addClass('is-hidden-all')\r\n } else {\r\n $('.widget.toc,.action-toc').removeClass('is-hidden-all')\r\n }\r\n if (hideNotice) {\r\n $('.widget.notice').addClass('is-hidden-all')\r\n } else {\r\n $('.widget.notice').removeClass('is-hidden-all')\r\n }\r\n },\r\n /* 更新横幅大图的文字描述 */\r\n initBanner() {\r\n const $bannerInfoDesc = $('.banner-info-desc')\r\n if ($bannerInfoDesc.length === 0) return\r\n const bannerDesc = $bannerInfoDesc.text()\r\n $bannerInfoDesc.text('')\r\n let currentBannerDesc = ''\r\n let isWrite = true\r\n let id\r\n const updateDesc = function () {\r\n let num = currentBannerDesc.length\r\n if (isWrite && num < bannerDesc.length) {\r\n currentBannerDesc += bannerDesc.charAt(num)\r\n $bannerInfoDesc.text(currentBannerDesc)\r\n } else if (!isWrite && num > 0) {\r\n currentBannerDesc = currentBannerDesc.slice(0, num - 1)\r\n $bannerInfoDesc.text(currentBannerDesc)\r\n } else {\r\n clearInterval(id)\r\n isWrite = !isWrite\r\n id = setInterval(updateDesc, isWrite ? 500 : 80)\r\n }\r\n }\r\n id = setInterval(updateDesc, isWrite ? 500 : 80)\r\n },\r\n /* 激活图片预览功能 */\r\n initGallery() {\r\n // 用链接和标题包装图像\r\n $('.main-content img:not(.not-gallery)').each(function () {\r\n if ($(this).parents('[data-fancybox],mew-photos').length === 0) {\r\n $(this).wrap(`<div class=\"gallery-item\"><div data-fancybox=\"gallery\" ${this.alt ? `data-caption=\"${this.alt}\"` : ''} href=\"${$(this).attr('src')\r\n }\"></div>${(this.alt && DreamConfig.show_img_name) ? `<p>${this.alt}</p>` : ''}</div>`)\r\n }\r\n })\r\n },\r\n /* 初始化主题模式(仅用户模式) */\r\n initMode() {\r\n let isNight = localStorage.getItem('night') || false\r\n const applyNight = (isNightValue) => {\r\n if (isNightValue) {\r\n // 配色方案\r\n $('html').addClass('color-scheme-dark').removeClass('color-scheme-light').addClass('night')\r\n } else {\r\n // 配色方案\r\n $('html').addClass('color-scheme-light').removeClass('color-scheme-dark').removeClass('night')\r\n }\r\n localStorage.setItem('night', isNightValue)\r\n isNight = isNightValue\r\n }\r\n //切换按钮\r\n $('#toggle-mode').on('click', () => applyNight(isNight.toString() !== 'true'))\r\n //加载后首选的配色\r\n if (DreamConfig.default_theme === 'system') {\r\n window.matchMedia('(prefers-color-scheme: dark)')\r\n .addListener((event) => applyNight(event.matches))\r\n } else {\r\n applyNight(isNight.toString() === 'true')\r\n }\r\n },\r\n /* 导航条高亮 */\r\n initNavbar() {\r\n const $nav_menus = $('.navbar-nav a')\r\n const $nav_side_menus = $('.panel-side-menu .link')\r\n let activeIndex = 0\r\n const {href, pathname} = location\r\n\r\n if (pathname && pathname !== '/') {\r\n for (let i = 0; i < $nav_menus.length; i++) {\r\n const cur_href = $nav_menus[i].getAttribute('href')\r\n if (pathname.includes(cur_href) || href.includes(cur_href)) {\r\n activeIndex = i\r\n if (pathname === cur_href || href === cur_href) break\r\n }\r\n }\r\n }\r\n\r\n // 高亮PC端\r\n const $curMenu = $nav_menus.eq(activeIndex)\r\n $curMenu.addClass('current')\r\n if ($curMenu.parents('.item-dropdown').length) {\r\n $curMenu\r\n .parents('.item-dropdown')\r\n .find('.item-dropdown-link a')\r\n .addClass('current')\r\n }\r\n\r\n // 高亮移动端\r\n $nav_side_menus.eq(activeIndex).addClass('current')\r\n },\r\n /* 激活导航栏全局下拉框功能 */\r\n initDropMenu() {\r\n $('.item-dropdown').each(function (index, item) {\r\n const menu = $(this).find('.item-dropdown-menu')\r\n const trigger = $(item).attr('trigger') || 'click'\r\n const placement = $(item).attr('placement') || $(this).height() || 0\r\n menu.css('top', placement)\r\n if (trigger === 'hover') {\r\n $(this).hover(\r\n () => $(this).addClass('active'),\r\n () => $(this).removeClass('active')\r\n )\r\n } else {\r\n $(this).on('click', function (e) {\r\n e.stopPropagation()\r\n $(this).toggleClass('active')\r\n $(document).one('click', () => $(this).removeClass('active'))\r\n e.stopPropagation()\r\n })\r\n menu.on('click', (e) => e.stopPropagation())\r\n }\r\n })\r\n },\r\n /* 处理滚动 */\r\n initScroll() {\r\n window.initTop = 0\r\n\r\n // true:上划,false:下滑\r\n function scrollDirection(currentTop) {\r\n const result = currentTop > window.initTop\r\n window.initTop = currentTop\r\n return result\r\n }\r\n\r\n const handleScroll = () => {\r\n const scrollTop = $(document).scrollTop()\r\n const direction = scrollDirection(scrollTop)\r\n const $body = $('body')\r\n const $actions = $('.actions')\r\n if (scrollTop > 50 && direction) {\r\n $body.addClass('move-up')\r\n } else {\r\n $body.removeClass('move-up')\r\n }\r\n if (scrollTop > 100) {\r\n $actions.addClass('show')\r\n } else {\r\n $actions.removeClass('show')\r\n }\r\n }\r\n document.addEventListener('scroll', handleScroll)\r\n },\r\n /* 小屏幕伸缩侧边栏,包含导航或者目录 */\r\n drawerMobile() {\r\n $('.navbar-slideicon').on('click', function (e) {\r\n e.stopPropagation()\r\n /* 关闭搜索框 */\r\n $('.navbar-searchout').removeClass('active')\r\n /* 处理开启关闭状态 */\r\n const $html = $('html')\r\n const $mask = $('.navbar-mask')\r\n const $slide_out = $('.navbar-slideout')\r\n if ($slide_out.hasClass('active')) {\r\n $html.removeClass('disable-scroll')\r\n $mask.removeClass('active slideout')\r\n $slide_out.removeClass('active')\r\n } else {\r\n $html.addClass('disable-scroll')\r\n $mask.addClass('active slideout')\r\n $slide_out.addClass('active')\r\n }\r\n })\r\n $('.action-toc').on('click', function (e) {\r\n e.stopPropagation()\r\n /* 关闭搜索框 */\r\n $('.navbar-searchout').removeClass('active')\r\n /* 处理开启关闭状态 */\r\n const $html = $('html')\r\n const $mask = $('.navbar-mask')\r\n const $slide_out = $('.navbar-slideout')\r\n if ($slide_out.hasClass('active')) {\r\n $html.removeClass('disable-scroll')\r\n $mask.removeClass('active slideout')\r\n $slide_out.removeClass('active slideout-toc')\r\n } else {\r\n $html.addClass('disable-scroll')\r\n $mask.addClass('active slideout')\r\n $slide_out.addClass('active slideout-toc')\r\n }\r\n })\r\n },\r\n /* 激活全局返回顶部功能 */\r\n back2Top() {\r\n $('#back-to-top').on('click', function () {\r\n $('body, html').animate({scrollTop: 0}, 400)\r\n })\r\n },\r\n /* 点击遮罩层关闭 */\r\n maskClose() {\r\n $('.navbar-mask')\r\n .on('click', function (e) {\r\n e.stopPropagation()\r\n $('html').removeClass('disable-scroll')\r\n $('.navbar-mask').removeClass('active slideout')\r\n $('.navbar-searchout').removeClass('active')\r\n $('.navbar-slideout').removeClass('active slideout-toc')\r\n $('.navbar-above').removeClass('solid')\r\n })\r\n .on('touchmove', (e) => e.preventDefault)\r\n $('.navbar .toc-content')\r\n .on('click', function (e) {\r\n e.stopPropagation()\r\n $('html').removeClass('disable-scroll')\r\n $('.navbar-mask').removeClass('active slideout')\r\n $('.navbar-slideout').removeClass('active slideout-toc')\r\n })\r\n },\r\n /* 移动端侧边栏菜单手风琴 */\r\n sideMenuMobile() {\r\n $('.navbar-slideout-menu .current')\r\n .parents('.panel-body')\r\n .show()\r\n .siblings('.panel')\r\n .addClass('in')\r\n $('.navbar-slideout-menu .panel').on('click', function (e) {\r\n e.stopPropagation()\r\n const $this = $(this)\r\n const panelBox = $this.parent().parent()\r\n /* 清除全部内容 */\r\n panelBox.find('.panel').not($this).removeClass('in')\r\n panelBox\r\n .find('.panel-body')\r\n .not($this.siblings('.panel-body'))\r\n .stop()\r\n .hide('fast')\r\n /* 激活当前的内容 */\r\n $this.toggleClass('in').siblings('.panel-body').stop().toggle('fast')\r\n })\r\n },\r\n /* 初始化事件 */\r\n initEvent() {\r\n let $body = $('body')\r\n\r\n function closeSelect(elem) {\r\n let $elem = $(elem)\r\n const closeSelect = $elem.attr('data-close')\r\n return closeSelect && closeSelect.trim() !== '' ? $elem.closest(closeSelect.trim()) : $elem\r\n }\r\n\r\n $body.on('click', '.click-close', function (e) {\r\n e.stopPropagation()\r\n closeSelect(this).remove()\r\n })\r\n $body.on('click', '.click-animation-close', function (e) {\r\n e.stopPropagation()\r\n let selectElem = closeSelect(this)\r\n selectElem.addClass('close-animation')\r\n setTimeout(() => selectElem.remove(), 300)\r\n })\r\n },\r\n /* 离屏提示 */\r\n offscreenTip() {\r\n if (Utils.isMobile() || (!DreamConfig.document_hidden_title && !DreamConfig.document_visible_title)) return\r\n // const originTitle = document.title\r\n let originTitle = document.title\r\n let timer = null\r\n document.addEventListener('visibilitychange', function () {\r\n if (document.hidden) {\r\n if (!DreamConfig.document_visible_title || document.title !== DreamConfig.document_visible_title) {\r\n originTitle = document.title\r\n }\r\n DreamConfig.document_hidden_title && (document.title = DreamConfig.document_hidden_title)\r\n clearTimeout(timer)\r\n } else {\r\n document.title = DreamConfig.document_visible_title || originTitle\r\n DreamConfig.document_visible_title && (timer = setTimeout(function () {\r\n if (document.title === DreamConfig.document_visible_title) {\r\n document.title = originTitle\r\n }\r\n }, 2000))\r\n }\r\n })\r\n },\r\n /** 初始化轮播 **/\r\n initCarousel() {\r\n window.Swiper && new Swiper('.swiper', {\r\n loop: true,\r\n parallax: true,\r\n effect: 'slide',\r\n spaceBetween: 10,\r\n speed: 600,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false,\r\n pauseOnMouseEnter: true,\r\n },\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n })\r\n },\r\n /* 个人信息界面打印彩字 */\r\n sparkInput() {\r\n const sparkInputContent = DreamConfig.spark_input_content && DreamConfig.spark_input_content.filter(s => s.length > 0)\r\n if (sparkInputContent && sparkInputContent.length > 0) {\r\n Utils.cachedScript(`${DreamConfig.theme_base}/js/spark-input.min.js?mew=${DreamConfig.theme_version}`, function () {\r\n $('.spark-input').each((index, domEle) => sparkInput(domEle, [domEle.innerText, ...sparkInputContent]))\r\n })\r\n }\r\n },\r\n /* 恋爱墙倒计时 */\r\n loveTime() {\r\n let $elem = $('.love .love-time')\r\n if ($elem.length === 0) return\r\n let loveTime = $elem.attr('data-time')\r\n if (!/^\\d{4}\\/\\d{2}\\/\\d{2} \\d{2}:\\d{2}:\\d{2}$/.test(loveTime)) {\r\n $elem.html(loveTime)\r\n return\r\n }\r\n const now = new Date()\r\n const grt = new Date(loveTime)\r\n setInterval(function () {\r\n now.setTime(now.getTime() + 1000)\r\n let difference = parseInt((now - grt) / 1000)\r\n let seconds = difference % 60\r\n difference = parseInt(difference / 60)\r\n let minutes = difference % 60\r\n difference = parseInt(difference / 60)\r\n let hours = difference % 24\r\n let days = parseInt(difference / 24)\r\n let year = 0\r\n let grtYear = grt.getFullYear()\r\n let nowYear = now.getFullYear()\r\n while (grtYear < nowYear) {\r\n if ((grtYear % 4 === 0 && grtYear % 100 !== 0) || grtYear % 400 === 0) {\r\n // 闰年366天\r\n if (days < 366) break\r\n days -= 366\r\n year += 1\r\n grtYear += 1\r\n } else {\r\n // 平年365天\r\n if (days < 365) break\r\n days -= 365\r\n year += 1\r\n grtYear += 1\r\n }\r\n }\r\n if (year !== 0) {\r\n $elem.html(`${year} 年 ${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`)\r\n } else {\r\n $elem.html(`${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`)\r\n }\r\n }, 1000)\r\n },\r\n /* 激活建站倒计时功能 */\r\n websiteTime() {\r\n if (!DreamConfig.website_time) {\r\n return\r\n }\r\n const websiteDate = document.getElementById('websiteDate')\r\n if (DreamConfig.website_time === '') {\r\n return\r\n }\r\n const grt = new Date(DreamConfig.website_time).getTime()\r\n setInterval(function () {\r\n let now = Date.now()\r\n let difference = parseInt((now - grt) / 1000)\r\n let seconds = difference % 60\r\n if (String(seconds).length === 1) {\r\n seconds = '0' + seconds\r\n }\r\n difference = parseInt(difference / 60)\r\n\r\n let minutes = difference % 60\r\n if (String(minutes).length === 1) {\r\n minutes = '0' + minutes\r\n }\r\n difference = parseInt(difference / 60)\r\n\r\n let hours = difference % 24\r\n if (String(hours).length === 1) {\r\n hours = '0' + hours\r\n }\r\n let days = parseInt(difference / 24)\r\n websiteDate.innerHTML = `建站<span class=\"stand\">${days}</span>天<span class=\"stand\">${hours}</span>时<span class=\"stand\">${minutes}</span>分<span class=\"stand\">${seconds}</span>秒`\r\n }, 500)\r\n },\r\n /* 显示web版权 */\r\n webCopyright() {\r\n if (!DreamConfig.website_time) {\r\n return\r\n }\r\n const webCopyright = document.getElementById('webCopyright')\r\n const now = new Date()\r\n let nowYear = now.getFullYear()\r\n const grt = new Date(DreamConfig.website_time)\r\n let getYear = grt.getFullYear()\r\n if (nowYear === getYear) {\r\n webCopyright.innerText = '© ' + nowYear\r\n return\r\n }\r\n\r\n webCopyright.innerText = '© ' + getYear + '-' + nowYear\r\n },\r\n /* 激活侧边栏人生倒计时 */\r\n initTimeCount() {\r\n if (!$('.timelife').length) {\r\n return\r\n }\r\n if (timeLifeHour === new Date().getHours()) {\r\n return\r\n }\r\n let timelife = [\r\n {\r\n title: '今日已经过去',\r\n endTitle: '小时',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '这周已经过去',\r\n endTitle: '天',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '本月已经过去',\r\n endTitle: '天',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n {\r\n title: '今年已经过去',\r\n endTitle: '个月',\r\n num: 0,\r\n percent: '0%',\r\n },\r\n ]\r\n {\r\n let nowDate = +new Date()\r\n let todayStartDate = new Date(new Date().toLocaleDateString()).getTime()\r\n let todayPassHours = (nowDate - todayStartDate) / 1000 / 60 / 60\r\n timeLifeHour = todayPassHours\r\n let todayPassHoursPercent = (todayPassHours / 24) * 100\r\n timelife[0].num = parseInt(todayPassHours)\r\n timelife[0].percent = parseInt(todayPassHoursPercent) + '%'\r\n }\r\n {\r\n let weeks = {\r\n 0: 7,\r\n 1: 1,\r\n 2: 2,\r\n 3: 3,\r\n 4: 4,\r\n 5: 5,\r\n 6: 6,\r\n }\r\n let weekDay = weeks[new Date().getDay()]\r\n let weekDayPassPercent = (weekDay / 7) * 100\r\n timelife[1].num = parseInt(weekDay)\r\n timelife[1].percent = parseInt(weekDayPassPercent) + '%'\r\n }\r\n {\r\n let year = new Date().getFullYear()\r\n let date = new Date().getDate()\r\n let month = new Date().getMonth() + 1\r\n let monthAll = new Date(year, month, 0).getDate()\r\n let monthPassPercent = (date / monthAll) * 100\r\n timelife[2].num = date\r\n timelife[2].percent = parseInt(monthPassPercent) + '%'\r\n }\r\n {\r\n let month = new Date().getMonth() + 1\r\n let yearPass = (month / 12) * 100\r\n timelife[3].num = month\r\n timelife[3].percent = parseInt(yearPass) + '%'\r\n }\r\n let htmlStr = ''\r\n timelife.forEach((item, index) => {\r\n htmlStr += `\r\n\t\t\t\t\t\t<div class=\"item\">\r\n\t\t\t\t\t\t\t<div class=\"title\">\r\n\t\t\t\t\t\t\t\t${item.title}\r\n\t\t\t\t\t\t\t\t<span class=\"text\">${item.num}</span>\r\n\t\t\t\t\t\t\t\t${item.endTitle}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"progress\">\r\n\t\t\t\t\t\t\t\t<div class=\"progress-bar\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"progress-bar-inner progress-bar-inner-${index}\" style=\"width: ${item.percent}\"></div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div class=\"progress-percentage\">${item.percent}</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>`\r\n })\r\n $('.aside-timelife').html(htmlStr)\r\n },\r\n /* 安全链接 */\r\n initSecurityLink() {\r\n if (!DreamConfig.enable_security_link || !DreamConfig.security_link_url || DreamConfig.security_link_url.length === 0) {\r\n return\r\n }\r\n $(document).on('click', 'a[target=_blank]', (event) => {\r\n event.preventDefault() // 防止链接默认行为,即打开新页面\r\n var href = $(event.currentTarget).attr('href')\r\n var hostname = window.location.hostname\r\n\r\n const isInternalLink = (url, siteDomain) => {\r\n // 将URL和站点域名转换为小写,去除前导和尾随空格\r\n url = url.toLowerCase().trim()\r\n siteDomain = siteDomain.toLowerCase().trim()\r\n // 如果URL是协议相对路径或者绝对路径,则转换为完整的URL\r\n if (url.startsWith('//')) {\r\n url = window.location.protocol + url\r\n } else if (url.startsWith('/')) {\r\n url = window.location.origin + url\r\n }\r\n // 如果URL以'http://'或'https://'开头,则去除尾部斜杠\r\n if (url.startsWith('http://') || url.startsWith('https://')) {\r\n url = url.replace(/\\/$/, '')\r\n }\r\n // 对比URL和站点域名\r\n return url.includes(siteDomain)\r\n }\r\n\r\n var tempwindow = window.open('_blank')\r\n tempwindow.location = isInternalLink(href, hostname) ? href : (DreamConfig.security_link_url + '?target=' + encodeURIComponent(href))\r\n })\r\n },\r\n /* 灰色模式 */\r\n initGrayMode() {\r\n if (DreamConfig.gray_mode === true) {\r\n $('html').addClass('gray-mode')\r\n } else if (DreamConfig.gray_mode === 'custom') {\r\n var now = new Date().getTime()\r\n var startTime = new Date(DreamConfig.gray_mode_start_time).getTime()\r\n var endTime = new Date(DreamConfig.gray_mode_end_time).getTime()\r\n if (now >= startTime && now <= endTime) {\r\n $('html').addClass('gray-mode')\r\n }\r\n }\r\n },\r\n /* 初始化特效,只需要初始化一次,移动端设备不初始化 */\r\n initEffects() {\r\n if (Utils.isMobile()) return\r\n DreamConfig.cursor_move && Utils.cachedScript(`${DreamConfig.theme_base}/js/cursor/move/${DreamConfig.cursor_move}.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.cursor_click && Utils.cachedScript(`${DreamConfig.theme_base}/js/cursor/click/${DreamConfig.cursor_click}.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.enable_live2d && Utils.cachedScript(`${DreamConfig.theme_base}/js/autoload.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_lantern_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/lantern.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_sakura_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/sakura.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_snowflake_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/snowflake.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_universe_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/universe.min.js?mew=${DreamConfig.theme_version}`)\r\n DreamConfig.effects_circle_magic_mode && Utils.cachedScript(`${DreamConfig.theme_base}/js/effects/circleMagic.min.js?mew=${DreamConfig.theme_version}`)\r\n },\r\n /*初始化标签云滚动样式*/\r\n initTagCloud() {\r\n if (!$('.tagcloud').length || !DreamConfig.show_tagcloud_style) {\r\n return\r\n }\r\n\r\n tagcloud({\r\n selector: '.tagcloud .card-content', //元素选择器\r\n fontsize: 18, //基本字体大小, 单位px\r\n radius: 75, //滚动半径, 单位px\r\n mspeed: 'slow', //滚动最大速度, 取值: slow, normal(默认), fast\r\n ispeed: 'slow', //滚动初速度, 取值: slow, normal(默认), fast\r\n direction: 45, //初始滚动方向, 取值角度(顺时针360): 0对应top, 90对应left, 135对应right-bottom(默认)...\r\n keep: false //鼠标移出组件后是否继续随鼠标滚动, 取值: false, true(默认) 对应 减速至初速度滚动, 随鼠标滚动\r\n })\r\n },\r\n /* 显示主题版本信息 */\r\n showThemeVersion() {\r\n if (!DreamConfig.enable_console_version_info) {\r\n return\r\n }\r\n window.logger(`%c页面加载耗时:${Math.round(performance.now())}ms | Theme By Dream2 Plus ${DreamConfig.theme_version}`,\r\n 'color:#fff; background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3); padding: 8px 15px; border-radius: 0 15px 0 15px')\r\n }\r\n}\r\n\r\nwindow.commonContext = commonContext\r\nlet timeLifeHour = -1\r\n\r\n!(function () {\r\n const loads = ['initCarousel', 'sparkInput', 'websiteTime']\r\n const omits = ['initEffects', 'showThemeVersion']\r\n\r\n Object.keys(commonContext).forEach(\r\n (c) => !loads.includes(c) && !omits.includes(c) && commonContext[c]()\r\n )\r\n\r\n // 当前html加载完执行\r\n document.addEventListener('DOMContentLoaded', function () {\r\n $('html').addClass('loaded')\r\n loads.forEach((c) => commonContext[c] && commonContext[c]())\r\n })\r\n\r\n // 所有内容加载完执行\r\n window.addEventListener('load', function () {\r\n omits.forEach((c) => commonContext[c] && commonContext[c]())\r\n $('html').addClass('ready')\r\n })\r\n})()\n\n//# sourceURL=webpack://halo-theme-dream2.0-plus/./src/js/common.js?")}},__webpack_exports__={};__webpack_modules__["./src/js/common.js"]()})(); |