Material Design Lite - Layouts
Neste capítulo, discutiremos os diferentes layouts do Material Design Lite. HTML5 tem os seguintes elementos de contêiner -
<div> - Fornece um contêiner genérico para conteúdo HTML.
<header> - Representa a seção do cabeçalho.
<footer> - Representa a seção de rodapé.
<article> - Representa artigos.
<section> - Fornece um contêiner genérico para vários tipos de seções.
MDL fornece várias classes CSS para aplicar vários aprimoramentos visuais e comportamentais predefinidos aos contêineres. A tabela a seguir lista as classes disponíveis e seus efeitos.
Sr. Não. | Nome e descrição da classe |
---|---|
1 | mdl-layout Identifica um contêiner como um componente MDL. Obrigatório no elemento de contêiner externo. |
2 | mdl-js-layout Adiciona um comportamento MDL básico ao layout. Obrigatório no elemento de contêiner externo. |
3 | mdl-layout__header Identifica o contêiner como um componente MDL. Obrigatório no elemento do cabeçalho. |
4 | mdl-layout-icon Usado para adicionar um ícone de aplicativo. É substituído pelo ícone do menu se ambos estiverem visíveis. Elemento de ícone opcional. |
5 | mdl-layout__header-row Identifica o contêiner como uma linha de cabeçalho MDL. Obrigatório no contêiner de conteúdo do cabeçalho. |
6 | mdl-layout__title Identifica o texto do título do layout. Obrigatório no contêiner de título do layout. |
7 | mdl-layout-spacer Usado para alinhar elementos dentro de um cabeçalho ou gaveta. Ele cresce para preencher o espaço restante. Normalmente usado para alinhar elementos à direita. Opcional no div após o título do layout. |
8 | mdl-navigation Identifica o contêiner como grupo de navegação MDL. Obrigatório no elemento nav. |
9 | mdl-navigation__link Identifica a âncora como um link de navegação MDL. Obrigatório nos elementos âncora do cabeçalho e / ou gaveta. |
10 | mdl-layout__drawer Identifica o contêiner como gaveta de layout MDL. Obrigatório no elemento do contêiner da gaveta. |
11 | mdl-layout__content Identifica o contêiner como conteúdo de layout MDL. Obrigatório no elemento principal. |
12 | mdl-layout__header--scroll Faz o cabeçalho rolar com o conteúdo. Opcional no elemento de cabeçalho. |
13 | mdl-layout--fixed-drawer Torna a gaveta sempre visível e aberta em telas maiores. Opcional no elemento do recipiente externo e não no elemento do recipiente da gaveta. |
14 | mdl-layout--fixed-header Torna o cabeçalho sempre visível, mesmo em telas pequenas. Opcional no elemento de contêiner externo. |
15 | mdl-layout--large-screen-only Oculta um elemento em telas menores. Opcional em qualquer descendente de layout mdl. |
16 | mdl-layout--small-screen-only Oculta um elemento em telas maiores. Opcional em qualquer descendente de layout mdl. |
17 | mdl-layout__header--waterfall Permite um efeito de "cascata" com várias linhas de cabeçalho. Opcional no elemento de cabeçalho. |
18 | mdl-layout__header--transparent Torna o cabeçalho transparente e desenha sobre o fundo do layout. Opcional no elemento de cabeçalho. |
19 | mdl-layout__header--seamed Usa um cabeçalho sem sombra. Opcional no elemento de cabeçalho. |
20 | mdl-layout__tab-bar Identifica o contêiner como uma barra de guias MDL. Obrigatório no elemento do contêiner dentro do cabeçalho (layout com guias). |
21 | mdl-layout__tab Identifica a âncora como link da guia MDL. Obrigatório nos elementos âncora da barra de guias. |
22 | is-active Identifica a guia como a guia ativa padrão. Opcional no elemento âncora da barra de guias e no elemento de seção da guia associado. |
23 | mdl-layout__tab-panel Identifica o contêiner como painel de conteúdo da guia. Obrigatório nos elementos da seção da guia. |
24 | mdl-layout--fixed-tabs Usa guias fixas em vez das guias roláveis padrão. Opcional no elemento do contêiner externo, não no contêiner dentro do cabeçalho. |
Os exemplos a seguir mostram o uso da classe mdl-layout para definir o estilo de vários contêineres.
Gaveta Fixa
Para criar um modelo com gaveta fixa, mas sem cabeçalho, as seguintes classes MDL são usadas.
mdl-layout - Identifica um div como um componente MDL.
mdl-js-layout - Adiciona comportamento MDL básico ao div externo.
mdl-layout--fixed-drawer - Torna a gaveta sempre visível e aberta em telas maiores.
mdl-layout__drawer - Identifica div como gaveta de layout MDL.
mdl-layout-title - Identifica o texto do título do layout.
mdl-navigation - Identifica div como grupo de navegação MDL.
mdl-navigation__link - Identifica a âncora como um link de navegação MDL.
mdl-layout__content - Identifica div como conteúdo de layout 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 o resultado.
Cabeçalho Fixo
Para criar um modelo com cabeçalho fixo, uma classe MDL adicional é usada.
mdl-layout--fixed-header - Torna o cabeçalho sempre visível, mesmo em telas pequenas.
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 o resultado.
Cabeçalho e gaveta fixos
Para criar um modelo com cabeçalho fixo e gaveta fixa, são usadas as seguintes classes MDL adicionais.
mdl-layout--fixed-drawer - Torna a gaveta sempre visível e aberta em telas maiores.
mdl-layout--fixed-header - Torna o cabeçalho sempre visível, mesmo em telas pequenas.
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 o resultado.
Cabeçalho de Rolagem
Para criar um modelo com cabeçalho de rolagem, as seguintes classes MDL são usadas.
mdl-layout--header--scroll - Faz o cabeçalho rolar com o conteúdo.
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 o resultado.
Cabeçalho de Contratação
Para criar um modelo com um cabeçalho que se contrai conforme a página rola para baixo, a seguinte classe MDL é usada.
mdl-layout__header--waterfall - Permite um efeito de "cachoeira" com várias linhas de cabeçalho.
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 o resultado.
Cabeçalho fixo com guias roláveis
Para criar um modelo com um cabeçalho com guias roláveis, as seguintes classes MDL são usadas.
mdl-layout__tab-bar - Identifica o contêiner como uma barra de guias MDL.
mdl-layout__tab - Identifica a âncora como um link da guia MDL.
mdl-layout__tab-panel - Identifica o contêiner como um painel de conteúdo da guia.
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 o resultado.
Cabeçalho fixo com guias fixas
Para criar um modelo com um cabeçalho com guias fixas, a seguinte classe MDL adicional é usada.
mdl-layout--fixed-tabs - Usa guias fixas em vez das guias roláveis padrão.
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 o resultado.