Создайте статичный сайт с помощью Material Design Lite

  1. Начальная настройка HTML
  2. Компонент MDL Layout
  3. Компонент сетки
  4. Настройка макета
  5. Компонент карты
  6. Отдельные страницы
  7. ПЛАВНИК

Материал Дизайн Лайт это фронтенд шаблон сайта это позволяет вам легко добавлять внешний вид и дизайн материалов в ваши проекты. MDL был разработан для статических сайтов, так как мы хотели, чтобы он был независимым от фреймворка и набора инструментов. Однако это не означает, что вы не можете настроить его для своего макет сайта потребности - MDL это только отправная точка. В этом уроке мы создадим простой веб-сайт портфолио с блогом, разделом «О нас» и контактной формой.

Начальная настройка HTML

Сначала создайте пустую страницу HTML и в теге <head> документа добавьте теги <link> в гарнитуру Roboto, файл MDL CSS и шрифт значка MD, начиная с таблицы стилей гарнитуры.

<link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en">

Затем добавьте документ MDL CSS, который содержит все стили, которые мы будем использовать.

Цветовые схемы Material Design основаны на основном цвете и цветовых акцентах. Они указаны в имени файла CSS следующим образом: материал. {Основной} - {акцент} .min.css. Наша CDN содержит несколько комбинаций, основанных на общих оттенках Material Design. Здесь мы использовали серый и розовый:

<link rel = "stylesheet" href = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.grey-pink.min.css" />

Значки требуются для некоторых компонентов, поэтому добавьте сюда ссылку и здесь.

<link rel = "stylesheet" href = "https://fonts.googleapis.com/icon?family=Material+Icons">

Последний файл для ссылки на это файл JavaScript. Это должно быть добавлено внизу нашей HTML-страницы, перед закрывающим тегом </ body>.

<script src = "https://storage.googleapis.com/code.getmdl.io/1.0.6/material.min.js"> </ script>

Наконец, нам нужно включить тег <meta> viewport в <head> нашей страницы, чтобы мобильные устройства отображались правильно.

<meta name = "viewport" content = "width = device-width, initial-scale = 1.0">

Компонент MDL Layout

Это базовая структура страницы, хотя поведение

MDL имеет ряд различных компонентов, которые могут использоваться совместно или индивидуально. Макет считается компонентом, который может быть изменен в соответствии с вашими потребностями и автоматически адаптируется к различным браузерам, размерам экрана и устройствам.

Базовая структура страницы имеет элемент <div> с классами CSS mdl-layout и mdl-js-layout. Эти классы содержат все данные на странице. Внутри основного контейнера добавьте тег <header> для навигации с помощью класса mdl-layout__header. Наконец, внутри <header> напишите <div> с строкой mdl-layout__header-row, которая будет содержать содержимое заголовка.

<div class = "mdl-layout mdl-js-layout"> <header class = "mdl-layout__header"> <div class = "mdl-layout__header-row"> </ div> </ header> </ div>

Затем добавьте содержимое в mdl-layout__header-row. Начните с создания div с классом mdl-layout__title и добавьте заголовок веб-сайта. Затем добавьте тег nav с классом mdl-navigation и добавьте тег href для каждой из ваших ссылок. Каждой ссылке нужен класс MDL-навигации.

<span class = "mdl-layout__title"> Веб-сайт простого портфолио </ span> <nav class = "mdl-navigation"> <a class="mdl-navigation__link" href="#"> Портфолио </a> <класс = "mdl-navigation__link" href = "#"> Блог </a> <a class="mdl-navigation__link" href="#"> О </a> <a class = "mdl-navigation__link" href = "# "> Связаться </a> </ nav>

Обратите внимание, что навигация выравнивается по левому краю, рядом с заголовком. Если вы хотите, чтобы он располагался справа, добавьте разделитель <div> между заголовком и навигацией.

<! - Заголовок -> <div class = "mdl-layout-spacer"> </ div> <! - Навигация ->

