A List Apart website, 126
abbreviation (abbr) element, 57
accordion interfaces, 189–190, 221
addEventListener method, 172–173, 176
ads, Wi-Fi, 159
Airbnb, 167
alert role, 85
alternate media, 148
alternative interactions, 148–150
AlzForum, 82, 178, 180, 181, 186, 194–195
analytics and testing, 239
Andreessen, Marc, 86n
Angular JavaScript, 13
any-hover value, 150
any-pointer and any-hover values, 150
Application Cache, 205
clarifying interfaces with, 83–85
describing states with, 180–182
first rule of using, 84
potential issues with, 61
roles available in, 83, 84, 85
styles triggered with, 191–192
tabbed interfaces and, 179
aria-controls attribute, 179
aria-describedby attribute, 179, 180
aria-labelledby attribute, 179
aria-selected attribute, 180–181
“Attack of the Zombie Copy” (Kissane), 28
attributes
audio element, 88
audit, design, 96
Autoprefixer, 137
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
Boston Globe website, 127–131, 193
Boulton, Mark, 35
Bowman, Doug, 53n
Bradley, Adam, 217
Brand, Zach, 37
button element, 58
Cederholm, Dan, 238
Champion, Steve, 4
checklist of key concepts, 230–235
class selector, CSS, 107, 108, 109n
CMS (content management system), 36–37
collapsed elements, 141
color declaration, 105
color selection
accessibility and, 19
CSS examples of, 105–107, 110–111
comments, conditional, 177–178
concert hall analogy, 127, 130
conditional logic, 168
consistency of design, 96
cost-benefit analysis of, 39–43
crafting conversation with, 31–35
fake text vs., 30
key concepts checklist on, 230–231
leading the way with, 51
performance related to, 42
providing alternate forms of, 44–47
recommended reading on, 237
thinking about structured, 37–38
visual design related to, 100–103
writing for real people, 38
content management system (CMS), 36–37
continuum of experience, 20
conversation
guidelines for crafting, 31–33
user interactions based on, 29
copy
content equated with, 27
guidelines for crafting, 31–32
crafting the conversation, 31–35
“Crippling the Web” (Kadlec), 16
Crockford, Douglas, 156
CSS (Cascading Style Sheets), 104–121
feature detection for, 138–139
potential issues with, 61
progressive navigation example, 116–121
property fallbacks in, 110–111
recommended reading on, 238
CSS preprocessors, 137
datalist element, 90
dataset property, 184
Davidson, Mike, 53n
declarative instruction, 182–185
defensive programming, 168–175
isolating DOM manipulation, 169–170
testing for feature support, 172–174
verifying JQuery library, 174–175
design, etymology of word, 29
See also visual design
desktop first approach, 124
devices
mobile first approach to, 124, 125
optimizing design for specific, 132–133
See also mobile devices
dial-up modems, 223
display property, 140
document.querySelector element, 176
download attribute, 88
Duckett, Jon, 238
embedded style sheets, 105, 106, 107
Ember FastBoot, 167
errors
parsing, 109–110, 112, 125, 135
types of JavaScript, 164
See also fault tolerance
event capturing phase, 170–171
experience vs. technology, 7–11
experimental features, 136
explicit sectioning, 72, 73, 76
fake text, 30
fault tolerance, 14
JavaScript and, 168
feature detection
Feliz, Teylor, 239
Fenton, Nicole, 237
fieldset element, 72
figcaption element, 108
The Filament Group, 193
flexible media, 122
fluid grids, 122
font stacks, 191
forks, program, 173
forms
client-side storage of, 204
conversational questions on, 47–48
forward compatibility, 14
Friedman, Vitaly, 238
Frost, Brad, 14
future friendliness, 17
getActiveMQ function, 218
getComputedStyle method, 218
Give Central website, 187, 188
Maps development, 10
semantic markup used by, 56
Social Graph product, 67
structured data testing tool, 70
Grigsby, Jason, 238
Hagans, Andy, 239
Hawking, Stephen, 227
Hay, Stephanie, 31
heading levels, 73
Heilmann, Christian, 239
recommended approach to, 142–143
techniques to avoid for, 140–141
techniques to use sparingly for, 141–142
Hoh, Benjamin, 21
horizontal scrolling tabs, 187
Horton, Sarah, 239
class and id attributes, 63–66
fault tolerance and, 14, 86–91
heading levels, 73
JavaScript and, 82
recommended reading on, 238
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
iA Writer, 12n
IBM Simon, 197
adapting interfaces for, 185–190
alternative methods of, 148–150
building what you need for, 178–180
Conditional Comments and, 177–178
conversation as basis for, 29
declarative instruction and, 182–185
defensive programming for, 168–175
describing using ARIA states, 180–182
designing a baseline for, 165–168
enhancement requirements for, 175–176
feature detection and, 172–174, 175
key concepts checklist on, 234–235
keyboard functions for, 195–197
potential problems with, 160–165
progressive enhancement and, 206–207
recommended reading on, 238–239
touchscreen functions for, 197–201
Interface Experience Maps. See Ix Maps
interface inventory, 96
interfaces
describing with ARIA states, 180–182
tabbed, 81–83, 178–180, 220–222
Internet Explorer (IE), 93, 125, 177–178
invisible elements, 140
isomorphic JavaScript, 166–167
benefits of using, 212
lazy loading images example, 213–220
tabbed interface example, 220–222
Java applets, 7
JavaScript
avoiding on some browsers, 177–178
data attributes accessed in, 184
establishing minimum requirements for, 175–176
feature detection for, 172–174, 175
HTML manipulated by, 82
Ix Maps and, 214, 215, 217–220
jQuery library and, 158, 174–175
lazy loading of, 193, 195, 216–220
localStorage property, 202–204
potential problems with, 61, 160–165
programming defensively with, 168–175
progressive enhancement and, 162–165, 206–207
recommended reading on, 238–239
stories illustrating problems with, 157–159
tabbed interfaces and, 82–83, 178–180, 220
Jehl, Scott, 237
Jing software, 96
jQuery Validation script, 183
Kaminsky, Dan, 159
Keith, Jeremy, 52, 90, 217n, 236, 238, 239
key concepts checklist, 230–235
keyboard interactions, 195–197
Kinect interactions, 148
King, Liam, 30
Klatt, Dennis, 227
Kloos, Egor, 112
Koch, Peter Paul, 239
Kratzenstein, Christian, 227
Krug, Steve, 237
language, accessibility of, 19
layer-applied technologies, 21
progressive enhancement and, 195
line lengths, 150
link element, 191
linked style sheets, 106
links
anchor elements as, 58
navigational, 84
list attribute, 90
localStorage property, 202–204
MacGrane, Karen, 30n
ManifoldJS tool, 206
man-in-the-middle attack, 159
Mann, Merlin, 50
mapping process. See Ix Maps
Marcotte, Ethan, 121, 237, 238
class and id attributes in, 63–66
deliberate choices using, 71–83
enhancing content using, 21, 55
illuminating content with, 57
key concepts checklist for, 232
learning from the past with, 55–56
meaning conveyed through, 91
potential issues using, 61
recommended reading on, 238
Martin, George R. R., 39
max-width media query, 120–121, 122–123
McGrane, Karen, 237
meaning
markup conveying, 91
cost-benefit analysis of, 39–43
providing alternates of, 44–47
media queries, 122, 125, 131, 149
Meyer, Eric, 53n, 66, 146, 147, 238
min-width media query, 123
content vs. navigation on, 77–78
mobile first approach and, 124, 125
performance optimization for, 223–224
Mobile First (Wroblewski), 77
Molero, Gorka, 237
Mosaic browser, 5
MOSe technique, 112
motion-based controls, 148
Mullenweg, Matt, 66
namespacing, 185
natural-language processing, 225–226
navigation
negatively indented elements, 141
Nelson, Sarah B., 210
New York Times website, 40, 71, 213
Nichols College website, 80, 116–121, 214–219
noscript element, 163–164, 194
offscreen elements, 142
OmniGraffle software, 212
on-demand enhancements, 192–195
operating system (OS) look/feel, 153–154
optimization vs. support, 14–15, 16
overdesigning websites, 95
Page, Larry, 56n
page performance, 42
PageRank algorithm, 56
parsing script, 3n
Pattern Primer, 99
PDFs, challenge of using, 46–47
performance
accessibility related to, 19
media content and, 42
optimizing for mobile, 223–224
user experience and, 42
Pinterest, 70
placeholder text, 30n
pointer-based interactions, 200–201
Point-to-Point Protocol (PPP), 7
Portis, Eric, 238
positively indented elements, 141–142
post-processors for CSS, 137
PouchDB tool, 204
Powazek, Derek, 237
preprocessors for CSS, 137
presentation role, 85
printer-friendly pages, 146–148
Boston Globe example of, 130–131
continuum of experience and, 20
fault tolerance and, 14, 86–91
future friendliness of, 17
Ix Maps for exploring, 210–222
JavaScript and, 162–165, 206–207
key concepts checklist for, 230–235
layer-applied technologies and, 21
lazy loading and, 195
mapping the experience of, 210–222
mobile connections and, 223–224
navigation example of, 116–121
recommended reading on, 236–239
support vs. optimization and, 15, 16
progressive navigation, 116–121
Quesenbery, Whitney, 239
race condition, 169
Raggett, Dave, 64
Redish, Janice, 237
Responsive Design Workflow (Hay), 95
responsive web design, 122–133
basic formula for, 122
Boston Globe example of, 127–131
embracing fluidity in, 131–133
recommended reading on, 237
support vs. optimization in, 125–127
RGB color values, 111
RGBa color values, 111
Rieger, Bryan, 125
role attribute, 59–60, 83, 84, 85
rule sets, hiding in CSS, 112–116
Sambells, Jeffrey, 238
Schema.org website, 69
screen size
adapting the interface for, 185–190
progressive enhancement and, 224–225
visual design and, 124, 150–152
screen-capture software, 96
script element, 174
scripts
parsing, 3n
Service Worker, 205
validation, 183
scroll jacking, 187
search engine optimization (SEO), 78–79
sectioning elements, 72, 73, 76–77
select box, 153
selectors in CSS, 107–109, 112, 114–115
semantic markup
Google’s use of, 56
illuminating content with, 57
recommending reading on, 238
SEO (search engine optimization), 78–79
server-rendered apps, 168
Service Worker scripts, 205
sessionStorage property, 202–204
Sharp, Remy, 238
Shea, Dave, 112n
Simmons, Amber, 237
skins, 154
Skitch software, 96
small screen first approach, 124
Squirrel.js plugin, 203
Sticka, Tyler, 238
structured data testing tool, 70
style guides, 98
Style Prototype, 99
styles
support vs. optimization, 14–15, 16
JavaScript and, 82–83, 178–180, 220
keyboard navigation of, 196–197
markup for building, 81
TechCrunch website, 17
technology vs. experience, 7–11
testing and analytics, 239
text
fake or placeholder, 30
video games based on, 225, 226
voice-based interactions and, 225–228
thumbnail images, 41, 43, 213–214
touchscreen interactions, 197–201
Turing Test, 226
UI construction flows, 210
universal accessibility, 18–20
User Agent sniffing, 8n
content strategy and, 43
controlled by Web users, 161–162
crafting the conversation for, 33
page performance related to, 42
progressive enhancement and, 22–23
recommended reading on, 237
van der Merwe, Rian, 30n
viewport width (vw) units, 151–152
virtual personal assistants, 227
visibility property, 140
accessibility and, 19
altered aesthetics and, 153
conducting an audit of, 96
conservative use of styles in, 138–139
embracing the continuum in, 155
interaction methods and, 148–150
key concepts checklist for, 233–234
media assignments for, 145–146
page hierarchy and, 22
progressive navigation example, 116–121
recommended reading on, 238
responsive web design and, 122–133
screen resolution and, 94
standards considered in, 133–137
style guides for, 98
voice-based interactions, 225–228
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
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
writing for real people, 38
XMLHttpRequest, 204
Zakas, Nicholas, 8n
Zeldman, Jeffrey, 24, 126, 237
z-index property, 119