Mulai Cepat

FlexLayout pada dasarnya menangani layar terpisah dalam satu arah.


Pemisahan Baris Dasar

tsx
<FlexLayout layoutName="basic-row_1" direction="row">
  <FlexLayoutContainer containerName="basic-row_1-left" isResizePanel>
    <div>Left</div>
  </FlexLayoutContainer>

  <FlexLayoutContainer containerName="basic-row_1-mid" isResizePanel>
    <div>Mid</div>
  </FlexLayoutContainer>

  <FlexLayoutContainer containerName="basic-row_1-right">
    <div>Right</div>
  </FlexLayoutContainer>
</FlexLayout>


Pemisahan Kolom + tumbuh

Memberikan rasio area tertentu sebelumnya dalam pemisahan vertikal

tsx

  <FlexLayout layoutName="basic-column_3" direction="column">
    <FlexLayoutContainer containerName="basic-column_3-top" isResizePanel grow={0.45}>
      <div>Left</div>
    </FlexLayoutContainer>
    <FlexLayoutContainer containerName="basic-column_3-mid">
      <div>Mid</div>
    </FlexLayoutContainer>

    <FlexLayoutContainer containerName="basic-column_3-right">
      <div>Right</div>
    </FlexLayoutContainer>
  </FlexLayout>

Multi Cross (Tumpang Tindih)

Pemisahan lebih dari dua arah dibuat dengan menumpuk FlexLayout

tsx

  <FlexLayout layoutName="basic-row_4" direction="row">
    <FlexLayoutContainer containerName="basic-row_4-left" isResizePanel>
      <div>
        <FlexLayout layoutName="basic-row_4-basic-column-left" direction="column">
          <FlexLayoutContainer containerName="basic-row_4-left-top" isResizePanel>
            <div>left-top</div>
          </FlexLayoutContainer>
          <FlexLayoutContainer containerName="basic-row_4-left-bottom">
            <div>left-bottom</div>
          </FlexLayoutContainer>
        </FlexLayout>
      </div>
    </FlexLayoutContainer>

    <FlexLayoutContainer containerName="basic-row_4-right">
      <div >
        <FlexLayout layoutName="basic-row_4-basic-column-right" direction="column">
          <FlexLayoutContainer containerName="basic-row_4-right-top" isResizePanel>
            <div>right-top</div>
          </FlexLayoutContainer>
          <FlexLayoutContainer containerName="basic-row_4-right-bottom">
            <div>right-bottom</div>
          </FlexLayoutContainer>
        </FlexLayout>
      </div>
    </FlexLayoutContainer>
  </FlexLayout>

min/max + isFitContent

Batasan rentang ukuran ulang + batasan berdasarkan ukuran konten

Dengan menggunakan CSS pada FlexLayoutContainer, Anda dapat mengatur ukuran minimum/maksimum untuk mengontrol rentang ukuran ulang.

tsx
const [handleSizeTarget, setHandleSizeTarget] = useState<HTMLElement|null>(null);

useEffect(()=>{
  const layoutSubscribe = getLayoutInfos('basic-row_7').subscribe((layout)=>{
    const leftContainer = layout.container?.['basic-row_7-left']?.current;
    if(leftContainer){
      setHandleSizeTarget(leftContainer);
    }
  });
  return ()=>{
    layoutSubscribe.unsubscribe();
  }
},[])

useEffect(()=>{
  if(!handleSizeTarget) return;
  handleSizeTarget.style.minWidth = '25px';
  handleSizeTarget.style.maxWidth = '180px';
},[handleSizeTarget])
Atau Anda dapat menggunakan ini.
tsx
const { layout: containers, container, resizePanel } = useDecompositionLayout({
  layoutName: 'basic-row_7',
  containerName: 'basic-row_7-left',
});

