From 0c719be17e8affb28dd42c9c8bfb52e3e21d9790 Mon Sep 17 00:00:00 2001
From: MHuiG <616001163@qq.com>
Date: Mon, 15 Aug 2022 08:49:13 +0800
Subject: [PATCH] fix(#781): content_visibility: false
---
_config.yml | 4 +++
layout/_partial/scripts/index.ejs | 4 ++-
scripts/filters/content-visibility.js | 38 ++++++++++++++-------------
source/css/first.styl | 24 +++++++++--------
4 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/_config.yml b/_config.yml
index 3d0288c6f..84b59b8da 100755
--- a/_config.yml
+++ b/_config.yml
@@ -61,6 +61,10 @@ cdn_version: false
# https://github.com/volantis-x/volantis-static
volantis_static_cdn: https://unpkg.com/volantis-static@0.0.1654736714924/
########################################################################
+# https://web.dev/content-visibility/
+# https://www.caniuse.com/?search=content-visibility
+content_visibility: false
+
# 全局页面字符串替换 A => B (可用于临时修改错字等)
replace:
- https://cdn.jsdelivr.net/npm/ => https://unpkg.com/
diff --git a/layout/_partial/scripts/index.ejs b/layout/_partial/scripts/index.ejs
index 41da2ae9a..c7920a85c 100644
--- a/layout/_partial/scripts/index.ejs
+++ b/layout/_partial/scripts/index.ejs
@@ -136,7 +136,9 @@
<%- partial('toc') %>
-<%- partial('content-visibility-scroll-fix') %>
+<% if (theme.content_visibility) { %>
+ <%- partial('content-visibility-scroll-fix') %>
+<% } %>
<%- partial('../../_plugins/slow-network/script') %>
diff --git a/scripts/filters/content-visibility.js b/scripts/filters/content-visibility.js
index c7d5fcc12..a0d3d2f60 100644
--- a/scripts/filters/content-visibility.js
+++ b/scripts/filters/content-visibility.js
@@ -2,24 +2,26 @@
// https://www.caniuse.com/?search=content-visibility
// 在文章内容渲染时将每两个
之间的内容分为一块 用
包裹起来。然后为 .post-story 声明 content-visibility: auto
hexo.extend.filter.register('after_post_render', function (data) {
- let dataList = data.content.split('\n')
- let mydata = ``
- let flag = 1
- dataList.forEach(e => {
- let yy = e.replace(/.*?<\/h2>/, function (str) {
- if (flag) {
- flag = 0
- return `` + str
- } else {
- return `
` + str
- }
- })
- mydata += yy
- mydata += "\n"
- });
- if (!flag) {
- mydata += `
`
+ if (this.theme.config.content_visibility) {
+ let dataList = data.content.split('\n')
+ let mydata = ``
+ let flag = 1
+ dataList.forEach(e => {
+ let yy = e.replace(/.*?<\/h2>/, function (str) {
+ if (flag) {
+ flag = 0
+ return `` + str
+ } else {
+ return `
` + str
+ }
+ })
+ mydata += yy
+ mydata += "\n"
+ });
+ if (!flag) {
+ mydata += `
`
+ }
+ data.content = mydata
}
- data.content = mydata
return data;
});
\ No newline at end of file
diff --git a/source/css/first.styl b/source/css/first.styl
index 4fad2791e..2b8838022 100644
--- a/source/css/first.styl
+++ b/source/css/first.styl
@@ -1,17 +1,19 @@
#safearea {
display: none
}
-// https://web.dev/content-visibility/
-// https://www.caniuse.com/?search=content-visibility
-/*
- * Workaround for Chrome bug, part 1
- * Chunk rendering for all but the first article.
- * /layout/_partial/scripts/content-visibility-scroll-fix.ejs
-*/
-.post-story + .post-story{
- content-visibility: auto;
- contain-intrinsic-size: 10px 500px;
-}
+
+if hexo-config('content_visibility')
+ // https://web.dev/content-visibility/
+ // https://www.caniuse.com/?search=content-visibility
+ /*
+ * Workaround for Chrome bug, part 1
+ * Chunk rendering for all but the first article.
+ * /layout/_partial/scripts/content-visibility-scroll-fix.ejs
+ */
+ .post-story + .post-story{
+ content-visibility: auto;
+ contain-intrinsic-size: 10px 500px;
+ }
@import '_defines/*'