2016-04-25 3 views
1

Я пытаюсь адаптировать мой Blockly workspace внутри div. Я хочу, чтобы, если страница будет меньше, div и Blockly workspace внутри нее будут меньше.Есть ли другой способ изменить размер рабочего пространства Blockly?

Я знаю, что существует способ, которым Google предоставляет в своем documentation, но я думаю, что он немного «грязный», и вы должны использовать много кода для его изменения.

Глядя на отладчик Google Chrome я видел, что я могу установить max-height к svg объекта, но я не знаю, как изменить эту height при впрыскивать рабочее пространство:

var workspace = Blockly.inject('blocklyDiv', 
    {toolbox: document.getElementById('toolbox')}); 

Во всяком случае, это не будет решить мою проблему вообще (просто избегайте того, чтобы рабочее пространство было больше, чем div, прежде чем изменять размер страницы).

Я также попытался изменить мой blocklyDiv, в котором я вставляю Blockly workspace в display: flex;, но это ничего не меняет.

Есть ли лучший подход, чем Google's пример для изменения размера Blockly workspace?

Заранее благодарен!

+0

У Вас есть связь или JSFiddle продемонстрировать? – darrylyeo

+0

@darrylyeo Я могу создать один, но я не знаю, как добавить Blockly к нему. –

+0

Я использую простую «width: 100px» в блочном div, и он изменяет размер в порядке. Конечно, если блоки не подходят в рабочей области, тогда появятся полосы прокрутки, позволяющие перемещаться внутри нее ... Я понимаю, что это не то, что вы хотите? Может быть, вы хотите изменить масштаб блоков, чтобы они соответствовали предоставленному пространству? – jrierab

ответ

1

Как я сказал выше, я разрешаю изменение ширины, фиксируя высоту в блочном div.

<div id="blocklyDiv" style="height: 800px; width: 100%;"></div> 

Здесь у вас есть JSFiddle играть с: blockly workspace resizing.

+0

Он выглядит хорошо. Не могли бы вы дать подробный ответ о том, как вы это делаете?Как я вижу, вы использовали множество параметров, когда вы вводите код, который я никогда раньше не видел. –

+0

Нет необходимости в каких-либо специальных параметрах для ваших целей (на самом деле нужна только опция панели инструментов). Параметры увеличения указаны здесь: https://developers.google.com/blockly/installation/zoom#controls. Они позволяют использовать колесико мыши (или полупрозрачные значки) для увеличения/уменьшения масштаба в рабочей области. – jrierab

1

Я использовал CSS только, чтобы получить такое же поведение ...

Просто создайте контейнер для блок редактор с любым желаемым размером и положение относительно, затем положить блок редактор внутри с позицией абсолютной.

HTML код:

<section id="blocklyContainer"> 
    <div id="blocklyDiv"></div> 
</section> 

код CSS:

#blocklyContainer { 
    position: relative; 
    width: 100%; 
    height: 100vh; 
} 

#blocklyDiv { 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
} 

Здесь у вас есть CodePen увидеть: blockly resize

+0

Кажется, что добавление категорий .... он больше не показывает боковую панель ... –

+0

@LucaDetomi Я обновил пример codepen для вас двумя случайными категориями. Он тоже работает, вы можете взглянуть? благодаря! –

+0

No Juan, я попытался программно изменить ширину 'blocklyContainer' (вы можете сделать это также из Inspector), и размер холста не изменяется до тех пор, пока вы не измените размер окна браузера ... Таким образом, проблема остается: как изменить Blockly canvas размер меняется ТОЛЬКО размер контейнера DIV, не меняя размер окна браузера? –

Смежные вопросы