useEffect(()=>{
  if(!container) return;
  container.style.minWidth = '25px';
  container.style.maxWidth = '180px';
},[container])
Hasil eksekusi adalah sebagai berikut.
tsx
<FlexLayout layoutName="basic-row_7" direction="row">
  <FlexLayoutContainer containerName="basic-row_7-left" isResizePanel>
    <div>Left</div>
  </FlexLayoutContainer>

  <FlexLayoutContainer containerName="basic-row_7-mid" isResizePanel>
    <div>Mid</div>
  </FlexLayoutContainer>
  <FlexLayoutContainer
    containerName="basic-row_7-right"
    isFitContent
  >
    <div
      style={{
        whiteSpace: "nowrap",
        textWrapMode: "nowrap",
        paddingRight:'1rem'
      }}
    >
      I'm Using Fit Content{" "}
    </div>
  </FlexLayoutContainer>
</FlexLayout>

Mode pemindahan panel (panelMovementMode)

Cara interaksi panel yang berdekatan saat diubah ukurannya

panelMovementModeadalah properti yang mengontrol bagaimana panel bergerak saat diubah ukurannya. Nilai defaultnya adalah divorcedan Anda dapat menggunakan mode di bawah ini.

bulldozer

Mendorong panel yang berdekatan tetapi tidak saling menempel.

divorce (기본값)

Mendorong panel yang berdekatan dan saling menempel, tetapi akan terpisah kembali saat kembali ke posisi awal saat mengubah ukuran.

stalker

Panel yang berdekatan saling menempel sepenuhnya tetapi akan terpisah kembali saat mencapai ujung.

tsx
const [mode, setMode] = useState<"bulldozer" | "divorce" | "stalker">("bulldozer");

<ButtonGroup variant="outlined" size="small">
  {["bulldozer", "divorce", "stalker"].map((m) => (
    <Button
      key={m}
      onClick={() => setMode(m)}
      variant={mode === m ? "contained" : "outlined"}
    >
      {m}
    </Button>
  ))}
</ButtonGroup>

<Box
  sx={{
    height: "100%",
    "& [data-container_name]": {
      minHeight: "2rem",
    },
  }}
>
  <FlexLayout
    layoutName={`panel-movement-demo-${mode}`}
    direction="column"
    panelMovementMode={mode}
  >
    <FlexLayoutContainer containerName="panel-top" isResizePanel>
      <div>Top</div>
    </FlexLayoutContainer>
    <FlexLayoutContainer containerName="panel-mid1" isResizePanel>
      <div>Mid 1</div>
    </FlexLayoutContainer>
    <FlexLayoutContainer containerName="panel-mid2" isResizePanel>
      <div>Mid 2</div>
    </FlexLayoutContainer>
    <FlexLayoutContainer containerName="panel-bottom">
      <div>Bottom</div>
    </FlexLayoutContainer>
  </FlexLayout>
</Box>

Pemeriksaan Terakhir

isResizePanel

Panel resize akan dirender sebagai saudara dari kontainer.

Contoh: Di antara Mid dan Right, kepemilikan panel resize ada di Mid, tetapi panel resize menangani saudara di kedua sisi.

grow

"Tentukan" rasio awal dari kontainer tertentu.

Kontainer yang tidak ditentukan grow akan mendapatkan distribusi yang merata dari sisanya kecuali yang ditentukan.

isFitContent

Batasi agar kontainer tidak di-resize lebih besar dari ukuran elemen anak di dalamnya.

panelMovementMode

Atur cara interaksi saat panel di-resize dengan panel yang berdekatan.

"bulldozer": Mendorong panel yang berdekatan tetapi tidak menempel.

"divorce": Mendorong panel yang berdekatan dan menempel tetapi terpisah saat kembali (default).

"stalker": Panel yang berdekatan sepenuhnya menempel tetapi terpisah saat mencapai ujung.

© 2026 Byeolnaerim. Semua hak dilindungi.PengenalanKebijakan Penanganan Data Pribadi