blockly二次开发中文文档——3.2可调整大小的工作区

可调整大小的工作区

一个好的Web应用程序将调整Blockly的大小以填充屏幕上的可用空间,而不是固定大小。有几种方法可以做到这一点,包括使用iframe,CSS和JavaScript定位。此页面演示了一种强大而灵活的叠加方法。

这是一个三步过程。第一步是定义区域。第二步是注入Blockly。第三步是将Blockly定位在这个区域上。

定义区域

使用HTML表格或带有CSS的div,创建一个空白区域,在页面调整大小时重新流动。确保该区域有ID(在此页面上我们将其称为blocklyArea)。

这是一个填充屏幕底部的表格单元格的现场演示

注入

注入Blockly与注入固定大小的Blockly中描述的过程相同。添加脚本,blocklyDiv元素,工具箱和注入脚本。

Blockly现在应该在页面上运行,而不是位于它应该位于的位置(可能在屏幕外)。

定位

最后一步是将blocklyDiv元素放在blocklyArea元素上。为此,从blocklyDiv中删除任何高度和宽度样式并添加绝对定位:

<div id="blocklyDiv" style="position: absolute"></div>

然后将注入脚本替换为将'blocklyDiv'置于'blocklyArea'上的脚本:

<script>
  var blocklyArea = document.getElementById('blocklyArea');
  var blocklyDiv = document.getElementById('blocklyDiv');
  var workspace = Blockly.inject(blocklyDiv,
      {toolbox: document.getElementById('toolbox')});
  var onresize = function(e) {
    // Compute the absolute coordinates and dimensions of blocklyArea.
    var element = blocklyArea;
    var x = 0;
    var y = 0;
    do {
      x += element.offsetLeft;
      y += element.offsetTop;
      element = element.offsetParent;
    } while (element);
    // Position blocklyDiv over blocklyArea.
    blocklyDiv.style.left = x + 'px';
    blocklyDiv.style.top = y + 'px';
    blocklyDiv.style.width = blocklyArea.offsetWidth + 'px';
    blocklyDiv.style.height = blocklyArea.offsetHeight + 'px';
    Blockly.svgResize(workspace);
  };
  window.addEventListener('resize', onresize, false);
  onresize();
  Blockly.svgResize(workspace);
</script>

这是Blockly的现场演示,它填满了屏幕的底部。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介网络浏览器很可能是使用最广的软件。在这篇入门文章中,我将会介绍它们的幕后工作原理。我们会了解到,从您在地址栏输...
    wengjq阅读 6,338评论 2 15
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,862评论 1 11
  • ‌人生‌‌而追求快乐,‌‌追求幸福,‌‌可是人们又很难定义什么叫幸福。 经历多了,‌‌体会多了,‌‌在风雨中行走,...
    有书会赢阅读 1,144评论 0 4
  • java 常用集合list与Set、Map区别及适用场景总结Java中容器[Collection(List,Set...
    pluss阅读 1,618评论 0 0
  • 姓名:魏正君《六项精进》第270期感谢2组公司:绵阳大北农农牧科技有限公司【日精进打卡第212天】【知~学习】背诵...
    莫心莫肺阅读 754评论 0 0