Index

A

A List Apart website, 126

abbreviation (abbr) element, 57

accessibility, 1820, 239

accordion interfaces, 189190, 221

addEventListener method, 172173, 176

Adobe Typekit, 190191

ads, Wi-Fi, 159

Airbnb, 167

alert role, 85

Allsopp, John, 208, 236

alternate media, 148

alternative interactions, 148150

AlzForum, 82, 178, 180, 181, 186, 194195

analytics and testing, 239

anchor (a) element, 56, 58

Andreessen, Marc, 86n

Angular JavaScript, 13

any-hover value, 150

any-pointer and any-hover values, 150

Application Cache, 205

ARIA, 5960

clarifying interfaces with, 8385

describing states with, 180182

first rule of using, 84

potential issues with, 61

roles available in, 83, 84, 85

styles triggered with, 191192

tabbed interfaces and, 179

aria-controls attribute, 179

aria-describedby attribute, 179, 180

aria-labelledby attribute, 179

aria-selected attribute, 180181

article element, 72, 77

at-rules, 115116

attachEvent method, 172173

“Attack of the Zombie Copy” (Kissane), 28

attributes

class and id, 6366

data, 182185

audio element, 88

audit, design, 96

Autoprefixer, 137

B

back link, 117, 119, 120

background-color declaration, 111

bandwidth use, 19

Barebones software, 99

Berners-Lee, Tim, 12, 13, 18, 236

Block-Element-Modifier (BEM) methodology, 65n

blogs

planning for content on, 36

source order on, 8081

Boston Globe website, 127131, 193

Boulton, Mark, 35

Bowman, Doug, 53n

Bradley, Adam, 217

Brand, Zach, 37

breakpoints, 131132

browsers

fault tolerance of, 14, 8691

hiding content from, 177178

line mode, 45

native rendering by, 153154

button creation, 5760

button element, 58

C

Canon website, 187, 188

cascade in CSS, 104, 106

Cederholm, Dan, 238

Çelik, Tantek, 21n, 66, 239

Champion, Steve, 4

checklist of key concepts, 230235

Chimero, Frank, 228, 236

Chrome app, 89

Clark, Joe, 46n, 238

class attribute, HTML, 6366

class selector, CSS, 107, 108, 109n

click event, 198199

client-side storage, 201204

CMS (content management system), 3637

collapsed elements, 141

color declaration, 105

color selection

accessibility and, 19

CSS examples of, 105107, 110111

defensive design and, 137138

Comcast, 159, 164

comments, conditional, 177178

concert hall analogy, 127, 130

Conditional Comments, 177178

conditional logic, 168

consistency of design, 96

content, 2551

cost-benefit analysis of, 3943

crafting conversation with, 3135

designing meaningful, 2931

empty space vs., 4850

enhancing with markup, 5391

fake text vs., 30

generated, 143145

hiding, 139143

importance of, 21, 27

key concepts checklist on, 230231

leading the way with, 51

media used as, 3947

navigation vs., 7778, 80

performance related to, 42

planning for unknown, 3538

problem situations and, 3335

providing alternate forms of, 4447

questions on forms as, 4748

recommended reading on, 237

thinking about structured, 3738

visual design related to, 100103

writing for real people, 38

zombie copy vs., 2829

content management system (CMS), 3637

Contents Magazine, 7980, 117

continuum of experience, 20

conversation

guidelines for crafting, 3133

problem situations and, 3335

questions on forms as, 4748

user interactions based on, 29

cookies, 201202

copy

content equated with, 27

guidelines for crafting, 3132

zombie or robotic, 2829

cost-benefit analysis, 3943

crafting the conversation, 3135

“Crippling the Web” (Kadlec), 16

Crockford, Douglas, 156

CSS (Cascading Style Sheets), 104121

at-rules in, 115116

cascade in, 104, 106

fault tolerance and, 109116

feature detection for, 138139

hiding rule sets in, 112116

potential issues with, 61

progressive navigation example, 116121