Наконец, давайте добавим блок макета. Это будет удерживать содержимое слайда, которое появляется на меньших экранах и может быть открыто с помощью значка меню на любом размере экрана. Для этого вы в значительной степени копируете то, что мы имеем в навигации, за исключением того, что теперь проставка должна находиться за пределами тега <header>.

<header class = "mdl-layout__header"> <! - содержимое заголовка и навигация -> </ header> <div class = "mdl-layout__drawer"> <span class = "mdl-layout__title"> Простой макет </ span > <nav class = "mdl-navigation"> <a class="mdl-navigation__link" href="#"> Портфолио </a> <a class="mdl-navigation__link" href="#"> Блог </ a > <a class="mdl-navigation__link" href="#"> О </a> <a class="mdl-navigation__link" href="#"> Связаться </a> </ nav> </ div>

Если у вас уже есть контент на странице, вы заметите, что на экранах мобильных устройств кнопка ящика плавает поверх контента. Это позволяет разработчикам определять, сколько полей / отступов появляется над содержимым. Чтобы сдвинуть содержимое вниз, вы должны сообщить MDL, что заголовок необходимо исправить, добавив класс mdl-layout - fixed-header в начальный контейнер <div>.

<div class = "mdl-layout mdl-js-layout mdl-layout - fixed-header"> <! - остальная часть HTML-страницы -> </ div>

Чтобы завершить страницу, вам нужно добавить тег <main>, который будет содержать весь основной контент. Базовая структура должна выглядеть так:

<div class = "mdl-layout mdl-js-layout mdl-layout - fixed-header"> <header class = "mdl-layout__header"> <! - содержимое заголовка и навигация -> </ header> <div class = "mdl-layout__drawer"> <! - tray -> </ div> <main class = "mdl-layout__content"> <p> Hello world! </ p> </ main> </ div>

Компонент сетки

После того, как вы настроили нашу сетку, вы можете начать настраивать дизайн в соответствии с вашими потребностями.

Сетка MDL была разработана, чтобы уменьшить обычную нагрузку на кодирование, необходимую для размещения контента на экранах нескольких размеров. Сетка определена и заключена в элемент контейнера с классом CSS mdl-grid. Он имеет 12 столбцов для настольных компьютеров, восемь для планшетов и четыре для мобильных устройств, каждый размер имеет предопределенные поля и желоба.

Чтобы использовать сетку, добавьте <div> в свой контейнер содержимого с присоединенным классом mdl-grid.

<main class = "mdl-layout__content"> <div class = "mdl-grid"> <p> Привет, мир! </ p> </ div> </ main>

Ячейки / столбцы будут определены внутри сетки. Здесь нужно добавить два CSS-класса: общий класс ячейки mdl-cell и mdl-cell - класс COLUMNS-col, где COLUMNS определяет ширину ячейки.

<div class = "mdl-cell mdl-cell - 12-col"> <p> Hello world! </ p> </ div> <div class = "mdl-cell mdl-cell - 4-col"> Ячейка 1 </ div> <div class = "mdl-cell mdl-cell - 4-col"> Ячейка 2 </ div> <div class = "mdl-cell mdl-cell - 4-col"> Ячейка 3 </ DIV>

В этом примере первая строка «Hello world!» полноразмерный (12 столбцов), а второй ряд имеет четыре ячейки (три столбца). Этот второй ряд будет оставаться сеткой столбцов три на три, пока не достигнет менее 480 пикселей.

Вы можете настроить таргетинг на устройства с определенными классами, добавив класс mdl-cell - COLUMNS-col-DEVICE. Если вы хотите, чтобы макет вашего планшета был похож на макет рабочего стола, вы должны добавить эти классы, чтобы последние две ячейки отображались в виде двух столбцов с полноразмерным перед ним:

