Démarrage rapide

FlexLayout gère essentiellement l'affichage fractionné dans une direction.


Fractionnement de ligne de base

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>


Fractionnement de colonne + croissance

Attribuer à l'avance un ratio de zone spécifique dans le fractionnement vertical

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 (imbriqué)

Les fractionnements dans plus d'une direction sont créés en superposant 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

Limite de la plage de redimensionnement + Limite basée sur la taille du contenu

En spécifiant la taille minimale/maximale avec CSS dans FlexLayoutContainer, vous pouvez contrôler la plage de redimensionnement.

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])
Ou vous pouvez l'utiliser de cette manière.
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])
Le résultat de l'exécution est le suivant.
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 de déplacement du panneau (panelMovementMode)

Mode d'interaction avec les panneaux adjacents lors du redimensionnement

panelMovementModeest une propriété qui contrôle comment les panneaux adjacents se déplacent lors du redimensionnement. La valeur par défaut est divorceet les modes suivants peuvent être utilisés.

bulldozer

Repousse les panneaux adjacents mais ne s'accroche pas.

divorce (기본값)

Repousse les panneaux adjacents et s'accroche, mais se sépare à nouveau lorsque vous revenez à la position de départ du redimensionnement.

stalker

Les panneaux adjacents s'accrochent complètement mais se séparent à nouveau lorsqu'ils atteignent la fin.

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>

Dernière vérification

isResizePanel

Le panneau de redimensionnement sera rendu comme un frère du conteneur.

Ex : Entre Mid et Right, le panneau de redimensionnement appartient à Mid, mais il gère les frères de chaque côté.

grow

"Spécifie" le ratio initial d'un conteneur spécifique.

Les conteneurs sans grow se répartissent également le reste, à l'exception du grow spécifié.

isFitContent

Limite le redimensionnement du conteneur pour qu'il ne soit pas plus grand que la taille des éléments enfants internes.

panelMovementMode

Définit la manière d'interagir avec les panneaux adjacents lors du redimensionnement.

"bulldozer": Pousse les panneaux adjacents mais ne s'accroche pas.

"divorce": Pousse les panneaux adjacents et s'accroche, mais se sépare en revenant (valeur par défaut).

"stalker": Les panneaux adjacents s'accrochent complètement mais se séparent lorsqu'ils atteignent la fin.

© 2026 Byeolnaerim. Tous droits réservés.PrésentationPolitique de confidentialité