property fallbacks in, 110111

proximity in, 104107

recommended reading on, 238

specificity in, 107109

CSS gradients, 134136

CSS preprocessors, 137

CSS Zen Garden, 112, 113

D

Dale, Tom, 166, 167

data attributes, 182185

datalist element, 90

dataset property, 184

data-title attribute, 143144

Davidson, Mike, 53n

declarative instruction, 182185

default styles, 152154

defensive design, 137139

defensive programming, 168175

delegating behavior, 170172

isolating DOM manipulation, 169170

testing for feature support, 172174

verifying JQuery library, 174175

delegating behavior, 170172

design, etymology of word, 29

See also visual design

desktop first approach, 124

devices

mobile first approach to, 124, 125

optimizing design for specific, 132133

See also mobile devices

dial-up modems, 223

display property, 140

div element, 58, 59, 215

document outline, 7277, 81

document.querySelector element, 176

DOM manipulation, 169170

download attribute, 88

Duckett, Jon, 238

E

embed element, 8687

embedded style sheets, 105, 106, 107

Ember FastBoot, 167

empty space, 4850

errors

CSS handling of, 109116

parsing, 109110, 112, 125, 135

types of JavaScript, 164

See also fault tolerance

event bubbling phase, 170171

event capturing phase, 170171

event delegation, 170172

experience vs. technology, 711

experimental features, 136

explicit sectioning, 72, 73, 76

F

Facebook

Open Graph protocol, 6970

photo-reporting tool, 2526

fake text, 30

Faulkner, Steve, 238, 239

fault tolerance, 14

CSS and, 109116

defensive design and, 137139

HTML and, 8691

JavaScript and, 168

feature detection

CSS-based, 138139

JavaScript, 172174

Feliz, Teylor, 239

Fenton, Nicole, 237

Fidelity website, 183, 184

fieldset element, 72

figcaption element, 108

The Filament Group, 193

filling space, 4850

Flash movies, 86, 87

flexible media, 122

flowcharts, 210, 211

fluid grids, 122

font stacks, 191

fonts, embedded, 190191

Forbes website, 49, 50

forks, program, 173

forms

client-side storage of, 204

conversational questions on, 4748

forward compatibility, 14

Friedman, Vitaly, 238

Frost, Brad, 14

future friendliness, 17

future-proof content, 1314

G

Gawker Media, 157158

generated content, 143145

getActiveMQ function, 218

getComputedStyle method, 218

Give Central website, 187, 188

Google

Maps development, 10

semantic markup used by, 56

Social Graph product, 67

structured data testing tool, 70

graceful degradation, 8, 11

gradients, CSS, 134136

Grigsby, Jason, 238

Guardian website, 41, 42, 213

H

Hagans, Andy, 239

Hawking, Stephen, 227

Hay, Stephanie, 31

Hay, Stephen, 95, 131, 237

heading levels, 73

Heilmann, Christian, 239

Henry, Shawn Lawton, 46n, 239

hiding content, 139143

recommended approach to, 142143

techniques to avoid for, 140141

techniques to use sparingly for, 141142

Hoh, Benjamin, 21

horizontal scrolling tabs, 187

Horton, Sarah, 239

HTML

class and id attributes, 6366

fault tolerance and, 14, 8691

future-proofing, 1314

heading levels, 73

JavaScript and, 82

microformats, 6668

recommended reading on, 238

semantic markup, 56, 57

See also markup

HTML5, 57

explicit sectioning, 72, 73, 76

first-class elements, 71

HTML5 Boilerplate, 174

human factors, 11

Hutchinson, Grant, 130

Hyatt, Dave, 134

hypermedia, 18

I

iA Writer, 12n

IBM Simon, 197

id attribute, HTML, 6366, 79

id selector, CSS, 107, 108

img element, 89, 214

indented elements, 141142

indexedDB, 10, 205

inline styles, 106107

input element, 58, 89

installable websites, 205206

interaction, 157207

adapting interfaces for, 185190

