Вернуться к планировщику HTML

Для тех, кто впервые заходит в мой блог: мы создаем онлайн-планировщик, похожий на Google Keep. Более подробно вы можете увидеть здесь: Серия руководств

Сегодня мы поговорим о HTML и попробуем сделать HTML-дизайн компонента планировщика максимально похожим на исходный дизайн в соответствии с файлом фотошопа. Мы будем делать следующие вещи:

  1. HTML-дизайн для заголовка приложения
  2. HTML-дизайн для контейнера планировщика
  3. HTML-дизайн для заголовка планировщика
  4. HTML-дизайн нижнего колонтитула планировщика
  5. Подсказки в нижнем колонтитуле планировщика

1. HTML-дизайн для заголовка приложения

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

Это было из-за темы материала, который мы использовали в приложении. Я пытался найти много информации, чтобы создать пользовательскую тему, но к моменту написания статьи я не смог найти информацию о том, как анализировать файл SCSS с помощью SystemJS. Итак, мы написали хак на данный момент. Для этого откройте файл styles.css и добавьте следующие классы:

.md-sidenav-container {
  background: transparent !important;
}
md-toolbar.md-primary {
  background: #FFBB00 !important;
  color: #142031 !important;
}
.app-toolbar-menu {
  color: #142031 !important;
}

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

По возможности избегайте использования «!important». Поскольку это было необходимо, как на этот раз, так что мы используем его.

2. HTML-дизайн для контейнера планировщика

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

Откройте файл styles.css и добавьте/обновите следующий код:

/* Give a default font and background colour to html and body */
html, body {
  margin: 0px;
  height: 100%;
  width: 100%;
  background-color: #4A4A4A;
  font-family: 'Roboto', sans-serif;
}
/* Equivalent to md-card in material design */
.sd-card {
  box-sizing: border-box;
  flex-direction: column;
  margin: 8px;
  box-shadow: 0 1px 3px 0 rgba(0,0,0,.2), 0 1px 1px 0 rgba(0,0,0,.14), 0 2px 1px -1px rgba(0,0,0,.12);
  -webkit-box-orient: vertical;
  -webkit-flex-direction: column;
  display: flex;
  -webkit-box-direction: normal;
  color: rgba(0,0,0,0.87);
  background-color: #FAFAFA;
  border-radius: 2px;
  border: 1px solid #979797;
}
/* Add some settings for Goal Container */
.goal-container {
  padding: 32px;
  overflow: scroll;
}

Теперь откройте файл planner.component.html и добавьте

3. HTML-дизайн заголовка планировщика

Так как мы уже создали компонент для Planner Header. Поэтому просто добавьте следующий код в файл planner.component.html. Это вызовет шаблон заголовка планировщика.

<sd-planner-header>Planner Header</sd-planner-header>

Теперь в файле planner.header.component.html добавьте следующий код:

<div class="sd-planner-header">
    <h1>Planner</h1>
    <span class="subtitle">Monday, 9th January 2017</span>
</div>

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

Структура planner.header.component.ts будет следующей:

import { Component } from '@angular/core';
@Component({
    moduleId: module.id,
    selector: 'sd-planner-header',
    styleUrls: ['planner.header.component.css'],
    templateUrl: 'planner.header.component.html'
})
export class PlannerHeaderComponent {
}

и обновленный модуль планировщика будет: -

import { NgModule } from '@angular/core';
import { PlannerComponent } from './planner.component';
import { PlannerHeaderComponent } from './header/planner.header.component';
import { SDCommonModule } from './../common/common.module';
import { MaterialModule } from '@angular/material';
@NgModule({
    imports: [ SDCommonModule, MaterialModule.forRoot() ],
    declarations: [ PlannerComponent, PlannerHeaderComponent ],
    exports: [ PlannerComponent ]
})
export class PlannerModule { }

Теперь создайте файл CSS в папке заголовка: -

В файле planner.header.component.css добавьте следующий код. Он будет содержать руководство по стилю только для компонента заголовка планировщика и не будет использоваться совместно с другим компонентом. Довольно круто!

