/** * 纵向黏性布局 */ BI.VerticalStickyLayout = BI.inherit(BI.FlexVerticalLayout, { props: function () { return BI.extend(BI.VerticalStickyLayout.superclass.props.apply(this, arguments), { extraCls: "bi-v-sticky", scrolly: true, horizontalAlign: BI.HorizontalAlign.Stretch, // verticalAlign: BI.VerticalAlign.Stretch }); }, _addElement: function (i, item) { var o = this.options; var w = BI.VerticalStickyLayout.superclass._addElement.apply(this, arguments); var rowSize = o.rowSize.length > 0 ? o.rowSize[i] : item.height; if (o.rowSize.length > 0) { if (item.height >= 1 && o.rowSize[i] >= 1 && o.rowSize[i] !== item.height) { rowSize = null; } } if (rowSize !== "fill") { var fillIndex; BI.count(0, o.items.length, index => { if (BI.isNotNull(fillIndex)) { return; } if ((o.rowSize[index] === "fill" || o.items[index].height === "fill")) { fillIndex = index; } }); if (fillIndex > i) { w.element.css({ position: "sticky", zIndex: 1, top: 0, }); } else { w.element.css({ position: "sticky", zIndex: 1, bottom: 0 }); } } else { w.element.css({ overflow: "" }); } return w; } }); BI.shortcut("bi.vertical_sticky", BI.VerticalStickyLayout);