alternative methods of, 148150

applying styles for, 190192

building what you need for, 178180

Conditional Comments and, 177178

conversation as basis for, 29

declarative instruction and, 182185

defensive programming for, 168175

describing using ARIA states, 180182

designing a baseline for, 165168

enhancement requirements for, 175176

feature detection and, 172174, 175

key concepts checklist on, 234235

keyboard functions for, 195197

lazy loading and, 192195

network issues and, 201206

potential problems with, 160165

progressive enhancement and, 206207

recommended reading on, 238239

touchscreen functions for, 197201

voice-based, 225228

Interface Experience Maps. See Ix Maps

interface inventory, 96

interfaces

accordion, 189190, 221

adapting for screens, 185190

clarifying with ARIA, 8385

describing with ARIA states, 180182

tabbed, 8183, 178180, 220222

Internet Explorer (IE), 93, 125, 177178

invisible elements, 140

isomorphic JavaScript, 166167

Ix Maps, 210222

benefits of using, 212

lazy loading images example, 213220

tabbed interface example, 220222

J

Java applets, 7

JavaScript

avoiding on some browsers, 177178

data attributes accessed in, 184

establishing minimum requirements for, 175176

feature detection for, 172174, 175

HTML manipulated by, 82

isomorphic, 166167

Ix Maps and, 214, 215, 217220

jQuery library and, 158, 174175

lazy loading of, 193, 195, 216220

localStorage property, 202204

network issues and, 201204

noscript element, 163164

potential problems with, 61, 160165

programming defensively with, 168175

progressive enhancement and, 162165, 206207

recommended reading on, 238239

stories illustrating problems with, 157159

tabbed interfaces and, 8283, 178180, 220

tabindex juggling, 196197

Jehl, Scott, 237

Jing software, 96

jQuery library, 158, 174175

jQuery Validation script, 183

jump link, 116, 117

K

Kadlec, Tim, 16, 42, 237, 239

Kaminsky, Dan, 159

Keith, Jeremy, 52, 90, 217n, 236, 238, 239

key concepts checklist, 230235

keyboard interactions, 195197

Kinect interactions, 148

King, Liam, 30

Kissane, Erin, 28, 237

Klatt, Dennis, 227

Kloos, Egor, 112

Koch, Peter Paul, 239

Kratzenstein, Christian, 227

Krug, Steve, 237

L

language, accessibility of, 19

Lawson, Bruce, 152, 238

layer-applied technologies, 21

lazy loading, 43, 192195

Ix Maps example of, 213220

progressive enhancement and, 195

Lee, Kate Kiefer, 33, 237

line lengths, 150

line mode browser, 45

link element, 191

linked style sheets, 106

links

anchor elements as, 58

CSS example of, 116117

navigational, 84

list attribute, 90

localStorage property, 202204

Lorem Ipsum copy, 30, 31

Lynx browser, 6, 7, 22

M

MacGrane, Karen, 30n

MailChimp, 3335

main element, 57, 84

ManifoldJS tool, 206

man-in-the-middle attack, 159

Mann, Merlin, 50

mapping process. See Ix Maps

Marcotte, Ethan, 121, 237, 238

markup, 5391

ARIA used in, 8385

avoiding unnecessary, 8183

choosing elements for, 5763

class and id attributes in, 6366

deliberate choices using, 7183

document outline and, 7277

enhancing content using, 21, 55

fault tolerance and, 8691

illuminating content with, 57

key concepts checklist for, 232

learning from the past with, 5556

meaning conveyed through, 91

microformats and, 6668

potential issues using, 61

RDFa and microdata, 6870

recommended reading on, 238

source order in, 7781

Martin, George R. R., 39

max-width media query, 120121, 122123

McGrane, Karen, 237

meaning

content conveying, 2931

markup conveying, 91

media assignments, 145146

media content, 3947

cost-benefit analysis of, 3943

max-width query for, 120121

providing alternates of, 4447

media queries, 122, 125, 131, 149

