Material Design Lite - Layout
In questo capitolo, discuteremo i diversi layout in Material Design Lite. HTML5 ha i seguenti elementi contenitore:
<div> - Fornisce un contenitore generico al contenuto HTML.
<header> - Rappresenta la sezione dell'intestazione.
<footer> - Rappresenta la sezione del piè di pagina.
<article> - Rappresenta articoli.
<section> - Fornisce un contenitore generico per vari tipi di sezioni.
MDL fornisce varie classi CSS per applicare vari miglioramenti visivi e comportamentali predefiniti ai contenitori. La tabella seguente elenca le classi disponibili e i loro effetti.
Sr.No. | Nome e descrizione della classe |
---|---|
1 | mdl-layout Identifica un contenitore come componente MDL. Obbligatorio sull'elemento contenitore esterno. |
2 | mdl-js-layout Aggiunge il comportamento MDL di base al layout. Obbligatorio sull'elemento contenitore esterno. |
3 | mdl-layout__header Identifica il contenitore come un componente MDL. Obbligatorio sull'elemento di intestazione. |
4 | mdl-layout-icon Utilizzato per aggiungere un'icona dell'applicazione. Viene sovrascritto dall'icona del menu se entrambi sono visibili. Elemento icona opzionale. |
5 | mdl-layout__header-row Identifica il contenitore come riga di intestazione MDL. Obbligatorio nel contenitore del contenuto dell'intestazione. |
6 | mdl-layout__title Identifica il testo del titolo del layout. Obbligatorio nel contenitore del titolo del layout. |
7 | mdl-layout-spacer Utilizzato per allineare gli elementi all'interno di un'intestazione o di un cassetto. Cresce per riempire lo spazio rimanente. Comunemente utilizzato per allineare gli elementi a destra. Facoltativo su div dopo il titolo del layout. |
8 | mdl-navigation Identifica il contenitore come gruppo di navigazione MDL. Obbligatorio sull'elemento nav. |
9 | mdl-navigation__link Identifica l'ancora come collegamento di navigazione MDL. Richiesto sugli elementi di ancoraggio dell'intestazione e / o del cassetto. |
10 | mdl-layout__drawer Identifica il contenitore come cassetto del layout MDL. Richiesto su elemento contenitore cassetto. |
11 | mdl-layout__content Identifica il contenitore come contenuto del layout MDL. Obbligatorio sull'elemento principale. |
12 | mdl-layout__header--scroll Fa scorrere l'intestazione con il contenuto. Opzionale sull'elemento di intestazione. |
13 | mdl-layout--fixed-drawer Rende il cassetto sempre visibile e aperto negli schermi più grandi. Opzionale su elemento contenitore esterno e non su elemento contenitore cassetto. |
14 | mdl-layout--fixed-header Rende l'intestazione sempre visibile, anche nei piccoli schermi. Opzionale su elemento contenitore esterno. |
15 | mdl-layout--large-screen-only Nasconde un elemento su schermi più piccoli. Facoltativo su qualsiasi discendente di mdl-layout. |
16 | mdl-layout--small-screen-only Nasconde un elemento su schermi più grandi. Facoltativo su qualsiasi discendente di mdl-layout. |
17 | mdl-layout__header--waterfall Consente un effetto "cascata" con più righe di intestazione. Opzionale sull'elemento di intestazione. |
18 | mdl-layout__header--transparent Rende trasparente l'intestazione e disegna sopra lo sfondo del layout. Opzionale sull'elemento di intestazione. |
19 | mdl-layout__header--seamed Utilizza un'intestazione senza ombre. Opzionale sull'elemento di intestazione. |
20 | mdl-layout__tab-bar Identifica il contenitore come una barra delle schede MDL. Obbligatorio sull'elemento contenitore all'interno dell'intestazione (layout a schede). |
21 | mdl-layout__tab Identifica l'ancora come collegamento a una scheda MDL. Obbligatorio sugli elementi di ancoraggio della barra delle schede. |
22 | is-active Identifica la scheda come scheda attiva predefinita. Facoltativo sull'elemento di ancoraggio della barra delle schede e sull'elemento di sezione della scheda associato. |
23 | mdl-layout__tab-panel Identifica il contenitore come pannello del contenuto della scheda. Obbligatorio sugli elementi della sezione della scheda. |
24 | mdl-layout--fixed-tabs Utilizza le schede fisse invece delle schede scorrevoli predefinite. Facoltativo sull'elemento contenitore esterno, non contenitore all'interno dell'intestazione. |
I seguenti esempi mostrano l'uso della classe mdl-layout per definire vari contenitori.
Cassetto fisso
Per creare un modello con un cassetto fisso ma senza intestazione, vengono utilizzate le seguenti classi MDL.
mdl-layout - Identifica un div come un componente MDL.
mdl-js-layout - Aggiunge il comportamento MDL di base al div esterno.
mdl-layout--fixed-drawer - Rende il cassetto sempre visibile e aperto negli schermi più grandi.
mdl-layout__drawer - Identifica div come cassetto del layout MDL.
mdl-layout-title - Identifica il testo del titolo del layout.
mdl-navigation - Identifica div come gruppo di navigazione MDL.
mdl-navigation__link - Identifica l'ancora come link di navigazione MDL.
mdl-layout__content - Identifica div come contenuto del 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>
Risultato
Verifica il risultato.
Intestazione fissa
Per creare un modello con intestazione fissa viene utilizzata la seguente classe MDL aggiuntiva.
mdl-layout--fixed-header - Rende l'intestazione sempre visibile, anche nei piccoli schermi.
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>
Risultato
Verifica il risultato.
Intestazione e cassetto fissi
Per creare un modello con intestazione fissa e un cassetto fisso, vengono utilizzate le seguenti classi MDL aggiuntive.
mdl-layout--fixed-drawer - Rende il cassetto sempre visibile e aperto negli schermi più grandi.
mdl-layout--fixed-header - Rende l'intestazione sempre visibile, anche nei piccoli schermi.
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>
Risultato
Verifica il risultato.
Intestazione scorrevole
Per creare un modello con intestazione scorrevole, vengono utilizzate le seguenti classi MDL.
mdl-layout--header--scroll - Fa scorrere l'intestazione con il contenuto.
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>
Risultato
Verifica il risultato.
Intestazione contrattuale
Per creare un modello con un'intestazione che si contrae mentre la pagina scorre verso il basso, viene utilizzata la seguente classe MDL.
mdl-layout__header--waterfall - Consente un effetto "cascata" con più righe di intestazione.
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>
Risultato
Verifica il risultato.
Intestazione fissa con schede scorrevoli
Per creare un modello con un'intestazione con schede scorrevoli, vengono utilizzate le seguenti classi MDL.
mdl-layout__tab-bar - Identifica il contenitore come una barra delle schede MDL.
mdl-layout__tab - Identifica l'ancoraggio come un collegamento a una scheda MDL.
mdl-layout__tab-panel - Identifica il contenitore come un pannello del contenuto della scheda.
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>
Risultato
Verifica il risultato.
Intestazione fissa con schede fisse
Per creare un modello con un'intestazione con schede fisse, viene utilizzata la seguente classe MDL aggiuntiva.
mdl-layout--fixed-tabs - Utilizza schede fisse invece delle schede scorrevoli predefinite.
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>
Risultato
Verifica il risultato.