前提准备:

  构建好一个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. eclipse使用maven tomcat插件部署无法关联源代码

    一. 安装sourcelookup插件: 二. 在source lookup path里加入源码: 2.1) 加入项目源码或整个工作空间的源码(不加上连自己的代码都无法查看,默认是不加上的) 2.2) ...

  2. CSS浮动(Float)

    定义 浮动会使元素向左或向右移动,其周围的元素也会重新排列: 浮动直到它的外边缘碰到包含框或者另一个浮动框才停止: 浮动之后的元素将围绕它,浮动之前的元素不变: 由于浮动框不在文档的普通流中,所以文档 ...

  3. 基于python3.x,使用Tornado中的torndb模块操作数据库

    目前Tornado中的torndb模块是不支持python3.x,所以需要修改部分torndb源码即可正常使用 1.开发环境介绍 操作系统:win8(64位),python版本:python3.6(3 ...

  4. 圆形border渐变加载

    自己遇到的一个需求,圆形的border加载.初听大家一定认为很简单,确实很简单,但是突然又加了一个需求,就是border的颜色要进行渐变,用了很多方法,可以实现渐变,直接的一个css属性是border ...

  5. C#截取当前活动窗体的图片

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. DbContext 和ObjectContext

    近日学习新知识,用到CallContext数据槽,一直使用ObjectContext 但同时又在学习EF CodeFirst,上下文定义使用的 DbContext 这时问题来了,如何把DbContex ...

  7. 【分享】jQuery无插件实现 鼠标拖动图片切换 功能

    前言 我就想随便叨逼叨几句,爱看就看几句,不爱看就直接跳过看正文就好啦~ 这个方法是仿写页面时我自己研究出来,可能有比我更简单的方法. 但我不管,因为我没查我不知道,我就觉得我的最好啦,耶耶耶~ 效果 ...

  8. 【转】MYSQL 使用SQLyog导入遇到问题解决

    原文地址:http://blog.163.com/o5655@126/blog/static/1667428342010910112510738/  昨天公司想要将一个数据库的数据导出再导入到另外一个 ...

  9. [C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的工具下载地址为: https://github.com/cnxy/dnSpy/arc ...

  10. TIJ学习总结(1)- Java基础语法

    TIJ(Thinking in Java)作为Java学习书籍里的"圣经",之前花两个月系统的捋了一遍,很多东西有种豁然开朗的感觉,入门之后读一遍TIJ,相信会有很多意外收获哦- ...