Material Design Lite - Diseños
En este capítulo, analizaremos los diferentes diseños de Material Design Lite. HTML5 tiene los siguientes elementos de contenedor:
<div> - Proporciona un contenedor genérico para contenido HTML.
<header> : Representa la sección del encabezado.
<footer> - Representa la sección de pie de página.
<article> - Representa artículos.
<section> - Proporciona un contenedor genérico para varios tipos de secciones.
MDL proporciona varias clases de CSS para aplicar varias mejoras visuales y de comportamiento predefinidas a los contenedores. La siguiente tabla enumera las clases disponibles y sus efectos.
No Señor. | Nombre y descripción de la clase |
---|---|
1 | mdl-layout Identifica un contenedor como un componente MDL. Requerido en el elemento contenedor exterior. |
2 | mdl-js-layout Agrega el comportamiento básico de MDL al diseño. Requerido en el elemento contenedor exterior. |
3 | mdl-layout__header Identifica el contenedor como un componente MDL. Requerido en el elemento de encabezado. |
4 | mdl-layout-icon Se usa para agregar un ícono de aplicación. Se reemplaza por el icono de menú si ambos están visibles. Elemento de icono opcional. |
5 | mdl-layout__header-row Identifica el contenedor como fila de encabezado MDL. Obligatorio en el contenedor de contenido del encabezado. |
6 | mdl-layout__title Identifica el texto del título del diseño. Requerido en el contenedor de título de diseño. |
7 | mdl-layout-spacer Se utiliza para alinear elementos dentro de un encabezado o cajón. Crece para llenar el espacio restante. Se usa comúnmente para alinear elementos a la derecha. Opcional en div siguiendo el título del diseño. |
8 | mdl-navigation Identifica el contenedor como grupo de navegación MDL. Requerido en el elemento de navegación. |
9 | mdl-navigation__link Identifica el ancla como enlace de navegación MDL. Requerido en elementos de anclaje de cabecera y / o cajón. |
10 | mdl-layout__drawer Identifica el contenedor como cajón de diseño MDL. Requerido en el elemento contenedor del cajón. |
11 | mdl-layout__content Identifica el contenedor como contenido de diseño MDL. Requerido en el elemento principal. |
12 | mdl-layout__header--scroll Hace que el encabezado se desplace con el contenido. Opcional en el elemento de encabezado. |
13 | mdl-layout--fixed-drawer Hace que el cajón esté siempre visible y abierto en pantallas más grandes. Opcional en el elemento contenedor exterior y no en el elemento contenedor de cajón. |
14 | mdl-layout--fixed-header Hace que el encabezado esté siempre visible, incluso en pantallas pequeñas. Opcional en el elemento contenedor exterior. |
15 | mdl-layout--large-screen-only Oculta un elemento en pantallas más pequeñas. Opcional en cualquier descendiente de mdl-layout. |
dieciséis | mdl-layout--small-screen-only Oculta un elemento en pantallas más grandes. Opcional en cualquier descendiente de mdl-layout. |
17 | mdl-layout__header--waterfall Permite un efecto de "cascada" con múltiples líneas de encabezado. Opcional en el elemento de encabezado. |
18 | mdl-layout__header--transparent Hace que el encabezado sea transparente y se dibuja sobre el fondo del diseño. Opcional en el elemento de encabezado. |
19 | mdl-layout__header--seamed Utiliza un encabezado sin sombra. Opcional en el elemento de encabezado. |
20 | mdl-layout__tab-bar Identifica el contenedor como una barra de pestañas MDL. Requerido en el elemento contenedor dentro del encabezado (diseño con pestañas). |
21 | mdl-layout__tab Identifica el ancla como enlace de pestaña MDL. Obligatorio en los elementos de ancla de la barra de pestañas. |
22 | is-active Identifica la pestaña como pestaña activa predeterminada. Opcional en el elemento de anclaje de la barra de pestañas y el elemento de sección de pestaña asociado. |
23 | mdl-layout__tab-panel Identifica el contenedor como panel de contenido de la pestaña. Obligatorio en los elementos de la sección de pestañas. |
24 | mdl-layout--fixed-tabs Utiliza pestañas fijas en lugar de las pestañas desplazables predeterminadas. Opcional en el elemento contenedor exterior, no en el encabezado interior del contenedor. |
Los siguientes ejemplos muestran el uso de la clase mdl-layout para diseñar varios contenedores.
Cajón fijo
Para crear una plantilla con cajón fijo pero sin encabezado, se utilizan las siguientes clases de MDL.
mdl-layout - Identifica un div como componente MDL.
mdl-js-layout - Agrega el comportamiento básico de MDL al div externo.
mdl-layout--fixed-drawer - Hace que el cajón esté siempre visible y abierto en mamparas más grandes.
mdl-layout__drawer - Identifica div como cajón de diseño MDL.
mdl-layout-title - Identifica el texto del título del diseño.
mdl-navigation - Identifica div como grupo de navegación MDL.
mdl-navigation__link - Identifica el ancla como enlace de navegación MDL.
mdl-layout__content - Identifica div como contenido de diseño MDL.
mdl_fixeddrawer.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- No header, and the drawer stays open on larger screens (fixed drawer).-->
<div class = "mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<div class = "page-content" style = "padding-left:100px;">Hello World!</div>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Encabezado fijo
Para crear una plantilla con encabezado fijo, se utiliza la siguiente clase MDL adicional.
mdl-layout--fixed-header - Hace que el encabezado esté siempre visible, incluso en pantallas pequeñas.
mdl_fixedheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- Always shows a header, even in smaller screens. -->
<div class = "mdl-layout mdl-js-layout mdl-layout--fixed-header">
<header class = "mdl-layout__header">
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<!-- Add spacer, to align navigation to the right -->
<div class = "mdl-layout-spacer"></div>
<!-- Navigation -->
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = ""
style = "color:gray">Home</a>
<a class = "mdl-navigation__link" href = ""
style = "color:gray">About</a>
</nav>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<div class = "page-content">Hello World!</div>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Cabecera y cajón fijos
Para crear una plantilla con encabezado fijo y un cajón fijo, se utilizan las siguientes clases MDL adicionales.
mdl-layout--fixed-drawer - Hace que el cajón esté siempre visible y abierto en mamparas más grandes.
mdl-layout--fixed-header - Hace que el encabezado esté siempre visible, incluso en pantallas pequeñas.
mdl_fixedheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- The drawer is always open in large screens. The header is always
shown, even in small screens. -->
<div class = "mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-layout--fixed-header">
<header class = "mdl-layout__header">
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<!-- Add spacer, to align navigation to the right -->
<div class = "mdl-layout-spacer"></div>
<!-- Navigation -->
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = ""
style = "color:gray">Home</a>
<a class = "mdl-navigation__link" href = ""
style = "color:gray">About</a>
</nav>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<div class = "page-content">Hello World!</div>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Encabezado de desplazamiento
Para crear una plantilla con encabezado de desplazamiento, se utilizan las siguientes clases de MDL.
mdl-layout--header--scroll - Hace que el encabezado se desplace con el contenido.
mdl_scrollingheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- Uses a header that scrolls with the text, rather than
staying locked at the top -->
<div class = "mdl-layout mdl-js-layout ">
<header class = "mdl-layout__header mdl-layout__header--scroll">
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<!-- Add spacer, to align navigation to the right -->
<div class = "mdl-layout-spacer"></div>
<!-- Navigation -->
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<div class = "page-content" style = "padding-left:100px;">Hello World!
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
</div>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Encabezado de contratación
Para crear una plantilla con un encabezado que se contrae a medida que la página se desplaza hacia abajo, se utiliza la siguiente clase MDL.
mdl-layout__header--waterfall - Permite un efecto de "cascada" con múltiples líneas de encabezado.
mdl_waterfallheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- The drawer is always open in large screens. The header is always
shown, even in small screens. -->
<div class = "mdl-layout mdl-js-layout ">
<header class = "mdl-layout__header mdl-layout__header--waterfall">
<!-- Top row, always visible -->
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<!-- Add spacer, to align navigation to the right -->
<div class = "mdl-layout-spacer"></div>
</div>
<!-- Bottom row, not visible on scroll -->
<div class = "mdl-layout__header-row">
<div class = "mdl-layout-spacer"></div>
<!-- Navigation -->
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<div class = "page-content" style = "padding-left:100px;">Hello World!
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
<br/><br/><br/><br/><br/><br/><br/><br/>...
</div>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Encabezado fijo con pestañas desplazables
Para crear una plantilla con un encabezado que tenga pestañas desplazables, se utilizan las siguientes clases de MDL.
mdl-layout__tab-bar - Identifica el contenedor como una barra de pestañas MDL.
mdl-layout__tab - Identifica el ancla como un enlace de pestaña MDL.
mdl-layout__tab-panel - Identifica el contenedor como un panel de contenido de pestaña.
mdl_scrollabletabheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- The drawer is always open in large screens. The header is always
shown, even in small screens. -->
<div class = "mdl-layout mdl-js-layout mdl-layout--fixed-header">
<header class = "mdl-layout__header">
<!-- Top row, always visible -->
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
</div>
<!-- Tabs -->
<div class = "mdl-layout__tab-bar mdl-js-ripple-effect">
<a href = "#scroll-tab-1" class = "mdl-layout__tab is-active">Tab 1</a>
<a href = "#scroll-tab-2" class = "mdl-layout__tab">Tab 2</a>
<a href = "#scroll-tab-3" class = "mdl-layout__tab">Tab 3</a>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<section class = "mdl-layout__tab-panel is-active" id = "scroll-tab-1">
<div class = "page-content">Tab 1 Contents</div>
</section>
<section class = "mdl-layout__tab-panel" id = "scroll-tab-2">
<div class = "page-content">Tab 2 Contents</div>
</section>
<section class = "mdl-layout__tab-panel" id = "scroll-tab-3">
<div class = "page-content">Tab 3 Contents</div>
</section>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.
Encabezado fijo con pestañas fijas
Para crear una plantilla con un encabezado con pestañas fijas, se utiliza la siguiente clase MDL adicional.
mdl-layout--fixed-tabs - Utiliza pestañas fijas en lugar de las pestañas desplazables predeterminadas.
mdl_fixedtabheader.htm
<html>
<head>
<link rel = "stylesheet"
href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-pink.min.css">
<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js">
</script>
<link rel = "stylesheet"
href = "https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<!-- The drawer is always open in large screens. The header is always
shown, even in small screens. -->
<div class = "mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-tabs">
<header class = "mdl-layout__header">
<!-- Top row, always visible -->
<div class = "mdl-layout__header-row">
<!-- Title -->
<span class = "mdl-layout-title">HTML5 Tutorial</span>
</div>
<!-- Tabs -->
<div class = "mdl-layout__tab-bar mdl-js-ripple-effect">
<a href = "#scroll-tab-1" class = "mdl-layout__tab is-active">Tab 1</a>
<a href = "#scroll-tab-2" class = "mdl-layout__tab">Tab 2</a>
<a href = "#scroll-tab-3" class = "mdl-layout__tab">Tab 3</a>
</div>
</header>
<div class = "mdl-layout__drawer">
<span class = "mdl-layout-title">HTML5 Tutorial</span>
<nav class = "mdl-navigation">
<a class = "mdl-navigation__link" href = "">Home</a>
<a class = "mdl-navigation__link" href = "">About</a>
</nav>
</div>
<main class = "mdl-layout__content">
<section class = "mdl-layout__tab-panel is-active" id = "scroll-tab-1">
<div class = "page-content">Tab 1 Contents</div>
</section>
<section class = "mdl-layout__tab-panel" id = "scroll-tab-2">
<div class = "page-content">Tab 2 Contents</div>
</section>
<section class = "mdl-layout__tab-panel" id = "scroll-tab-3">
<div class = "page-content">Tab 3 Contents</div>
</section>
</main>
</div>
</body>
</html>
Resultado
Verifique el resultado.