El PageLayout componente proporciona un diseño estructurado de cuadrícula CSS con cuatro áreas: Cabecera, Navegación, Cuerpo y Pies de página. Se utiliza para crear estructuras de página consistentes en todo tu portal.
El diseño utiliza una cuadrícula CSS con las siguientes áreas:
Header — Abarca todo el ancho en la parte superior. Normalmente contiene un MenuBar con botones de guardar/actualizar o títulos de página.Navigation — Columna de la izquierda debajo del encabezado. Se usa para los menús de navegación lateral. Pergaminos independientes del cuerpo.Body — Área principal de contenido. Se desplaza de forma independiente y recibe relleno automáticamente.Footer — Abarca todo el ancho en la parte inferior. Normalmente contiene información sobre derechos de autor o estado.// El PageLayout de React acepta contenido de ranura mediante props (encabezado/navegación/
// cuerpo/pie de página) en lugar de elementos anidados — da a TypeScript un lugar para
// Hacer cumplir restricciones de ranura. Equivalente al marcado de Razor a la izquierda.
<PageLayout
header={
<>
<SaveContextButton />
<RefreshContextButton />
</>
}
navigation={/* Contenido de navegación lateral */}
body={/* Contenido de la página principal */}
footer={<span>© Mi empresa 2026</span>}
/><PageLayout>
<Header>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
</Header>
<Navigation>
<!-- Contenido de navegación lateral -->
</Navigation>
<Body>
<!-- Contenido de la página principal -->
</Body>
<Footer>
<FluentLabel>© Mi empresa 2026</FluentLabel>
</Footer>
</PageLayout>Cada área puede mostrarse o ocultarse usando los HeaderVisibleparámetros , NavigationVisible, y FooterVisible . Cuando está oculta, el área se elimina completamente del diseño de la cuadrícula.
<PageLayout
headerVisible
navigationVisible={false}
footerVisible
header="Título de la página"
body="Contenido sin navegación lateral"
footer="Pie de página"
/><PageLayout HeaderVisible="true"
NavigationVisible="false"
FooterVisible="true">
<Header>Título de la página</Header>
<Body>Contenido sin navegación lateral</Body>
<Footer>Pie de página</Footer>
</PageLayout>Cada área soporta tanto un Class parámetro como Style un (por ejemplo HeaderClass, , HeaderStyle, BodyClass, BodyStyleetc.) para el estilo personalizado. El contenedor de nivel superior también soporta Class y Style.
<PageLayout
className="my-page"
style={{ minHeight: '100vh' }}
headerClassName="my-header"
headerStyle={{ backgroundColor: 'var(--colorNeutralBackground5)' }}
bodyClassName="my-body"
bodyStyle={{ padding: '2rem' }}
header="Cabecera con estilo"
body="Cuerpo estilizado"
/><PageLayout HeaderClass="my-header"
HeaderStyle="background-color: var(--neutral-layer-4);"
BodyClass="my-body"
BodyStyle="padding: 2rem;"
Class="my-page"
Style="min-height: 100vh;">
<Header>Cabecera con estilo</Header>
<Body>Cuerpo estilizado</Body>
</PageLayout>A PageLayout puede anidarse dentro de otro Body PageLayout para crear diseños de subpágina. El diseño hijo detecta automáticamente al padre y aplica una child-layout clase CSS con un estilo reducido en el borde de cabecera.
// El anidamiento funciona igual: pasa un interior <PageLayout> como ranura del cuerpo.</PageLayout>
// PageLayoutNestingContext detecta automáticamente al padre y aplica la
// variante de disposición hija (borde de cabecera más fina, llena el cuerpo del padre
// en lugar de la ventana).
<PageLayout
header="Cabecera principal"
body={
<PageLayout
header={<SaveContextButton />}
body={/* Contenido de la subpágina */}
/>
}
/><PageLayout>
<Header>Cabecera principal</Header>
<Body>
<PageLayout>
<Header>
<MenuBar>
<SaveContextButton />
</MenuBar>
</Header>
<Body>
<!-- Contenido de subpágina -->
</Body>
</PageLayout>
</Body>
</PageLayout>La zona del cuerpo se desplaza de forma independiente respecto al encabezado y al pie de página, manteniéndolos fijos en su lugar. Al navegar entre páginas, el cuerpo se desplaza automáticamente hasta arriba. La zona de navegación también se desplaza de forma independiente.
El siguiente ejemplo muestra a PageLayout con las cuatro áreas pobladas.
Utiliza los controles de abajo para activar la visibilidad de cada área y ajustar el comportamiento de navegación redimensionable: enciende/desactiva el divisor, desactiva la persistencia de localStorage y ajusta los anchos de arrastre por defecto, mínimo y máximo. Arrastra la manilla en el límite de navegación/cuerpo para redimensionarla, o haz doble clic para restablecer al ancho por defecto.
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
Body | RenderFragment? | Contenido renderizado en la zona principal del cuerpo. Esta es la región principal de contenido y se desplaza de forma independiente desde el encabezado, el pie de página y la navegación. El relleno se aplica automáticamente. | |
BodyClass | string? | Clase CSS aplicada al elemento cuerpo. | |
BodyStyle | string? | Estilo CSS en línea aplicado al elemento del cuerpo. | |
DefaultNavigationWidth | int | 280 | Ancho de navegación en px usado antes de que el usuario redimensione y al hacer doble clic reinicie. Por defecto es |
EnableNavigationResizing | bool | True | Cuando PageLayout.NavigationVisible es PageLayout.DefaultNavigationWidth. |
Footer | RenderFragment? | El contenido se renderizaba en el área del pie de página en la parte inferior del diseño. La zapata cubre todo el ancho y permanece fijo mientras el cuerpo se desplaza. Normalmente contiene avisos de derechos de autor o información de estado. | |
FooterClass | string? | Clase CSS aplicada al elemento de pie de página. | |
FooterStyle | string? | Estilo CSS en línea aplicado al elemento del pie de página. | |
FooterVisible | bool | True | Controla si el área del pie de página se renderiza. Cuando se pone en |
Header | RenderFragment? | El contenido se renderizaba en el área de cabecera en la parte superior del diseño. Normalmente contiene un | |
HeaderClass | string? | Clase CSS aplicada al elemento de cabecera. Úsalo para aplicar estilos personalizados como colores de fondo o bordes. | |
HeaderStyle | string? | Estilo CSS en línea aplicado al elemento de cabecera. | |
HeaderVisible | bool | True | Controla si se renderiza el área del encabezado. Cuando se configura como |
MaxNavigationWidth | int | 480 | La mayor que la columna de navegación alcanzará jamás, en px. Por defecto PageLayout.EnableNavigationResizing está encendido, este es el límite superior al que el usuario puede arrastrar el divisor a; Cuando está apagado, esto es el el |
MinNavigationWidth | int | 200 | El más pequeño al que se puede arrastrar la navegación, en px. Por defecto es |
Navigation | RenderFragment? | Contenido renderizado en el área de navegación a la izquierda del cuerpo. Pergaminos independientes del cuerpo. Normalmente contiene un | |
NavigationClass | string? | Clase CSS aplicada al elemento de navegación. | |
NavigationResizeHandleLabel | string | Resize navigation | Etiqueta accesible para el handle de redimensionamiento (renderizado con |
NavigationResizeStorageKey | string | ppp-page-layout-nav-width | clave localStorage, el ancho de navegación elegido persiste en la parte inferior. Valores predeterminados de Layout.PageLayout redimensionable. Ignorado cuando PageLayout.PersistNavigationWidth es |
NavigationStyle | string? | Estilo CSS en línea aplicado al elemento de navegación. | |
NavigationVisible | bool | True | Controla si se renderiza el área de navegación. Cuando se configura en |
PersistNavigationWidth | bool | True | Cuando PageLayout.NavigationResizeStorageKey y restaurado en cargas posteriores. Configura en PageLayout.DefaultNavigationWidth. Solo significativo cuando PageLayout.EnableNavigationResizing es |
ValidationSummaryVisible | bool | True | Controla si se muestra el resumen de validación. Por defecto es |
BodyBodyClassBodyStyleDefaultNavigationWidthEnableNavigationResizingPageLayout.NavigationVisible es PageLayout.DefaultNavigationWidth.FooterFooterClassFooterStyleFooterVisibleHeaderHeaderClassHeaderStyleHeaderVisibleMaxNavigationWidthPageLayout.EnableNavigationResizing está encendido, este es el límite superior al que el usuario puede arrastrar el divisor a; Cuando está apagado, esto es el el MinNavigationWidthNavigationNavigationClassNavigationResizeHandleLabelNavigationResizeStorageKeyLayout.PageLayout redimensionable. Ignorado cuando PageLayout.PersistNavigationWidth es NavigationStyleNavigationVisiblePersistNavigationWidthPageLayout.NavigationResizeStorageKey y restaurado en cargas posteriores. Configura en PageLayout.DefaultNavigationWidth. Solo significativo cuando PageLayout.EnableNavigationResizing es ValidationSummaryVisible