You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
不用resize实现拖动调整宽高布局
我们都知道,布局组件有个resize
方法,以前常用的动态宽度或高度的实现方式大多借用了该方法
例如可拖动宽度的布局
class Resizeable extends BI.Widget {
props = {
baseCls: "test"
};
render() {
return {
type: "bi.htape",
ref: ref => this.container = ref,
items: [
{
type: "bi.draggabel", // 假设为拖拽组件
text: "left",
width: 100,
onDragg: size => this.resize(size),
}, {
type: "bi.label",
text: "right"
}
]
};
}
resize(size) {
this.container.attr("items")[0].width = size;
this.container.resize();
}
}
多数时候我们将拖动组件绑定在左侧组件上,此时需要监听拖动回调,然后修改容器的items属性,最后调用resize
有没有更简便的方式呢?有的
FineUI3.0 版本新增的自适应布局,充分利用了flex布局特性,为我们提供了更便捷,更内聚的实现方式
class Draggable extends BI.Widget {
props = {
baseCls: "test"
};
render() {
return {
type: "bi.draggabel", // 假设为拖拽组件
text: "left",
onDragg: size => this.element.width(size),
};
}
}
class Resizeable extends BI.Widget {
props = {
baseCls: "test"
};
render() {
return {
type: "bi.horizontal",
verticalAlign: "stretch",
columnSize: ["", "fill"],
items: [
{
type: Draggable.xtype,
text: "left",
}, {
type: "bi.label",
text: "right"
}
]
};
}
}
利用水平布局自适应的实现方式,左侧为实际宽度,右侧占满剩余宽度. 这时候左侧仅需关注自身宽度,无须考虑与外部联动