⚡ perf(vscode): 代码阅读预览屏幕外的顶层块跳过样式、排版和绘制(content-visibility),没画过的按内容估的高度占位;跳到某一行、恢复滚动位置、跳到改动和定义前先把目标那一带照常排版再量,滚过去位置不变
This commit is contained in:
1 parent
ffb0f147e1
commit
8a5d3761fd
9 files changed
+201
-9
No files matched your search
@@ -72,6 +72,22 @@ body:is(.vscode-light, .vscode-high-contrast-light) [data-badge] { --kind: var(-
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
/*
|
||||
* 页面上顶层的一块(卡片连同问答区、子块,BlockTree 的 items):离视口远时浏览器跳过它里面的样式、排版和绘制,大文件全展开时重画、滚动不用每次算整页;
|
||||
* 没画过时按估的高度占位(行内的 contain-intrinsic-block-size,auto 是画过一次就记住真实高度)。跳过的内容照样能页内查找、Tab 到、选中。
|
||||
* 它把里面的绘制关在自己的框里:往上伸出卡片的「新增」小标,靠上面多留的 8px(再用负的外边距抵掉,位置不变)照样画得出来;
|
||||
* 类名弹层打开时这一块照常画(不关在框里),弹层才盖得住后面的块
|
||||
*/
|
||||
.cr-item {
|
||||
content-visibility: auto;
|
||||
padding-top: 8px;
|
||||
margin-top: -8px;
|
||||
}
|
||||
/* 要滚过去的那一带(见 pageLayout.settle)、类名弹层打开着的那一块照常排版、绘制 */
|
||||
.cr-item:is([data-settle], :has(.cr-classes-popup)) {
|
||||
content-visibility: visible;
|
||||
}
|
||||
|
||||
/* 层级竖线:悬停一个块时,它子层的竖线换成它的种类色,标出这个块管到哪里为止(块和子层中间隔着问答区也算) */
|
||||
.cr-guide {
|
||||
background: var(--vscode-editorIndentGuide-background1);
|
||||
|
||||
Reference in new issue
Block a user