.sd-planner-header {
    max-height: 70px;
    background-color: #D8D8D8;
    border-top-left-radius: 2px;
    border-top-right-radius: 2px;
    padding: 16px;
}
.sd-planner-header > h1 {
    color: black !important;
    font-size: 24px;
    font-weight: normal;
    margin: 0px;
}
.sd-planner-header > .subtitle {
    font-size: 18px;
    color: #4A4A4A;
    font-weight: 300;
}

Теперь давайте создадим HTML-код по умолчанию для индикатора выполнения. Мы создадим его как компонент в ближайшем будущем. Откройте файл planner.component.html и добавьте следующий код после объявления заголовка.

<div class="progress"> </div>

Теперь руководство по стилю для индикатора выполнения. Откройте файл planner.component.css и добавьте в него следующий код.

.sd-card > .progress {
    height: 4px;
    background: #7ED321;
    width: 50%;
}

4. HTML-дизайн нижнего колонтитула Planner

Круто, теперь давайте добавим немного дизайна для нижнего колонтитула. Цель должна быть ниже: -

Давайте снова откроем файл planner.component.html и добавим в него следующий код. После планировщик тела.

<div class="planner-footer" sd-layout="row">
        <div sd-layout="row">
            <div class="app-icon-button">
                <i class="material-icons">replay_30</i>
            </div>
            <div class="app-icon-button">
                <i class="material-icons">skip_previous</i>
            </div>
            <div class="app-icon-button">
                <i class="material-icons">navigate_before</i>
            </div>
        </div>
        <div class="app-icon-button">
            <i class="material-icons">print</i>
        </div>
        <div sd-layout="row">
            <div class="app-icon-button">
                <i class="material-icons">navigate_next</i>
            </div>
            <div class="app-icon-button">
                <i class="material-icons">skip_next</i>
            </div>
            <div class="app-icon-button">
                <i class="material-icons">forward_30</i>
            </div>
        </div>
    </div>

Добавьте к нему немного стиля css. Откройте файл planner.component.css и добавьте в него следующий код.

.planner-footer {
    background: #D8D8D8;
    padding: 16px;
    text-align: center;
    justify-content: space-between;
    position: relative;
    bottom: 0px;
}
.planner-footer > div {
    text-align: center;
}
.planner-footer > div > .material-icons, .planner-footer > div > div > .material-icons {
    color: #757575;
    font-size: 32px;
}
.planner-footer > div > .material-icons:hover, .planner-footer > div > div > .material-icons:hover {
    color: #4A4A4A;
}

5. Добавьте всплывающие подсказки в нижний колонтитул планировщика

Теперь давайте добавим всплывающую подсказку в нижний колонтитул планировщика для каждой иконки. На данный момент это немного повторяющийся код. Посмотрим, сможем ли мы в будущем свести его к минимуму. Обновите код нижнего колонтитула следующим образом:

<div class="planner-footer" sd-layout="row">
        <div sd-layout="row">
            <div class="app-icon-button" md-tooltip="Previous Month" mdTooltipPosition="above" >
                <i class="material-icons">replay_30</i>
            </div>
            <div class="app-icon-button" md-tooltip="Previous Week" mdTooltipPosition="above">
                <i class="material-icons">skip_previous</i>
            </div>
            <div class="app-icon-button" md-tooltip="Yesterday" mdTooltipPosition="above">
                <i class="material-icons">navigate_before</i>
            </div>
        </div>
        <div class="app-icon-button" md-tooltip="Print Planner" mdTooltipPosition="above">
            <i class="material-icons">print</i>
        </div>
        <div sd-layout="row">
            <div class="app-icon-button" md-tooltip="Tomorrow" mdTooltipPosition="above">
                <i class="material-icons">navigate_next</i>
            </div>
            <div class="app-icon-button" md-tooltip="Next Week" mdTooltipPosition="above">
                <i class="material-icons">skip_next</i>
            </div>
            <div class="app-icon-button" md-tooltip="Next Month" mdTooltipPosition="above">
                <i class="material-icons">forward_30</i>
            </div>
        </div>
    </div>

Ну вот и все на сегодня. Вы можете скачать код с Github и посмотреть его более подробно.

Скачать Код дня 6:



Ссылки на путешествие: