Responsive Web Design

motive

~60%

last month in the uk...

OF THE USERS WHO OWN A LAPTOP

ALSO OWN A MOBILE DEVICE

~45%

last month in the uk...

OF THE USERS only OWN A LAPTOP

~15%

last month in the uk...

OF THE USERS only OWN

A mobile device

The web is not fixed width

keep your layout fluid

responsive web design mantra

target/context = %

fixed-width

fluid

.span-1 {
    width: 90px;
}
.span-1 {
    width: ?? %;
}

300px wide grid

fixed-width

fluid

.span-1 {
    width: 90px;
}
.span-1 {
    width: 30%;
}

target / context

90 / 300 = 0.3

So, is it recommended to use percentages?

other fluid units

em - relative to the element font-size

rem - relative to the root element                   font-size

vh - Viewport height (out of 100)

vw - Viewport width (out of 100)

vmin - Viewport's smallest resolution             (out of 100)

vmax - Viewport's largest resolution              (out of 100)

The all-famous grid system

The easy way - bootstrap

is bootstrap responsive?

well kind of

just make your own custom grid system

@column-width: 60;
@gutter-width: 20;
@columns: 12;
@total-width: 100%;

header { .column(12); }
article { .column(12); }
aside { .column(12); }

@media (min-width: 38em) {
    article { .column(9); }
    aside { .column(3); }
}

Semantic Grid System

flexible content

flexible images?

flexible videos?

media queries

<link media="(min-width: 30em)" ... >

<link media="screen and (min-width: 30em)" ... >




@media (min-width: 30em) { ... }

@media screen and (min-width: 30em) { ... }

how to

media types

most used ones:

- all, screen, print

but there are more:

- braille, embossed, speech    handheld, projection, tv, tty

media features

most used ones:

- width(min/max), height, orientation

but there are more:

- device-width, device-height, aspect-ratio, color, color-index, monochrome, resolution, scan, grid

how to approach?

additive

/* Additive, also know as small resolution first */

/* Smallest resolution styles get in here, outside the @media tags */

@media (min-width: 28em) {
    /* styles for 28 em or higher in here (around the width of a large smartphone/tablet) */
}

@media (min-width: 48em) {
    /* styles for 48 em or higher in here (around the width of a laptop (768px equivalent) */
}

subtractive

/* Subtractive, also known as large resolution first */

/* Largest resolution styles get in here, outside the @media tags */


@media (max-width: 48em) {
    /* styles for 48 em or lower in here (around the width of a laptop (768px equivalent) */
}

@media (max-width: 28em) {
    /* styles for 28 em or lower in here (around the width of a large smartphone/tablet) */
}

pros and cons?

large resolution first

small resolution first

easy support for old IE

small devices load all assets

more logical (build up vs tear down)

old ie is tricky

other considerations

touch target area

other considerations

hover states

contrast

readability

applying rwd styles

applying rwd styles

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="styles/base.css">
    <link rel="stylesheet" media="not print" href="styles/mq.css">

</head>
    

it all starts with the

meta viewport tag 

patterns

responsive navs

responsive images

off-canvas patterns

Thanks for participating!

Responsive Web Design

By alexgrigi

Responsive Web Design

  • 573