머티리얼 디자인 라이트-레이아웃

이 장에서는 Material Design Lite의 다양한 레이아웃에 대해 설명합니다. HTML5에는 다음과 같은 컨테이너 요소가 있습니다.

  • <div> − HTML 콘텐츠에 일반 컨테이너를 제공합니다.

  • <header> − 헤더 섹션을 나타냅니다.

  • <footer> − 바닥 글 섹션을 나타냅니다.

  • <article> − 기사를 나타냅니다.

  • <section> − 다양한 유형의 섹션에 대한 일반 컨테이너를 제공합니다.

MDL은 다양한 CSS 클래스를 제공하여 미리 정의 된 다양한 시각적 및 동작 향상을 컨테이너에 적용합니다. 다음 표에는 사용 가능한 클래스와 그 효과가 나열되어 있습니다.

Sr. 아니. 클래스 이름 및 설명
1

mdl-layout

컨테이너를 MDL 구성 요소로 식별합니다. 외부 컨테이너 요소에 필요합니다.

2

mdl-js-layout

레이아웃에 기본 MDL 동작을 추가합니다. 외부 컨테이너 요소에 필요합니다.

mdl-layout__header

컨테이너를 MDL 구성 요소로 식별합니다. 헤더 요소에 필요합니다.

4

mdl-layout-icon

애플리케이션 아이콘을 추가하는 데 사용됩니다. 둘 다 표시되는 경우 메뉴 아이콘으로 재정의됩니다. 선택적 아이콘 요소.

5

mdl-layout__header-row

컨테이너를 MDL 헤더 행으로 식별합니다. 헤더 콘텐츠 컨테이너에 필요합니다.

6

mdl-layout__title

레이아웃 제목 텍스트를 식별합니다. 레이아웃 제목 컨테이너에 필요합니다.

7

mdl-layout-spacer

머리글 또는 서랍 안의 요소를 정렬하는 데 사용됩니다. 남은 공간을 채우기 위해 성장합니다. 일반적으로 요소를 오른쪽으로 정렬하는 데 사용됩니다. 레이아웃 제목을 따르는 div에서 선택 사항입니다.

8

mdl-navigation

컨테이너를 MDL 탐색 그룹으로 식별합니다. nav 요소에 필요합니다.

9

mdl-navigation__link

앵커를 MDL 탐색 링크로 식별합니다. 헤더 및 / 또는 서랍 앵커 요소에 필요합니다.

10

mdl-layout__drawer

컨테이너를 MDL 레이아웃 서랍으로 식별합니다. 서랍 컨테이너 요소에 필요합니다.

11

mdl-layout__content

컨테이너를 MDL 레이아웃 콘텐츠로 식별합니다. 주요 요소에 필요합니다.

12

mdl-layout__header--scroll

헤더를 콘텐츠와 함께 스크롤합니다. 헤더 요소에서 선택 사항입니다.

13

mdl-layout--fixed-drawer

서랍이 항상 표시되고 더 큰 화면에서 열립니다. 서랍 컨테이너 요소가 아닌 외부 컨테이너 요소에서 선택 사항입니다.

14

mdl-layout--fixed-header

작은 화면에서도 헤더를 항상 표시합니다. 외부 컨테이너 요소에서 선택 사항입니다.

15

mdl-layout--large-screen-only

작은 화면에서 요소를 숨 깁니다. mdl-layout의 모든 하위 항목에서 선택 사항입니다.

16

mdl-layout--small-screen-only

큰 화면에서 요소를 숨 깁니다. mdl-layout의 모든 하위 항목에서 선택 사항입니다.

17

mdl-layout__header--waterfall

여러 헤더 행으로 "폭포"효과를 허용합니다. 헤더 요소에서 선택 사항입니다.

18

mdl-layout__header--transparent

헤더를 투명하게 만들고 레이아웃 배경 위에 그립니다. 헤더 요소에서 선택 사항입니다.

19

mdl-layout__header--seamed

그림자가없는 헤더를 사용합니다. 헤더 요소에서 선택 사항입니다.

20

mdl-layout__tab-bar

