6

有一个很好的例子来说明如何制作 CodeMirror 编辑器的全屏版本。但是,如果 CodeMirror 小部件位于其他position: absoluterelativediv 的中间(CodeMirror 小部件的绝对定位将不再相对于整个页面),这将不起作用。

我们可以向 CodeMirror 添加一个新命令以全屏显示:

CodeMirror.commands.fullscreen = function (cm)
{
var fs_p = $(cm.getWrapperElement());

if ( cm._ic3Fullscreen == null) {
    cm._ic3Fullscreen = false;
    cm._ic3container = fs_p.parent();
}

if (!cm._ic3Fullscreen)
{
    fs_p = fs_p.detach();
    fs_p.addClass("CodeMirrorFullscreen");
    fs_p.appendTo("body");
    cm.focus();
    cm._ic3Fullscreen = true;
}
else
{
    fs_p = fs_p.detach();
    fs_p.removeClass("CodeMirrorFullscreen");
    fs_p.appendTo(cm._ic3container);
    cm.focus();
    cm._ic3Fullscreen = false;
}
};

之后我们需要在创建 CodeMirror 时绑定这个新命令。将此添加到选项中:

extraKeys: {"F11": "fullscreen"}

问题是在CodeMirrorFullscreenCSS 类中放什么来确保全屏可以工作?

4

1 回答 1

1

使用position: fixed而不是absolute应该可以解决问题。

为了测试它,只需修改 CodeMirror 的 fullscreen.html 演示的 CSS 如下:

  form {
    position: relative;
  }
  .CodeMirror-fullscreen {
    display: block;
    position: fixed;
    top: 0; left: 0;
    width: 100%;
    z-index: 9999;
  }

(添加的form选择器不是解决方案的一部分。它只是为了确保我们正在测试您关心的案例——使用position: absolutein.CodeMirror-fullscreen不起作用)。

于 2013-05-13T07:22:33.480 回答