```
- Horizontal rules ```
```
- Strong `````` which defaults to a bold style and emphasis `````` which defaults to italicized in most browsers.
]
---
# Adding content
- There are 100s of tags! See [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)!
- Some simple tags
- Some tags add semantic context
- ``: The header or banner that displays the title of the page
- ``: The bulk of the content of the page
- ``: The footer is optional but you can put contact info and copyright date in there.
---
# Adding content
- There are 100s of tags! See [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)!
- Some simple tags
- Some tags add semantic context
- Some tags need additional information, added to a tag with attributes
- Links to other pages ``
- Links to images ``
---
# Adding content
- There are 100s of tags! See [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)!
- Some simple tags
- Some tags add semantic context
- Some tags need additional information, added to a tag with attributes
- Some tags (comments) are important for documentation ``
---
# Cascading Style Sheets (CSS)
- Allows us to change the look and feel of the content on the page
- Style is separated into a .css file
- Makes styling multiple pages easier
- Allows changing multiple pages easier
- Style sheets must be linked to an html page in the for the styles to work
``
- Great example is [CSS Zen Garden](http://www.csszengarden.com/)
---
# Document Object Model (DOM) (1/3)
.left-column[
![:img Initial screen for the spot the heron app, 90%,width](img/building/spottheheronscreen.png)
]
.right-column[
- We must build up a hierarchy of document elements (the **Document Object Model**)
- The structure of this depends on our HTML (or the toolkit that generates your HTML or App)
- The structure of this influences layout
]
---
# Document Object Model (DOM) (2/3)
.left-column[
![:img Initial screen for the spot the heron app, 90%,width](img/building/spottheheronscreen.png)
]
.right-column[
What does this hierarchy look like?
]
---
# Document Object Model (DOM) (3/3)
.left-column[
![:img Initial screen for the spot the heron app, 90%,width](img/building/spottheheronscreen.png)
]
.right-column[
flowchart TD
A(Main Window)
B(Vertical Layout)
C("Spot the Heron" Label)
D(Picture of a heron in water with some reeds)
E(Horizontal Layout: Controls)
F(Left arrow)
G(Play)
H(Right arrow)
A --> B
B --> C
B --> D
B --> E
E --> F
E --> G
E --> H
classDef default fill:#009688,stroke:#333,stroke-width:2px, color:white;
classDef reflect fill:#4CAF50,stroke:#333,stroke-width:2px, color:white;
class A,B,C default
class A,B,C,D,E reflect
linkStyle default stroke: black,stroke-width:8px
]
---
# Let's compare that to an app
.left-column50[
Components: *library elements* (e.g. buttons and labels) combined according to *toolkit rules*
![:img Picture of a very simple interface showing a ringing bell at
left and an x at right to close the window with the words Google
Calendar reminder Christian and Anind (Jen Mankoff) is starting at
12:30pm. Video call between them, 100%, width](img/building/interface.png)
]
.right-column50[
- What are the "components" in this image?
- What does the "interactor hierarchy" look like for this image
Discuss with your neighbor and [Post](https://edstem.org/us/courses/67367/discussion/5486446)
]
???
discuss with your neighbor
- what to draw; where to draw it
---
# Let's compare that to an app (Answer)
.left-column50[
Components: *library elements* (e.g. buttons and labels) combined according to *toolkit rules*
![:img Picture of a very simple interface showing a ringing bell at
left and an x at right to close the window with the words Google
Calendar reminder Christian and Anind (Jen Mankoff) is starting at
12:30pm. Video call between them, 100%, width](img/building/interface.png)
]
.right-column50[
graph TD
W(Window) --> H[Horizontal layout]
H --> I1[fa:fa-bell Bell ]
H --> V[Vertical Layout]
V --> I2[Title: Google Calendar reminder]
V --> I3[Text: Christian and Anind --Jen Mankoff-- is
starting at 12:30pm. - Video call]
classDef default fill:#009688,stroke:#333,stroke-width:2px, color:white;
classDef reflect fill:#4CAF50,stroke:#333,stroke-width:2px, color:white;
class H,V default
class I1,I2,I3 reflect
linkStyle default stroke: black,stroke-width:8px
]
---
# QUICK BREAK
Good time to stand and stretch
---
# How do we make it more interactive?
How about we add a button?
--
count: false
Wait? When you hear the word "button" in the context of a graphical user
interface (GUI), what do you think of?
---
# What should it do?
What do we tell the toolkit about the button?
- Where to place it
- How it should react to user input (from which device?)
---
# Screen Reader Information Flow (1/2)
What happens when the user is exploring/navigating?
graph LR
SR[fa:fa-volume-up
Screenreader
]:::bluelarge -->|Asks for next object in DOM| API(fa:fa-codepen
Accessibility API
):::bluelarge
API -->|Passes along request| ATK[
Toolkit
]:::bluelarge
ATK -->|Checks Details| App[fa:fa-mobile
App
]:::bluelarge
App -->|Name: Foo| ATK
ATK -->|Name, Role: Button| API
API -->|Name, Role| SR
Speak(fa:fa-volume-up Button, Foo ):::bluelarge
--
... (repeat for each swipe / component)
---
# Screen Reader Information Flow (2/2)
What happens when the user double taps to invoke?
graph LR
SR[fa:fa-volume-up
Screenreader
]:::bluelarge -->|Invokes object| API(fa:fa-codepen
Accessibility API
):::bluelarge
API -->|Passes along request| ATK[
Toolkit/
Browser]:::bluelarge
ATK -->|Invokes Callback| App[fa:fa-mobile
App
]:::bluelarge
App -->|Updates Interface
Announces Changes| ATK
ATK -->|Passes along information| API
API -->|Deleted text| SR
Speak(fa:fa-volume-up Deleted Text ):::bluelarge
---
[//]: # (Outline Slide)
# Learning Goals for Today
- Manual Accessibility Testing
- We will focus on screen readers
- And understanding structure in interactive apps
- And how this impacts user agents (such as screen readers)
- Building for Accessibility
- **Assignment**
---
# This week's assignment
The goal of this homework is to make something more accessible (e.g. website, visualization, user interface, AR/VR, etc) that you’ve already made.
Required learning goals:
- Accessible Document Creation
- Familiarity with a Range of Accessibility Technologies
- Image Description
???
If you don't have an interface, come speak with us!
---
[//]: # (Outline Slide)
# Learning Goals for Today
- Manual Accessibility Testing
- We will focus on screen readers
- And understanding structure in interactive apps
- And how this impacts user agents (such as screen readers)
- Building for Accessibility
- Assignment