前提准备:

  构建好一个Angular2应用

  熟悉CSS的flex布局风格

1 利用flex进行布局

  1.1 创建三个组件

    app-header  app-main  app-footer

  1.2 在主组件中编写大体结构代码

<div class="site">
<header>
<app-header></app-header> <!-- 页眉组件 -->
</header>
<main>
<app-main></app-main> <!-- 内容组件 -->
</main>
<footer>
<app-footer></app-footer> <!-- 页脚组件 -->
</footer>
</div>

  1.3 在全局样式中编写代码实现flex风格布局

/* You can add global styles to this file, and also import other style files */

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; // 导入material的内建主体

html, body, app-root, md-sidenav-container, .site {
width: 100%;
height: 100%;
margin: 0;
} .site {
display: flex;
flex-direction: column;
} header {
background-color: skyblue; } main {
background-color: grey;
flex: 1;
} footer {
background-color: skyblue;
}

  1.3 布局效果如下

    

2 利用MdSidenavModule快速构建侧边栏

  2.1 下载相关的依赖包

    cnpm i --save @angular/material@2.0.0-beta.7

    技巧01:使用 materil 时需要将material的主题引入到全局样式中,引入全局样式有两种方式

      方式一:在 styles.scss 中通过 @import 引入,例如     

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';

      方式二:在 .angular-cli.json 文件中为styles添加元素

        参考博文:点击前往

  2.2 在主模块中引入MdSidenavModule模块

    import { MdSidenavModule } from '@angular/material';

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { MdSidenavModule } from '@angular/material'; import { AppComponent } from './app.component';
import { TestComponent } from './test/test.component';
import { HeaderComponent } from './frame/header/header.component';
import { MainComponent } from './frame/main/main.component';
import { FooterComponent } from './frame/footer/footer.component';
import { SidebarComponent } from './frame/sidebar/sidebar.component'; @NgModule({
declarations: [
AppComponent,
TestComponent,
HeaderComponent,
MainComponent,
FooterComponent,
SidebarComponent
],
imports: [
BrowserModule,
MdSidenavModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

主模块

  2.3 在主组件中利用MdSidenavModule提供的组件进行侧边栏的构建 

<md-sidenav-container>
<md-sidenav #sidenav>
<app-sidebar></app-sidebar>
</md-sidenav> <div class="site">
<header>
<app-header></app-header>
</header>
<main>
<button (click)="sidenav.open()">点击划出</button>
<app-main></app-main>
</main>
<footer>
<app-footer></app-footer>
</footer>
</div>
</md-sidenav-container>

  2.4 具体效果如下

    

    点击按钮后划出侧边栏的效果如下:

    

4 md-sidenav组件属性详解

  4.1 mode属性:设置侧边栏弹出的效果

    over -> 覆盖(默认)

    side -> 推挤

    push -> 覆盖 + 推挤

  

  效果如下:

  

  4.2 align属性:设置侧边栏的位置

    start -> 左边(默认)

    end -> 右边

    

    效果如下:

    

  4.3 注意:material最多只支持两个侧边栏

<md-sidenav-container>
<md-sidenav #sidenav1 mode=push align=start> <!-- 左边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<md-sidenav #sidenav2 mode=push align=end> <!-- 右边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<div class="site">
<header>
<app-header></app-header> <!-- 页眉组件 -->
</header>
<main>
<button (click)=sidenav1.open()>点击划出左侧边栏</button>
<button (click)=sidenav2.open()>点击划出右侧边栏</button>
<app-main></app-main> <!-- 内容组件 -->
</main>
<footer>
<app-footer></app-footer> <!-- 页脚组件 -->
</footer>
</div>
</md-sidenav-container>

  4.4 相关方法

    open -> 打开侧边栏

    toggle -> 打开、关闭

<md-sidenav-container>
<md-sidenav #sidenav1 mode=side align=start> <!-- 左边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<md-sidenav #sidenav2 mode=side align=end> <!-- 右边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<div class="site">
<header>
<app-header></app-header> <!-- 页眉组件 -->
</header>
<main>
<button (click)=sidenav1.toggle()>toggle划出关闭左侧边栏</button>
<button (click)=sidenav2.open()>open划出右侧边栏</button>
<app-main></app-main> <!-- 内容组件 -->
</main>
<footer>
<app-footer></app-footer> <!-- 页脚组件 -->
</footer>
</div>
</md-sidenav-container>

5 利用MdToolbarModule对页眉和页脚进行重构

  5.1 清除主组件中对页眉和页脚的样式

    

/* You can add global styles to this file, and also import other style files */

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; // 导入material的内建主体

html, body, app-root, md-sidenav-container, .site {
width: 100%;
height: 100%;
margin: 0;
} .site {
display: flex;
flex-direction: column;
} header {
// background-color: skyblue; } main {
background-color: grey;
flex: 1;
} footer {
// background-color: skyblue;
} .fill-remaining-space { // flex项目自动填充多余空间
flex: 1 1 auto;
}

  5.2 在需要用到的模块中导入MdToolbarModule模块

    

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { MdSidenavModule, MdToolbarModule } from '@angular/material'; import { AppComponent } from './app.component';
import { TestComponent } from './test/test.component';
import { HeaderComponent } from './frame/header/header.component';
import { MainComponent } from './frame/main/main.component';
import { FooterComponent } from './frame/footer/footer.component';
import { SidebarComponent } from './frame/sidebar/sidebar.component'; @NgModule({
declarations: [
AppComponent,
TestComponent,
HeaderComponent,
MainComponent,
FooterComponent,
SidebarComponent
],
imports: [
BrowserModule,
MdSidenavModule,
MdToolbarModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

  5.3 利用md-toolbar组件重构页眉和页脚组件中的内容

    md-toolbar组件是一个flex容器,可以直接使用flex容器相关的属性

    技巧01:md-toolbar会自动在其内部添加一个div元素,这个div元素才是一个flex容器,从源码中可以看出

      

    md-toolbar的color属性:设置白md-toolbar的颜色

      primary -> 主色

      accent -> 副色

      warn -> 警告色

      技巧:主色和副色是在主题中设置的

      material主题色显示:点击前往

<md-toolbar color=primary>
<button (click)="openSidebar()">菜单</button>
&nbsp;
<span>企业协作平台</span>
</md-toolbar>

重构页眉组件

<md-toolbar color=primary>
<span class="fill-remaining-space"></span>
<span>&copy; 庠序科技</span>
<span class="fill-remaining-space"></span>
</md-toolbar>

重构页脚组件

  效果图如下:

    

  5.4 代码解释01

<md-toolbar color=primary>
<span class="fill-remaining-space"></span>
<span>&copy; 庠序科技</span>
<span class="fill-remaining-space"></span>
</md-toolbar>

  md-toolbar中的三个span元素都是flex项目,其中第一个和第三个span元素由于使用了fill-remaining-space类,所以他们两个元素会将剩余的空间进行平均分配

  fill-remaining-space对应的代码如下:    

.fill-remaining-space { // flex项目自动填充多余空间
flex: 1 1 auto;
}

  flex布局相关:点击前往

  flex布局实战:点击前往

  5.5 代码解释02

<md-toolbar color=primary>
<span class="fill-remaining-space"></span>
<span>&copy; 庠序科技</span>
<span class="fill-remaining-space"></span>
<md-toolbar-row>
<span class="fill-remaining-space"></span>
<span>重庆市沙坪坝区三峡广场</span>
<span class="fill-remaining-space"></span>
</md-toolbar-row>
</md-toolbar>

  md-toolbar可以支持多行,其中每个md-toolbar-row就是单独的一行,而且md-toolbar-row也是一个flex容器用法和md-toolbar相同

  具体效果如下:

    

  5.6 应用代码完善

    5.6.1 为页眉组件添加方法使得在点击按钮时会触发相应的处理逻辑

      

import { Component, OnInit, Output, EventEmitter } from '@angular/core';

@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
@Output()
toggle = new EventEmitter<void>(); constructor() { } ngOnInit() {
} openSidebar() {
this.toggle.emit();
} }

    5.6.2 在使用页眉组件的父组件中编写应用页眉组件

      

<md-sidenav-container>
<md-sidenav #sidenav1 mode=side align=start> <!-- 左边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<md-sidenav #sidenav2 mode=push align=end> <!-- 右边的侧边栏 -->
<app-sidebar></app-sidebar>
</md-sidenav>
<div class="site">
<header>
<app-header (toggle)="sidenav1.toggle()"></app-header> <!-- 页眉组件 -->
</header>
<main>
<!-- <button (click)=sidenav1.toggle()>toggle划出关闭左侧边栏</button> -->
<button (click)=sidenav2.open()>open划出右侧边栏</button>
<app-main></app-main> <!-- 内容组件 -->
</main>
<footer>
<app-footer></app-footer> <!-- 页脚组件 -->
</footer>
</div>
</md-sidenav-container>

    效果如下:

      

Material使用01 侧边栏MdSidenavModule、工具栏MdTollbarModule的更多相关文章

  1. 将项目添加到Finder侧边栏和工具栏

    转: http://www.cnblogs.com/wormday/archive/2011/05/08/2039468.html 1.在侧边栏和工具栏右键,有相应的设置选项 2.可以将项目拖到侧边栏 ...

  2. Material使用03 MdCardModule模块、MdInputModule模块

    需求:先需要增加一个登录模块 1 创建登录模块 ng g m testLogin 1.1 将共享模块导入到登录模块中 import { NgModule } from '@angular/core'; ...

  3. 20201203-6 设置excel样式【】

    1-1 1 import os 2 from openpyxl import load_workbook 3 from openpyxl.styles import PatternFill, Alig ...

  4. 2015最流行的Android组件、工具、框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

  5. 教你如何---构建良好的windows程序(初学者必看)

    一使用菜单栏和工具栏 1.菜单栏和工具栏有什么作用和优点: 通过菜单栏把应用程序的功能进行分组,能够方便用户查找和使用,下图所示的菜单栏包含的每一项都是顶层菜单项,顶层菜单项下的选项称为”子菜单”或” ...

  6. 2015年十大热门Android开源新项目

    2015年十大热门Android开源新项目 2015 即将结束,又到了大家喜闻乐见的年终盘点时刻啦,今天给大家盘点一下 2015 年 Android 开发领域新出现的 10 大热门开源项目.数据来自于 ...

  7. Niagara workbench 介绍文档---翻译

    一. 发现在建立station的时候存在一些问题,所以对技术文档部分做一个详细的了解,在这之前对出现的问题总结一下 1.  在 Windows操作系统中Application Direction中可以 ...

  8. 【小超_Android】2015最流行的android组件、工具、框架大全(兴许)

    2015.07.07 FlyRefresh 创意Replace的Android实现,非常cool. fab-toolbar Material Design风格的FAB工具栏效果 MaterialVie ...

  9. idea下maven项目增加依赖项目里面没有添加相关依赖jar

    困扰了一晚上的问题,一般在pom.xml中增加了相关依赖,idea会自动将依赖的Jar包增加到maven项目中,但是在pom.xml中增加了依赖,项目中并没有 偶然打开idea的侧边栏maven工具栏 ...

随机推荐

  1. Elasticsearch集群调优

    系统调优 禁用swap 使用swapoff命令可以暂时关闭swap.永久关闭需要编辑/etc/fstab,注释掉swap设备的挂载项. swapoff -a 如果完全关闭swap不可行,可以试着降低s ...

  2. 移动开发 meta元素

    meta标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务.   SEO优化: &l ...

  3. spring返回@ResponseBody报406

    HTTP Status 406 - type Status report message description The resource identified by this request is  ...

  4. 开源代码学习之Tinyhttpd

    想开始陆续研究一些感兴趣的开源代码于是先挑一个代码量短的来过渡一下,写这篇博客的目的是记录下自己学习的过程.Tinyhttpd算是一个微型的web服务器,浏览器与Web服务器之间的通信采用的是Http ...

  5. python+selenium安装

    1.下载Python 请到官网自行下载安装https://www.python.org/downloads/ 在安装的时候,注意一定要勾上这个选项,可以免去我们配置系统变量的麻烦,如果你忘了,没关系, ...

  6. 微信小程序入门(一)

    想必当你对官方文档了解地差不多的时候,一颗跃跃欲试的心就开始骚动了吧. 开发小程序之前的准备工作: 1).准备一个域名 2).准备一台云服务器 3).搭建小程序的后台,博主的小程序后台请求的的是自己写 ...

  7. gcc调试 学习1

    gdb进入调试 b 6 在第6行设置断点 d 2 删除num为2的断点 info b 查看断点 run 运行 n 执行到断点1 s 如果下一条是函数就进入函数 n 继续执行 print i  输出i的 ...

  8. Python小爬虫

                  网页解析器下载网址: http://www.crummy.com/software/BeautifulSoup/                               ...

  9. 【转】使用PowerDesigner的建模创建升级管理数据库

    使用PowerDesigner的建模创建升级管理数据库 PowerDesigner是一种著名的CASE建摸工具,最开始为数据库建模设计,即物理模型(Physical Data Model)用于生成数据 ...

  10. Winform界面中主从表编辑界面的快速处理

    在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随 ...