@media block, 121, 145, 148

Meyer, Eric, 53n, 66, 146, 147, 238

microdata, 6869

microformats, 6668

min-width media query, 123

mobile devices

content vs. navigation on, 7778

mobile first approach and, 124, 125

performance optimization for, 223224

Mobile First (Wroblewski), 77

Modernizr, 138, 173

Molero, Gorka, 237

Mosaic browser, 5

MOSe technique, 112

motion-based controls, 148

mouse interactions, 195, 198

Mullenweg, Matt, 66

MVC framework, 166, 167

N

namespacing, 185

native rendering, 153154

natural-language processing, 225226

navigation

content vs., 7778, 80

progressive, 116121

negatively indented elements, 141

Nelson, Sarah B., 210

Netscape Navigator, 5, 126

network issues, 201206

New York Times website, 40, 71, 213

Nichols College website, 80, 116121, 214219

noscript element, 163164, 194

NPR website, 37, 143145

O

object element, 8687

offscreen elements, 142

OmniGraffle software, 212

on-demand enhancements, 192195

Open Graph protocol, 6970

operating system (OS) look/feel, 153154

optimization vs. support, 1415, 16

outline, document, 7277, 81

overdesigning websites, 95

P

Page, Larry, 56n

page performance, 42

PageRank algorithm, 56

parsing errors, 109110, 125

parsing script, 3n

Pattern Lab, 99, 132

pattern libraries, 9899

Pattern Primer, 99

PDFs, challenge of using, 4647

performance

accessibility related to, 19

media content and, 42

optimizing for mobile, 223224

user experience and, 42

picture element, 8889

Pinterest, 70

placeholder text, 30n

Pointer Events, 200201

pointer-based interactions, 200201

Point-to-Point Protocol (PPP), 7

Portis, Eric, 238

positively indented elements, 141142

post-processors for CSS, 137

PouchDB tool, 204

Powazek, Derek, 237

preprocessors for CSS, 137

presentation role, 85

printer-friendly pages, 146148

progressive enhancement, 34

benefits of, 228229

Boston Globe example of, 130131

continuum of experience and, 20

cost effectiveness of, 1011

CSS example of, 116121

fault tolerance and, 14, 8691

future friendliness of, 17

Ix Maps for exploring, 210222

JavaScript and, 162165, 206207

key concepts checklist for, 230235

layer-applied technologies and, 21

lazy loading and, 195

mapping the experience of, 210222

mobile connections and, 223224

navigation example of, 116121

recommended reading on, 236239

screen size and, 224225

support vs. optimization and, 15, 16

user experience and, 2223

progressive navigation, 116121

property fallbacks, 110111

proximity in CSS, 104107

Q

queries, media, 122, 125, 131

Quesenbery, Whitney, 239

R

race condition, 169

Raggett, Dave, 64

RDFa tags, 68, 6970

Redish, Janice, 237

rel attribute, 6667

Responsive Design Workflow (Hay), 95

responsive web design, 122133

basic formula for, 122

Boston Globe example of, 127131

embracing fluidity in, 131133

recommended reading on, 237

support vs. optimization in, 125127

RGB color values, 111

RGBa color values, 111

Rieger, Bryan, 125

roadblocks, 8, 9

role attribute, 5960, 83, 84, 85

rule sets, hiding in CSS, 112116

S

Sambells, Jeffrey, 238

Samuels, Jason, 93, 132, 239

Schema.org website, 69

screen readers, 18, 227

screen size

adapting the interface for, 185190

progressive enhancement and, 224225

visual design and, 124, 150152

screen-capture software, 96

script element, 174

scripts

parsing, 3n

Service Worker, 205

validation, 183

scroll jacking, 187

search engine optimization (SEO), 7879

section element, 72, 77

sectioning elements, 72, 73, 7677

select box, 153

selectors in CSS, 107109, 112, 114115

semantic markup

Google’s use of, 56

illuminating content with, 57

recommending reading on, 238

