diff --git a/.env.local b/.env.local index a8cf9114..03b38e30 100644 --- a/.env.local +++ b/.env.local @@ -1,2 +1,2 @@ # 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables -NEXT_PUBLIC_VERSION=3.8.2 +NEXT_PUBLIC_VERSION=3.9.0 diff --git a/blog.config.js b/blog.config.js index 2bbd9f85..6f8c0871 100644 --- a/blog.config.js +++ b/blog.config.js @@ -30,6 +30,10 @@ const BLOG = { CUSTOM_FONT_SANS: ['LXGW WenKai'], // 自定义无衬线字体 CUSTOM_FONT_SERIF: ['LXGW WenKai'], // 自定义衬线字体 + // 自定义外部脚本,外部样式 + CUSTOM_EXTERNAL_JS: [''], // e.g. ['http://xx.com/script.js','http://xx.com/script.js'] + CUSTOM_EXTERNAL_CSS: [''], // e.g. ['http://xx.com/style.css','http://xx.com/style.css'] + // 侧栏布局 是否反转(左变右,右变左) 已支持主题: hexo next medium fukasawa example LAYOUT_SIDEBAR_REVERSE: false, diff --git a/components/ExternalScript.js b/components/ExternalScript.js new file mode 100644 index 00000000..b8253726 --- /dev/null +++ b/components/ExternalScript.js @@ -0,0 +1,25 @@ +import BLOG from '@/blog.config' +import { loadExternalResource } from '@/lib/utils' +import React from 'react' + +/** + * 自定义引入外部JS 和 CSS + * @returns + */ +const ExternalScript = () => { + React.useEffect(() => { + if (BLOG.CUSTOM_EXTERNAL_JS && BLOG.CUSTOM_EXTERNAL_JS.length > 0) { + for (const url of BLOG.CUSTOM_EXTERNAL_JS) { + loadExternalResource(url, 'js') + } + } + if (BLOG.CUSTOM_EXTERNAL_CSS && BLOG.CUSTOM_EXTERNAL_CSS.length > 0) { + for (const url of BLOG.CUSTOM_EXTERNAL_CSS) { + loadExternalResource(url, 'css') + } + } + }, []) + return null +} + +export default ExternalScript diff --git a/package.json b/package.json index 4dca8b5b..611d0921 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "notion-next", - "version": "3.8.2", + "version": "3.9.0", "homepage": "https://github.com/tangly1024/NotionNext.git", "license": "MIT", "repository": { diff --git a/pages/_app.js b/pages/_app.js index f0eedb2c..eee3dad6 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -31,6 +31,7 @@ import { Ribbon } from '@/components/Ribbon' import { Sakura } from '@/components/Sakura' import { StarrySky } from '@/components/StarrySky' import MusicPlayer from '@/components/MusicPlayer' +import ExternalScript from '@/components/ExternalScript' const Ackee = dynamic(() => import('@/components/Ackee'), { ssr: false }) const Gtag = dynamic(() => import('@/components/Gtag'), { ssr: false }) @@ -59,6 +60,7 @@ const MyApp = ({ Component, pageProps }) => { {JSON.parse(BLOG.NEST) && } {JSON.parse(BLOG.FLUTTERINGRIBBON) && } {JSON.parse(BLOG.RIBBON) && } + // 默认Webfont: 请在font.js文件中检查font-family 新版改从npm本地导入; diff --git a/pages/_document.js b/pages/_document.js index 4438697e..c24fa5c9 100644 --- a/pages/_document.js +++ b/pages/_document.js @@ -14,7 +14,6 @@ class MyDocument extends Document { - diff --git a/styles/notion.css b/styles/notion.css index 24f15562..2be54923 100644 --- a/styles/notion.css +++ b/styles/notion.css @@ -700,6 +700,10 @@ svg.notion-page-icon { max-width: 100%; } +.notion-asset-wrapper-image > div { + height: auto !important; +} + .notion-asset-wrapper-full { /* max-width: 100vw; */ } diff --git a/themes/hexo/components/Header.js b/themes/hexo/components/Header.js index bf5e5d09..fa2c5e39 100644 --- a/themes/hexo/components/Header.js +++ b/themes/hexo/components/Header.js @@ -15,7 +15,6 @@ const Header = props => { const [typed, changeType] = useState() const { siteInfo } = props useEffect(() => { - scrollTrigger() updateHeaderHeight() if (!typed && window && document.getElementById('typed')) { changeType( @@ -29,45 +28,20 @@ const Header = props => { }) ) } - window.addEventListener('scroll', scrollTrigger) + if (enableAutoScroll) { + scrollTrigger() + window.addEventListener('scroll', scrollTrigger) + } + window.addEventListener('resize', updateHeaderHeight) return () => { - window.removeEventListener('scroll', scrollTrigger) + if (enableAutoScroll) { + window.removeEventListener('scroll', scrollTrigger) + } window.removeEventListener('resize', updateHeaderHeight) } }) - const autoScrollEnd = () => { - if (autoScroll) { - windowTop = window.scrollY - autoScroll = false - } - } - - /** - * 自动吸附滚动,移动端体验不好暂时关闭 - */ - const scrollTrigger = () => { - if (screen.width <= 768) { - return - } - - const scrollS = window.scrollY - // 自动滚动 - if ((scrollS > windowTop) & (scrollS < window.innerHeight) && !autoScroll - ) { - autoScroll = true - window.scrollTo({ top: wrapperTop, behavior: 'smooth' }) - setTimeout(autoScrollEnd, 500) - } - if ((scrollS < windowTop) && (scrollS < window.innerHeight) && !autoScroll) { - autoScroll = true - window.scrollTo({ top: 0, behavior: 'smooth' }) - setTimeout(autoScrollEnd, 500) - } - windowTop = scrollS - } - function updateHeaderHeight () { setTimeout(() => { const wrapperElement = document.getElementById('wrapper') @@ -106,4 +80,37 @@ const Header = props => { ) } +const enableAutoScroll = false // 是否开启自动吸附滚动 + +const autoScrollEnd = () => { + if (autoScroll) { + windowTop = window.scrollY + autoScroll = false + } +} + +/** + * 自动吸附滚动,移动端体验不好暂时关闭 + */ +const scrollTrigger = () => { + if (screen.width <= 768) { + return + } + + const scrollS = window.scrollY + // 自动滚动 + if ((scrollS > windowTop) & (scrollS < window.innerHeight) && !autoScroll + ) { + autoScroll = true + window.scrollTo({ top: wrapperTop, behavior: 'smooth' }) + setTimeout(autoScrollEnd, 500) + } + if ((scrollS < windowTop) && (scrollS < window.innerHeight) && !autoScroll) { + autoScroll = true + window.scrollTo({ top: 0, behavior: 'smooth' }) + setTimeout(autoScrollEnd, 500) + } + windowTop = scrollS +} + export default Header