CodeMirror - 是否可以滚动到一行,使其位于窗口中间
CodeMirror - Is it possible to scroll to a line so that it is in the middle of window?
我在 CodeMirror 中突出显示了 HTML 代码行,我想添加一个锚点,将 CodeMirror 编辑器滚动到给定行。
我可以通过 setCursor 方法滚动到第 X 行。但是我希望将X行放在CodeMirror窗口的中间。我能做到吗?我研究了 API 和演示,但没有运气。
谢谢!
这个应该可以工作:
var editor = CodeMirror.fromTextArea(...);
function jumpToLine(i) {
var t = editor.charCoords({line: i, ch: 0}, "local").top;
var middleHeight = editor.getScrollerElement().offsetHeight / 2;
editor.scrollTo(null, t - middleHeight - 5);
}
这很简单。
初始化:
var editor = CodeMirror.fromTextArea(...);
如果希望当前位置稍后设置,可以使用
editor.getScrollInfo();
它返回一个 JavaScript 对象:
{
"left": 0,
"top": 0,
"height": 500,
"width": 500,
"clientHeight": 300,
"clientWidth": 200
}
现在,您可以使用以下命令设置设置编辑器滚动位置:
editor.scrollTo(left,top);
你想要 https://codemirror.net/doc/manual.html#scrollIntoView
请注意可选的边距参数,它应该执行您想要的操作:
cm.scrollIntoView(what: {line, ch}|{left, top, right, bottom}|{from, to}|null, ?margin: number)
您的代码如下所示:
cm.scrollIntoView({line:50, char:5}, 200)
初始化:
var editor = CodeMirror.fromTextArea(...);
在编辑器中间显示一行的函数:
function jumpToLine(i) {
// editor.getLineHandle does not help as it does not return the reference of line.
editor.setCursor(i);
window.setTimeout(function() {
editor.setLineClass(i, null, "center-me");
var line = $('.CodeMirror-lines .center-me');
var h = line.parent();
$('.CodeMirror-scroll').scrollTop(0).scrollTop(line.offset().top - $('.CodeMirror-scroll').offset().top - Math.round($('.CodeMirror-scroll').height()/2));
}, 200);
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- Javascript排序的图像弹出窗口..可以't单独弹出
- 窗口大小html css
- 弹出窗口出现,然后退出
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript更新孙窗口中的表单元素
- 在屏幕中间打开一个弹出窗口
- 运行一个函数,每次
到达窗口中间时更改图像
- CodeMirror - 是否可以滚动到一行,使其位于窗口中间
- 根据 window.innerWidth 在中间设置弹出窗口
- 到达(窗口)上的中间元素.滚动
- 无论分辨率如何,都可以在屏幕中间显示内联HTML/JavaScript弹出窗口
- 将SVG定位在浏览器窗口的中间
- 如何用javascript在屏幕中间显示新窗口
- 中间对齐窗口打开与窗口.在非IE浏览器中打开
- 居中&中间位置,而不考虑窗口滚动
- 在调整窗口大小时,将某些图像设置在屏幕行中间