SEO (search engine optimization), 7879

server-rendered apps, 168

Service Worker scripts, 205

sessionStorage property, 202204

Sharp, Remy, 238

Shea, Dave, 112n

Simmons, Amber, 237

skins, 154

Skitch software, 96

Sky Broadband, 158159, 174

small screen first approach, 124

source order, 7781

space, empty, 4850

specificity in CSS, 107109

speech synthesis, 225, 227

Squirrel.js plugin, 203

states, ARIA, 180182

Sticka, Tyler, 238

structured content, 3738

structured data testing tool, 70

style guides, 98

Style Prototype, 99

style tiles, 9798

styles

conservative use of, 138139

default, 152154

inline, 106107

tiles and guides for, 9798

when to apply, 190192

support vs. optimization, 1415, 16

@supports block, 138139

T

tabbed interfaces, 8183

adapting for screens, 185190

ARIA attributes for, 179180

Ix maps example of, 220222

JavaScript and, 8283, 178180, 220

keyboard navigation of, 196197

markup for building, 81

tabindex juggling, 196197

table element, 5556

:target pseudoclass, 118119

TechCrunch website, 17

technology vs. experience, 711

testing and analytics, 239

text

fake or placeholder, 30

line mode browser for, 45

video games based on, 225, 226

voice-based interactions and, 225228

thumbnail images, 41, 43, 213214

touchend event, 198199

touchscreen interactions, 197201

transition property, 120, 133

Turing Test, 226

Twitter, 70, 167

Typekit service, 190191

U

UI construction flows, 210

universal accessibility, 1820

User Agent sniffing, 8n

user experience

content strategy and, 43

controlled by Web users, 161162

crafting the conversation for, 33

page performance related to, 42

progressive enhancement and, 2223

recommended reading on, 237

V

van der Merwe, Rian, 30n

Vanguard website, 44, 45

Veen, Jeffrey, 92, 100

vendor prefixes, 133137

video element, 8788

viewport width (vw) units, 151152

virtual personal assistants, 227

visibility property, 140

visual design, 93155

accessibility and, 19

altered aesthetics and, 153

conducting an audit of, 96

conservative use of styles in, 138139

content as basis for, 100103

CSS overview for, 104121

default styles for, 152154

defensive design in, 137139

embracing the continuum in, 155

finding the edges in, 102103

fluidity in, 131133

generated content in, 143145

hiding content in, 139143

interaction methods and, 148150

key concepts checklist for, 233234

larger screens and, 150152

media assignments for, 145146

page hierarchy and, 22

pattern libraries for, 9899

printed page and, 146148

progressive navigation example, 116121

recommended reading on, 238

responsive web design and, 122133

screen resolution and, 94

specific devices and, 132133

standards considered in, 133137

style guides for, 98

style tiles for, 9798

system vs. page, 9499

Voice and Tone website, 3334

voice-based interactions, 225228

W

W3C (World Wide Web Consortium), 10

Wachter-Boettcher, Sara, 237

Walton, Trent, 237

Warren, Samantha, 97

watchResize function, 218

Web, the

constancy of change on, 1

early experiences on, 47

installable sites on, 205206

recommended reading about, 236

web browsers. See browsers

web design process. See responsive web design

Web Developer Toolbar, 72n

Web Standards Project, 53

Web Standards Sherpa site, 74

“Web’s Grain, The” (Chimero), 228

WebSQL support, 10

What Does My Site Cost? tool, 42

Wi-Fi hotspots, 159

window.addEventListener method, 176

window.localStorage method, 176

Word for MS-DOS, 1213

words, power of, 27, 29, 31

writing for real people, 38

Wroblewski, Luke, 77, 237

X

XFN microformat, 6667

XMLHttpRequest, 204

Y

YouTube, 19, 46n, 101

Z

Zakas, Nicholas, 8n

Zeldman, Jeffrey, 24, 126, 237

z-index property, 119

zombie copy, 2829

Zork video game, 225, 226