Split container
目的
此容器将其区域分割成多个可调整大小的槽位。这对于创建可自定义的布局非常有用,其中每个槽位都可以扩展或缩短。
用法
此组件使用插槽显示内容。除最后一个插槽元素外,每个插槽元素都必须包含一个 slot 属性,该属性的值是其在布局中的序号,从 1 开始。未命名的插槽将被视为最后一个插槽。
除最后一个槽位外,其余槽位的初始大小均在 ini 属性中指定。槽位大小以 0 到 1 之间的十进制数表示。最后一个槽位占用容器中的剩余空间。
最小槽位大小由 min 属性指定。最后一个槽位的最小大小也可以在此属性中指定。
js
import { useEffect } from 'react';
import { useSplit } from 'effsz/split';
const { observe } = useSplit();
export const App = () => {
useEffect(() => {
const unobserve = observe((event) => {
// handle split events
});
return () => unobserve();
}, [])
return <effsz-split
ini='0.25 0.5'
min='0.25 0.1 0.1'
fdir='r'
>
<div className='first' slot='1'>...</div>
<div className='second' slot='2'>...</div>
<div className='last'>...</div>
</effsz-split>;
};类型
ts
/**
* Split container attributes
*/
export interface ISplitContainerAttrs {
// size
/**
* Initial size
*/
ini: string;
/**
* Min size
*/
min: string;
/**
* Flex-direction
*/
fdir: 'r' | 'rr' | 'c' | 'cr';
/**
* Flex gap
*/
gap: string;
// resizer
/**
* Resizer thickness
*/
th: string;
/**
* Active resizer color
*/
acol: string;
/**
* Passive resizer color
*/
pcol: string;
// transition
/**
* Transition-timing-function
*/
tf: string;
/**
* Resize transition duration
*/
dur: string;
/**
* Resize transition delay
*/
del: string;
/**
* Color transition duration
*/
cdur: string;
}
/**
* Split container
*/
export interface ISplitContainerElement extends HTMLElement {
/**
* Split axis
*/
get axis(): 'x' | 'y';
/**
* Split reversed flag
*/
get isReversed(): boolean;
/**
* Set size array
*/
set sizes(val: number[]);
/**
* Get size array
*/
get sizes(): number[];
/**
* Get rest size
*/
get lastSize(): number;
/**
* Save size
*/
saveSize(): void;
/**
* Restore previous value
* @param initial - restore initial value
*/
restoreSize(initial?: boolean): void;
}