Layout - это концептуальный элемент, который не содержит ничего внутри, но определяет способ расположения элементов на странице. Layout делит страницу на строки и столбцы, в которые можно поместить все другие компоненты.
Layout состоит из строк и колонок, разделенных между собой границами (за исключением лейаутов без границ). Свойство rows содержит массив объектов view, упорядоченных горизонтально. Свойство cols - это массив вертикально упорядоченных объектов. Доступные настройки и типы границ описаны в специальной статье.
webix.ui({
container:"layout_div",
type:"space",
rows:[
{...},
{
cols:[
{...},
{...}
]
}
]
});
Инициализируя лейаут, вы можете опустить запись view:"layout", библиотека распознает заданные rows и cols как Layout:
webix.ui({
type:"wide",
rows:[
{...}, {...}
]
});
Трехстрочный лейаут
webix.ui({
container:"layout_div", // соответствует ID div-блока
rows:[
{ template:"row 1" }, // тут помещается нужный компонент
{ template:"row 2" },
{ template:"row 3" }
]
});
Трехстрочный лейаут
webix.ui({
container:"layout_div", // соответствует ID div-блока
cols:[
{ template:"col 1" }, // тут помещается нужный компонент
{ template:"col 2" },
{ template:"col 3" }
]
});
Любая строка может быть разделена на столбцы и любой столбец может содержать строки. На изображении ниже представлены простые лейауты, вложенные друг в друга:
webix.ui({
container:"layout_div", // соответствует ID div-блока
rows:[
{template:"row 1"}, // тут помещается нужный компонент
{template:"row 2"},
{ cols:[
{ template:"col 1" },
{ template:"col 2" },
{ template:"col 3" }
]}
]
});
Related sample: Layout and Resizer
Webix Layout позволяет сохранять/восстанавливать состояние лейаута в файле cookie, локальном хранилище или хранилище сессии.
Чтобы сохранить текущее состояние лейаута в локальное хранилище, вызовите метод serialize:
var state = $$("layout").serialize(serializer);
webix.storage.local.put("layout-state", state);
В качестве параметра метод serialize() принимает функцию serializer, которая содержит логику сериализации.
Чтобы восстановить сохраненное состояние лейаута, используйте метод restore. Метод принимает два параметра:
var state = webix.storage.local.get("layout-state");
$$("layout").restore(state,factory);
Webix также предлагает лейауты с расширенной функциональностью. Если вам нужен строгий порядок расположения элементов, грид или сложная структура данных внутри лейаута, вы можете воспользоваться готовыми решениями:
Ресайзер - это перетягиваемая граница между строками и колонками лейаута. Ресайзер (resizer) позволяет перемещать границы в двух направлениях и изменять размер компонентов, находящихся по обе стороны от границы.
Ресайзер не изменяет размер компонента, он только позволяет пользователям настраивать визуальную схему компонента в соответствии с их потребностями.
Для столбцов подлежащих изменению (перетягиванием границ) рекомендуется устанавливать параметры minWidth и maxWidth, для строк соответственно minHeight и maxHeight. Эти меры не допустят полного схлопывания, границы будут перемещаться в пределах установленных минимальных значений высоты и ширины.
webix.ui({
container:"layout_div",
id:"layout",
rows:[
{...}, // 1-ая строка, неизменяемая
{...}, // 2-ая строка
{view:"resizer"},
{...}, // 3-я строка
{view:"resizer"},
{cols:[ // 4-ая строка
{ // 1-ая колонка
width:150,
minWidth:50,
maxWidth:250
},
{view:"resizer"},
{....}, // 2-ая колонка
{....} // 3-я колонка
]}
]
})
Related sample: Limits on Resizing
Адаптивное поведение лейаута, в зависимости от размера окна/экрана описано отдельно.
Подробнее о способах создания хедеров для различных компонентов.
webix.ui({
rows:[
{ view:"template", // не обязательно
template:"Header for Column 1",
type:"header"
},
{...}
]
})