Структуры лейаута и аккордеона в Webix могут реагировать на изменения размера окна, скрывая/показывая или перемещая строки (столбцы) в зависимости от доступного пространства.
Когда срабатывает адаптация компонента:
Один из способов решить эту проблему - это использование фиксированных размеров для внутреннего компонента. Подробнее о задании исходных размеров для компонентов.
Адаптивное поведение может осуществляться в двух режимах:
Исходный лейаут
Чтобы включить скрытие и отображение при изменении размера окна, установите для свойства responsive лейаута/аккордеона значение true
:
webix.ui({
view:"layout", // необязательно
responsive:true,
cols:[
{view:"list", ...},
{view:"template", ...}
{view:"datatable", ...}
]
});
Related sample: Responsive Layout - Hidden Cells
Если места недостаточно, крайний слева компонент будет скрыт первым.
После изменения размера окна
Чтобы включить перемещение компонента при изменении размера окна, установите ID целевого лейаута как значение свойства responsive родительского лейаута нужного компонента:
webix.ui({
id:"a1", rows:[
{ responsive:"a1", cols:[ // родительский лейаут для компонента
{ view:"list", ...},
{ view:"template", ... }, // компонент будет перемещен в лейаут "a1"
{ view:"datatable", ... }
]}
]
});
Если места недостаточно, средний и крайний справа компоненты будут перемещены.
Related sample: Responsive Layout
После изменения размера окна
Помещенные в лейаут во время изменения размера элементы аккордеона ведут себя как строки и столбцы лейаута.
Чтобы включить функциональность для лейаутов и аккордеонов внутри контейнера HTML, вызовите после изменения размера контейнера метод resize():
webix.event(window, "resize", function(e){
$$("layout").resize();
});
События позволяют сделать приложение интерактивным (например когда боковое меню скрыто, на тулбаре отображается иконка его вызывающая).
webix.attachEvent("onResponsiveHide", function(id){
if (id === "side_menu_id")
$$("topbar_menu_button").show();
});
Внутрь адаптивного лейаута вы можете пометить некоторые ячейки как не отвечающие, т.о. они не скроются/не переместятся, даже если для их отображения будет недостаточно места.
webix.ui({
responsive:"hide", cols:[
{ view:"list", responsiveCell:false, width:320 }, // будет всегда видим
{ view:"template", minWidth:500 } // будет скрыт, если места недостаточно
]
});
FlexLayout - это компонент, который помещает все компоненты в одну строку, если места недостаточно, строка лейаута будет разделена на несколько подстрок.
webix.ui({ view:"flexlayout", cols:[... ]});
Исходный Flexlayout
Flexlayout после изменения размера окна
FlexLayout может быть использован как компонент верхнего уровня и идеально подходит для мобильных приложений.
webix.ui({
margin:10, padding:0, type:"wide",
view:"flexlayout",
cols:[
{ view:"list", data:[
{ value:"Albert Brown" },{ value:"Mono Delorini" }
], minWidth:320, select:true },
{ view:"list", data:[
{ value:"Accounts" },{ value:"History" },{ value:"Settings" }
], minWidth:320, select:true },
{
template:"Try to resize screen, or open this sample on a mobile device",
minWidth:320, minHeight:400
}
]
});
Related sample: Flex Layout - Fullpage Mode
Чтобы получить компонент дашборд-вида, вы можете поместить Flex Layout внутрь фиксированного лейаута.
Related sample: Flex Layout - Dashboard
функциональность доступна на последний версиях Chrome, Safari, Firefox.
FlexLayout состоит из столбцов (cols), FlexLayout на основе строк не поддерживается.
Помещая FlexLayout внутрь других структур Webix, используйте scrollview:
webix.ui({
cols:[
{ view:"scrollview", body: {
view:"flexlayout",
cols:[
...
]
}},
{ }
]
});
Related sample: Flex Layout - Dashboard
Компонент доступен для пользователей Webix Pro
Компонент FlexDataLayout ведет себя как DataLayout и отображает каждую ячейку как элемент FlexLayout.
Другими словами, это идеальное решение для приложений дашборд-вида.
var subconfig = {
rows:[
{ template:"Report: #month# 2016", type:"header", name:"$value" },
{ view:"chart", type:"line", preset:"plot",
xAxis:{ template:"'#ind#" },
yAxis:{ },
minWidth:300, height:300, name:"sales", value:"#sales#"}
]
};
var flex = {
margin:10, padding:0, type:"wide",
view:"flexdatalayout",
cols:[ subconfig ],
url:"data/year.js"
};
Related sample: Flex Data Layout
Наверх