<div class = "mdl-cell mdl-cell - 12-col-таблетка"> Cell 1 </ div> <div class = "mdl-cell mdl-cell - 4-col-таблетка"> Cell 2 </ div div> <div class = "mdl-cell mdl-cell - 4-col-tablet"> Cell 3 </ div>

Есть два типа нижнего колонтитула: мега и мини. В этом примере мы будем использовать мини-нижний колонтитул, который имеет структуру содержимого, состоящую из левого и правого разделов, с классами CSS для каждого (mdl-mini-footer__left-section и mdl-mini-footer__right-section соответственно). Внутри у нас есть <div> для нашего логотипа / заголовка и <div> для нашего списка ссылок, который отображается в виде строки.

Где мы добавим нижний колонтитул в разметку, зависит от желаемого эффекта. Если мы хотим зафиксировать нижний колонтитул, нам нужно добавить его после тега <main>. Если мы хотим, чтобы он прокручивался и появлялся после нашего контента, мы добавляем его внутри тега <main>.

<footer class = "mdl-mini-footer"> <div class = "mdl-mini-footer__left-section"> <div class = "mdl-logo"> Веб-сайт портфолио </ div> </ div> <div class = "mdl-mini-footer__right-section"> <ul class = "mdl-mini-footer__link-list"> <li> <a href="#"> Справка </a> </ li> <li> <a href = "#"> Конфиденциальность и условия </a> </ li> </ ul> </ div> </ footer>

Настройка макета

Сетка содержит все клетки. Каждую ширину ячейки можно настроить, хотя значения по умолчанию работают хорошо

Вы можете настроить макет, скрыв mdl-layout__drawer на рабочем столе. Для этого добавьте класс mdl-layout - small-screen-only в контейнер выдвижных ящиков. После этого удалите mdl-layout-spacer из <header>. Чтобы центрировать заголовок и навигацию, поместите nav в его собственную строку mdl-layout__header-row, а затем напишите некоторый пользовательский CSS.

.mdl-layout__header-row {padding: 0; justify-content: центр; }

Чтобы скрыть навигацию при прокрутке вниз по странице, теперь вы можете применить метод водопада к <header>, добавив класс mdl-layout__header - waterfall к <header>. Таким образом, пользователи могут сосредоточиться исключительно на контенте (помните, это будет работать только при наличии достаточного количества контента для прокрутки).

Окончательная структура должна выглядеть так:

<header class = "mdl-layout__header mdl-layout__header - waterfall"> <div class = "mdl-layout__header-row"> <span class = "mdl-layout__title"> Простая схема портфолио </ span> <div class = " mdl-layout-spacer "> </ div> </ div> <div class =" mdl-layout__header-row "> <nav class =" mdl-navigation "> <a class =" mdl-navigation__link "href =" # "> Портфолио </a> <a class="mdl-navigation__link" href="#"> Блог </a> <a class="mdl-navigation__link" href="#"> О </a> <классе = "mdl-navigation__link" href = "#"> Контакт </a> </ nav> </ div> </ header>

Компонент карты

Пример макета приложения с открытым навигационным блоком, а также схема поперечного сечения высоты его компонентов вдоль оси z

В этом примере на странице портфолио будут представлены все работы по дизайну с использованием карт MDL. Компонент карты представляет собой виртуальный лист бумаги, содержащий текст, изображения и ссылки.

Сетка по умолчанию для MDL - три карты подряд для настольного компьютера, две для планшета и одна полноформатная для мобильного телефона. Если это та сетка, которую вы ищете, вам не нужно добавлять какие-либо пронумерованные классы mdl-cell - COLUMNS-col. Мы даже можем добавить эти классы ячеек столбцов непосредственно на карточки без отдельного контейнера <div>.

Чтобы добавить тень для карты, используйте mdl-shadow - 2dp class. Число дп в классе варьируется от 2 до 24, и оно контролирует глубину тени.

