Advanced design layouts

Tap That JOB 2017

Andrei ANTAL

QUALITANCE

Advanced design layouts

Tap That JOB 2017

Contents

  • Web design history
  • Basics of layout
  • Flexbox
  • Discussion

Website layouts

Early days

Website layouts

Early days

Website layouts

Table based layouts

Website layouts

Table based layouts

Website layouts

Table based layouts - spacer gif

Website layouts

  • Flash-based design
  • CSS based design
  • D-HTML
  • HTL5 and CSS3

Layout basics

Basis of layout

The "display" property

  • Block
  • Inline
  • None
inline | block | flex | inline-block | inline-flex | inline-table | list-item | run-in | table | table-caption | table-column-group | table-header-group | table-footer-group | table-row-group | table-cell | table-column | table-row | none | initial | inherit

Basis of layout

#main {
  max-width: 600px;
  margin: 0 auto; 
}

Centering elements and max-width

Basis of layout

Box model

Basis of layout

div {
  width: 300px;
  height: 200px;
  padding: 15px;
  border: 5px solid gray;
  margin: 30px;
  box-sizing: content-box;
}

Box model

div {
  width: 300px;
  height: 200px;
  padding: 15px;
  border: 5px solid gray;
  margin: 30px;
  box-sizing: border-box;
}

Basis of layout

Positioning

  • static
  • relative
  • fixed
  • absolute

Basis of layout

Float

img {
  float: right;
  margin: 0 0 1em 1em;
}

Basis of layout

Clearfix

.clearfix {
  overflow: auto;
}

Basis of layout

Float layout

nav {
  float: left;
  width: 200px;
}
section {
  margin-left: 200px;
}

nav.clearfix

section

section

Basis of layout

Float layout

nav {
  float: left;
  width: 200px;
}
section {
  margin-left: 200px;
}

nav.clearfix

section

section

nav {
  float: left;
  width: 25%;
}
section {
  margin-left: 25%;
}

Basis of layout

Inline-block layout

nav

section

section

nav {
  display: inline-block;
  vertical-align: top;
  width: 25%;
}
.column {
  display: inline-block;
  vertical-align: top;
  width: 75%;
}

.column

Flexbox

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>
.container {
  display: flex;
}

Flexbox

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>
.container {
  display: flex;
  flex-direction: column; // row is the default
}

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>
.container {
  display: flex;
  flex-direction: row-reverse;
}

Flexbox

Flexbox

.item:nth-child(5) {
    order: -1;
}
.item:nth-child(2) {
    order: 1;
}

Flexbox

.item:nth-child(2) {
    order: 1;
}
.item:nth-child(4) {
    order: 1;
}

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>
.container {
  display: flex;
  justify-content: center;
}

Flexbox

<div class="container">
    <div class="item">Red</div>
    <div class="item">Orange</div>
    <div class="item">Yellow</div>
    <div class="item">Green</div>
    <div class="item">Blue</div>
</div>
.container {
  display: flex;
  justify-content: space-between;
}

Flexbox

.container {
    display: flex;
    height: 200px;
    /* align-items: stretch; */
}

Flexbox

Flexbox

.container {
    display: flex;
    height: 200px;
    align-items: flex-end;
}

.item:nth-child(3) {
    align-self: stretch;
}

Flexbox

.container {
    display: flex;
    height: 200px;
}

.item {
    margin: auto;
}

Flexbox

.container {
    display: flex;
}

.item:nth-child(1) {
    margin: auto;
}

.item:nth-child(2) {
    margin: auto;
}

Flexbox

.container {
    display: flex;
    justify-content: center;
      align-items: center;
}

Flexbox

.container {
    display: flex;
}

.item:nth-child(4) {
    flex-grow: 1;
}

Flexbox

.container {
    display: flex;
}

.item:nth-child(4) {
    flex-grow: 1;
}

.item:nth-child(5) {
    flex-grow: 2;
}

Flexbox

.container {
    display: flex;
}

.item:nth-child(4) {
    flex-grow: 1;
}

.item:nth-child(5) {
    flex-grow: 2;
}

Flexbox

.container {
    display: flex;
}
.item {
    flex-shrink: 0;
}
.item:nth-child(7) {
    flex-shrink: 1;
}

Flexbox

.container {
    display: flex;
}
.item {
    flex-basis: 60px;
}

Flexbox

.container {
    display: flex;
}
.item {
    flex-basis: 60px;
}
.item:nth-child(1) {
    flex-grow: 1;
}

Flexbox

.item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: auto;
}

/* equivalent to */

.item {
    flex: 1 1 auto;
}

Flexbox

Flexbox

.container {
    display: flex;
    flex-wrap: wrap;
}
.item {
    flex: 1 0 150px;
}

Flexbox

.container {
    display: flex;
    flex-wrap: wrap;
}
.item {
    flex: 1 0 150px;
}

Flexbox

Flexbox

Flexbox

Flexbox

Tap That Job Presentation #2 - Flexbox

By Andrei Antal

Tap That Job Presentation #2 - Flexbox

  • 1,628