Schnellstart

FlexLayout ist grundsätzlich für die Aufteilung des Bildschirms in eine Richtung zuständig.


Basiszeilenaufteilung

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>


Spaltenaufteilung + wachsen

Vordefinierte Flächenverhältnisse in vertikalen Aufteilungen

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 (Verschachtelung)

Aufteilungen in mehr als zwei Richtungen werden durch Überlappen von FlexLayout erstellt.

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

Resize-Bereichsbeschränkung + Inhaltsgrößenbeschränkung

Durch die Angabe von minimalen/maximalen Größen in FlexLayoutContainer mit CSS können Sie den Resize-Bereich steuern.

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])
Oder so kann es verwendet werden.
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])
Das Ergebnis ist wie folgt.
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>

Panelbewegungsmodus (panelMovementMode)

Interaktionsweise mit benachbarten Panels beim Resize

panelMovementModeist eine Eigenschaft, die steuert, wie benachbarte Panels beim Resize bewegt werden. Der Standardwert ist divorceund die folgenden Modi können verwendet werden.

bulldozer

drückt benachbarte Panels weg, aber sie haften nicht zusammen.

divorce (기본값)

drückt benachbarte Panels weg und sie haften zusammen, aber wenn sie zur ursprünglichen Resize-Position zurückkehren, werden sie wieder getrennt.

stalker

benachbarte Panels haften vollständig zusammen, trennen sich jedoch, wenn das Ende erreicht ist.

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>

Letzte Überprüfung

isResizePanel

Das Resize-Panel wird als Geschwister des Containers gerendert.

Beispiel: Zwischen Mid und Right, das Resize-Panel gehört zu Mid, aber das Resize-Panel verwaltet die Geschwister auf beiden Seiten.

grow

Gibt das anfängliche Verhältnis eines bestimmten Containers an.

Container ohne grow werden gleichmäßig verteilt, abgesehen von dem angegebenen grow.

isFitContent

Begrenzt die Größe des Containers, damit er nicht größer als die Größe der inneren Kind-Elemente wird.

panelMovementMode

Legt fest, wie das Resize-Panel mit angrenzenden Panels interagiert.

"bulldozer": Schiebt angrenzende Panels weg, bleibt aber nicht haften.

"divorce": Schiebt angrenzende Panels weg und bleibt haften, trennt sich jedoch, wenn es zurückkommt (Standardwert).

"stalker": Bleibt vollständig an angrenzenden Panels haften, trennt sich jedoch, wenn das Ende erreicht ist.

© 2026 Byeolnaerim. Alle Rechte vorbehalten.EinführungDatenschutzrichtlinie