<div class = "mdl-cell mdl-card mdl-shadow - 4dp"> <div class = "mdl-card__title"> <h2 class = "mdl-card__title-text"> Заголовок примера </ h2> </ div > <div class = "mdl-card__media"> <img src = "../ images / photo.jpg" border = "0" alt = ""> </ div> <div class = "mdl-card__supporting-text" > Текст </ div> <div class = "mdl-card__actions mdl-card - border"> <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect"> Читать дальше </a> </ div> </ div>

Чтобы добавить максимальную ширину в сетку, вам нужно включить еще несколько пользовательских CSS. Карты являются адаптивными по умолчанию, поэтому вы можете добавить класс в родительскую сетку, и они будут настраиваться автоматически.

.portfolio-max-width {max-width: 900px; наценка: авто; }

Отдельные страницы

Вложенные сетки позволяют нам дополнительно настраивать макет для более типографских сайтов.

Для отдельных страниц портфолио вы можете использовать тот же компонент карты, что и раньше, с ячейками полной ширины. В приведенном ниже коде есть дополнительная сетка для копии и изображений, чтобы разбить каждый раздел, и вспомогательный класс без отступов для удаления нежелательного пространства.

<div class = "mdl-cell mdl-cell - 12-элементная mdl-карта mdl-shadow - 4dp"> <! - заголовок, фотография и подпись -> <div class = "mdl-grid портфолио-копия "> <h3 class =" mdl-cell mdl-cell - 12-столбец mdl-типографии - заголовок "> Введение </ h3> <div class =" mdl-cell mdl-cell - 6-столбец mdl-card__supporting -text no-padding "> <p> Text </ p> </ div> <div class =" mdl-cell mdl-cell - 6-col "> <img src =" PHOTO "border =" 0 "alt = ""> </ div> </ div> </ div>

Чтобы добавить кнопки социальных сетей к каждому сообщению, используйте компонент всплывающей подсказки. Идентификаторы должны быть уникальными, так как они ссылаются на контейнер для каждой подсказки.

<div id = "tt1" class = "icon material-icons"> share </ div> <div class = "mdl-tooltip" for = "tt1"> Поделитесь своим контентом <br> через социальные сети </ div>

Последняя страница является контактной формой. Давайте посмотрим на компонент текстового поля, который по сути является расширенной версией <input type = "text"> и <input type = "textarea">. Есть несколько переходов, которые вы можете применить к текстовому полю (например, расширение ввода при нажатии кнопки). Вы также можете добавить атрибут и значение шаблона в <input> и соответствующее сообщение об ошибке в <span>.

<div class = "mdl-textfield mdl-js-textfield mdl-textfield - плавающая метка"> <input class = "mdl-textfield__input" pattern = "[AZ, az,] *" type = "text" id = "Name"> <label class = "mdl-textfield__label" for = "Name"> Name ... </ label> <span class = "mdl-textfield__error"> Только буквы и пробелы </ span> </ div>

Последний компонент - кнопка для формы. Есть много вариантов этого компонента, в том числе поднятые, значок и плоские кнопки. Здесь у нас есть простая поднятая кнопка отправки, которая показывает волновой эффект при нажатии. Различные классы указывают на эффекты, прикрепленные к кнопке.

<button class = "mdl-button mdl-js-button mdl-button - поднятый mdl-js-эффект ряби mdl-button - цветной" type = "submit"> Submit </ button>

ПЛАВНИК

Теперь, когда ваш макет готов, вы можете начать добавлять к нему определенные элементы дизайна. Кроме того, вы можете сначала набросать новый макет и попытаться воссоздать его, используя сетку. На сайте MDL есть множество шаблонов, на которые вы можете ссылаться. Есть много служебных классов на getmdl.io веб-сайт для каждого компонента, поэтому сначала проверьте там, прежде чем начать писать свой собственный CSS. Теперь приступайте к проектированию

Автор создал эксклюзивную заставку для этого урока:

Эта статья первоначально появилась в выпуске 277 сетевого журнала; подпишитесь здесь ,

Статьи по Теме:

Com/css?
Com/icon?