diff --git a/src/components.js b/src/components.js
index 8f5ce256fd..17e9af0c5c 100644
--- a/src/components.js
+++ b/src/components.js
@@ -7,6 +7,7 @@ export * from 'ionic2/components/checkbox/checkbox'
export * from 'ionic2/components/content/content'
export * from 'ionic2/components/icon/icon'
export * from 'ionic2/components/item/item'
+export * from 'ionic2/components/layout/layout'
export * from 'ionic2/components/list/list'
export * from 'ionic2/components/nav-pane/nav-pane'
export * from 'ionic2/components/nav-viewport/nav-viewport'
diff --git a/src/components/layout/layout.js b/src/components/layout/layout.js
new file mode 100644
index 0000000000..00f43c8cd3
--- /dev/null
+++ b/src/components/layout/layout.js
@@ -0,0 +1,53 @@
+import {NgElement, Component, Template, Parent} from 'angular2/angular2'
+
+
+@Component({
+ selector: 'layout,[layout]'
+})
+@Template({
+ inline: `
+
+
+ `
+})
+export class Layout {
+ constructor(
+ @NgElement() ngElement:NgElement
+ ) {
+ this.domElement = ngElement.domElement
+ this.eqEle = this.domElement.lastElementChild
+
+ window.requestAnimationFrame(() => {
+ this.initLayout()
+ })
+ }
+
+ initLayout() {
+ this.mqs = {}
+
+
+ for (let x = 0; x < this.domElement.attributes.length; x++) {
+ let attr = this.domElement.attributes[x]
+ let val = attr.nodeValue
+ let mqClassname = attr.nodeName
+
+ if (val.indexOf('(') > -1 && val.indexOf(')') > -1) {
+ let mql = this.eqEle.contentDocument.defaultView.matchMedia(val)
+
+ if (mql.media !== 'not all') {
+ this.mqs[mql.media] = (mql) => {
+ console.log(mql.media, mql.matches, mqClassname)
+ window.requestAnimationFrame(() => {
+ this.domElement.classList[mql.matches ? 'add' : 'remove'](mqClassname)
+ })
+ }
+
+ this.mqs[mql.media](mql)
+ mql.addListener(this.mqs[mql.media])
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/src/components/layout/layout.scss b/src/components/layout/layout.scss
new file mode 100644
index 0000000000..c257521054
--- /dev/null
+++ b/src/components/layout/layout.scss
@@ -0,0 +1,58 @@
+
+layout,
+[layout] {
+ position: relative;
+ @include flex-display();
+}
+
+[flex] {
+ flex: 1;
+}
+
+.ele-qry {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 0;
+ padding: 0;
+ margin: 0;
+ border: none;
+ visibility: hidden;
+ pointer-events: none;
+ z-index: -99;
+}
+
+
+@mixin element-query($mq) {
+ $mq: "'" + $mq + "'";
+
+ $attr: str-replace($mq, ':', '-');
+ $attr: str-replace($attr, ' ', '-');
+ $attr: str-replace($attr, '--', '-');
+ $attr: str-replace($attr, '(', '');
+ $attr: str-replace($attr, ')', '');
+
+ &.#{$attr} {
+ @content;
+ }
+
+ .ele-qry {
+ font-family: $mq;
+ }
+
+}
+
+/*
+div {
+
+ @include element-query( (min-width: 300px) ) {
+ background: blue;
+ };
+
+ @include element-query( (min-width: 400px) And (max-width: 800px) ) {
+ background: green;
+ };
+
+}
+*/
diff --git a/src/components/layout/test/basic/main.html b/src/components/layout/test/basic/main.html
new file mode 100644
index 0000000000..cf88977dbd
--- /dev/null
+++ b/src/components/layout/test/basic/main.html
@@ -0,0 +1,15 @@
+
+
+
+ A
+
+ B
+
+ C
+
+ D
+
+
diff --git a/src/components/layout/test/basic/main.js b/src/components/layout/test/basic/main.js
new file mode 100644
index 0000000000..784b99381f
--- /dev/null
+++ b/src/components/layout/test/basic/main.js
@@ -0,0 +1,19 @@
+import {bootstrap} from 'angular2/core';
+import {Component, Template} from 'angular2/angular2';
+import {View} from 'ionic2/components/view/view';
+import {Content} from 'ionic2/components/content/content';
+import {Layout} from 'ionic2/components/layout/layout';
+
+
+@Component({ selector: '[ion-app]' })
+@Template({
+ url: 'main.html',
+ directives: [View, Content, Layout]
+})
+class IonicApp {
+ constructor() {
+ console.log('IonicApp Start')
+ }
+}
+
+bootstrap(IonicApp)
diff --git a/src/components/tabs/extensions/material.scss b/src/components/tabs/extensions/material.scss
index 0bb26f4081..7b76da9ed2 100644
--- a/src/components/tabs/extensions/material.scss
+++ b/src/components/tabs/extensions/material.scss
@@ -2,7 +2,7 @@
// Material Design Toolbar
// --------------------------------------------------
-$tab-bar-material-min-height: 40px !default;
+$tab-bar-material-min-height: 10px !default;
$tab-bar-material-item-padding: 4px 10px !default;
$tab-bar-material-active-border-width: 3px !default;
$tab-bar-material-active-border-color: red !default;
diff --git a/src/ionic.scss b/src/ionic.scss
index d5ff635521..79087a76b4 100644
--- a/src/ionic.scss
+++ b/src/ionic.scss
@@ -34,6 +34,7 @@
"components/checkbox/checkbox",
"components/content/content",
"components/item/item",
+ "components/layout/layout",
"components/list/list",
"components/modal/modal",
"components/nav-pane/nav-pane",