컨테이너를 MDL 탭 표시 줄로 식별합니다. 헤더 내부의 컨테이너 요소에 필요합니다 (탭 레이아웃).

21

mdl-layout__tab

앵커를 MDL 탭 링크로 식별합니다. 탭 표시 줄 앵커 요소에 필요합니다.

22

is-active

탭을 기본 활성 탭으로 식별합니다. 탭 표시 줄 앵커 요소 및 연관된 탭 섹션 요소에서 선택 사항입니다.

23

mdl-layout__tab-panel

컨테이너를 탭 컨텐츠 패널로 식별합니다. 탭 섹션 요소에 필요합니다.

24

mdl-layout--fixed-tabs

기본 스크롤 가능 탭 대신 고정 탭을 사용합니다. 헤더 내부 컨테이너가 아닌 외부 컨테이너 요소에 대한 선택 사항입니다.

다음 예제는 mdl-layout 클래스를 사용하여 다양한 컨테이너의 스타일을 지정하는 방법을 보여줍니다.

고정 서랍

고정 된 서랍이 있지만 헤더가없는 템플릿을 만들려면 다음 MDL 클래스가 사용됩니다.

  • mdl-layout − div를 MDL 구성 요소로 식별합니다.

  • mdl-js-layout − 외부 div에 기본 MDL 동작을 추가합니다.

  • mdl-layout--fixed-drawer − 서랍이 항상 표시되고 더 큰 화면에서 열립니다.

  • mdl-layout__drawer − div를 MDL 레이아웃 서랍으로 식별합니다.

  • mdl-layout-title − 레이아웃 제목 텍스트를 식별합니다.

  • mdl-navigation − div를 MDL 탐색 그룹으로 식별합니다.

  • mdl-navigation__link − 앵커를 MDL 탐색 링크로 식별합니다.

  • mdl-layout__content − div를 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>

결과

결과를 확인하십시오.

고정 헤더

추가 MDL 클래스를 따르는 고정 헤더로 템플릿을 생성하기 위해 사용됩니다.

  • mdl-layout--fixed-header − 작은 화면에서도 헤더를 항상 표시합니다.

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>

결과

결과를 확인하십시오.

고정 헤더 및 서랍

고정 헤더와 고정 서랍이있는 템플릿을 만들려면 다음과 같은 추가 MDL 클래스가 사용됩니다.

  • mdl-layout--fixed-drawer − 서랍이 항상 표시되고 더 큰 화면에서 열립니다.

  • mdl-layout--fixed-header − 작은 화면에서도 헤더를 항상 표시합니다.

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>

결과

결과를 확인하십시오.

스크롤링 헤더

스크롤 헤더가있는 템플릿을 생성하기 위해 다음과 같은 MDL 클래스가 사용됩니다.

  • mdl-layout--header--scroll − 헤더를 내용과 함께 스크롤합니다.

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>

결과

결과를 확인하십시오.

계약 헤더

페이지가 아래로 스크롤 될 때 축소되는 헤더가있는 템플릿을 생성하기 위해 다음 MDL 클래스가 사용됩니다.

  • mdl-layout__header--waterfall − 여러 헤더 행으로 "폭포"효과를 허용합니다.

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>

결과

결과를 확인하십시오.

스크롤 가능한 탭이있는 고정 헤더

스크롤 가능한 탭이있는 헤더가있는 템플릿을 만들려면 다음 MDL 클래스가 사용됩니다.

  • mdl-layout__tab-bar − 컨테이너를 MDL 탭 바로 식별합니다.

  • mdl-layout__tab − 앵커를 MDL 탭 링크로 식별합니다.

  • mdl-layout__tab-panel − 컨테이너를 탭 콘텐츠 패널로 식별합니다.

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>

결과

결과를 확인하십시오.

고정 탭이있는 고정 헤더

고정 탭이있는 헤더로 템플릿을 생성하려면 다음과 같은 추가 MDL 클래스가 사용됩니다.

  • mdl-layout--fixed-tabs − 기본 스크롤 탭 대신 고정 탭을 사용합니다.

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>

결과

결과를 확인하십시오.