diff --git a/slides/access-trees.html b/slides/access-trees.html new file mode 100644 index 0000000000000000000000000000000000000000..2e4270ac6c5d2c165b2f6feff7a276d1ad19aceb --- /dev/null +++ b/slides/access-trees.html @@ -0,0 +1,392 @@ +--- +layout: presentation +title: Implementing Accessibility +description: More on how Accessibility is Implemented +class: middle, center, inverse +--- +background-image: url(img/people.png) + +.left-column50[ +# Welcome to the Future of Access Technologies + +Aria & Accessibility Trees: More on how Accessibility is Implemented + +{{site.classnum}}, {{site.quarter}} +] +--- +name: normal +layout: true +class: + +--- +# Important Reminder + +## This is an important reminder +## Make sure zoom is running and recording!!! +## Make sure captioning is turned on + +--- +[//]: # (Outline Slide) +# Learning Goals for today + +- Description of this week's assignment +- More on how accessibility is implemented + +--- +# First, Introducing your Website Report + +We modified the assignment a bit +- It's now two weeks long +- It's optionally a group assignment (with others who reviewed the same website) + +--- +# Introduction +- What is the site or app for +- How did you assess it +- Overview table + +| Task | Type (Web/Mobile/etc) | Testing Method | UARS found | Who Contributed | +|------|-----------------------|----------------|--------------|-----------------| +| ... | ... | ... | ... | | +|------|-----------------------|----------------|--------------|-----------------| + +--- +# Executive Summary + +Summarize biggest problems (1-2 paragraphs) + +| WCAG | Severe problems | Moderate problems | Minor problems | +|------|-----------------|-------------------|----------------| +| ... | ... | ... | ... | +|------|-----------------|-------------------|----------------| + + +--- +# Details +More detail on what needs to be done sorted by WCAG # + +Include both problems and remedies + +Easy to split this up among a group + +--- +# Make the report accessible +- Use headers +- Use proper color contrast +- Write alt text for photos +- Use meaningful hyperlinsk +- Turn in a word or google doc on Canvas + +--- +[//]: # (Outline Slide) +# Learning Goals for today + +- Description of this week's assignment +- More on how accessibility is implemented + +--- +# What is a web page really? + +| Content | Structure | Style | Behavior | +| :--: | :--: | :--: | :--: | +|| +| Words and Images | HTML | CSS | JavaScript | + +--- +# What is a web page really? + +| Content | Structure | Style | Behavior | +| :--: | :--: | :--: | :--: | +||| +| Words and Images | HTML | CSS | JavaScript | + +--- +# What is a web page really? + +| Content | Structure | Style | Behavior | +| :--: | :--: | :--: | :--: | +|||| +| Words and Images | HTML | CSS | JavaScript | + + +--- +# What is a web page really? + +| Content | Structure | Style | Behavior | +| :--: | :--: | :--: | :--: | +||||| +| Words and Images | HTML | CSS | JavaScript | + +--- +# Lifecycle of a browser* loading a page + +.left-column40[ +1. Fetch the page +2. Parse the page +3. Build up an internal representation of the web page +4. Display the page +] +.right-column60[ + +] +.footnote[*: As seen by Chrome] + +--- +# Parse and Display the Page + +.left-column[ + + +] + +.right-column[ +1. First line: <!DOCTYPE html> + - Ok: need to build an internal representation of the page +2. Line-by-line, go through the HTML + - If one of the tags links to a cascading style sheet (CSS) file, load and parse it + - If one of the tags links to Javascript (JS) for behavior, load and parse it +3. FINALLY display the page… +] + + +--- +# Understanding content + +- There are 100s of tags! See [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)! +- Some simple tags + - Title `<title></title>` (which nests inside your `<head></head>`) + - Headings `<h1></h1>` .. `<h6></h6>` + - Paragraphs `<p>` + - Ordered or unordered lists: `<ol></ol>`, `<ul></ul>`, with list elements `<li></li>` + - Horizontal rules `<hr />` + - Strong `<strong></strong>` which defaults to a bold style and emphasis `<em></em>` 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 + - `<header></header>`: The header or banner that displays the title of the page + - `<main></main>`: The bulk of the content of the page + - `<footer></footer>`: 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 `<a href="filename"></a>` + - Links to images `<img src="img.jpg" alt="Description!"/>` + +--- +# 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 <head> for the styles to work + `<link href=“style.css†rel=“stylesheet†/>` +- Great example is [CSS Zen Garden](http://www.csszengarden.com/) + - Exercise in [Ed](https://edstem.org/us/courses/38124/lessons/59447/slides/331625) + +--- +# CSS + +.left-column50[ +- Files consist of one or more rule sets +- Each rule set has a selector which chooses which HTML elements you want to style +- Style properties are set with rules which are property/value pairs +- Syntax is important +- More on [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) + +] + +.right-column50[ + + +From [W3Schools](https://code.makery.ch/library/html-css/part3/) +] + +--- +# Layout in CSS + +Layout can be [complicated](https://www.amazon.com/CSS-Awesome-Mug-Programmer-Developer/dp/B06Y13QC8N), +fortunately there is CSS [Flexbox](https://courses.cs.washington.edu/courses/cse154/flexboxducky/) or +[Grid](https://cssgridgarden.com/)!! + + + + + +--- +# Document Object Model (DOM) + +.left-column[ + + +] + +.right-column[ +- This builds a hierarchy of document elements in what we call the **Document Object Model** +- The structure of this depends on our HTML (or the toolkit that generates your HTML) +- The structure of this influences layout + +] + +--- +# Let's compare that to an app + + +**Interface Programmers** combine library elements according to toolkit rules & +constraints of architecture (common to all UI toolkits). + +Example: let's list all the components of this image: + + + +**Pause and think:** +- How does the toolkit know where to put the components on the screen? +- How does the toolkit know how to draw each component? + +??? +discuss with your neighbor +- what to draw; where to draw it +--- +# 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? + +-- +count: false + +How to tell a button where to place itself on the screen? + +--- +# Placment (layout) + +What position do we use? What coordinate system do we use? + +- An absolute position relative to the whole phone? +- A position relative to the whole app, but doesn't include the OS features (like status bars)? +- A position relative to the direct parent of the button, maybe a window *in* the app + +-- +Or should we let the toolkit decide what's best? + +--- +# Where should it go? +.left-column50[ + +Have to set up the layout first so we can see what we've added + +This is a "Layout" problem - all UI toolkits have to support layout. + +Layout is complicated because we want layout to handle things like resizing or changing from +portrait to landscape mode well. +] +-- +.right-column50[ +Specified using a <br> +component hierarchy (a tree) + +<div class="mermaid"> +graph TD +W(ConstraintLayout) --> V[Ab TextView--Hello World!] + W --> V1[fa:fa-square Button--Next ] + +class W darkblue +class V1,V blue +</div> + +Android's rendering of the same:  +] + + +--- +# What should it do? + +What do we tell the toolkit about the button? + +-- + +We need to know when the user *interacts* with it +- This is called *Event Handling* Example: + +```java +Button button = (Button) findViewById(R.id.button); +button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + // display a pop up with some text + Toast.makeText(getApplicationContext(), "Hello!", Toast.LENGTH_LONG).show(); + } +}); +``` + +--- +# Structure of a toolkit + +Structure of a Toolkit +- Library of components +- Architecture + +Note: these definitions have morphed over time, particularly as things have shifted to cross +platform development. +[Here's](https://stackoverflow.com/questions/3057526/framework-vs-toolkit-vs-library/19790148#19790148) +a reasonable set of definitions. + +??? +--- +# Some Comparisons + +| Android | Web | +| --- | --- | +| Java | HTML/CSS/JS | +| Layouts | CSS Flexbox or Grid | +| Interactor Hierarchy | Document Object Model (DOM) | +| Components | DIVS | +| Paint objects on a canvas | CSS | +| `onCreate` | `window.addEventListener("load", init);` | +| `View.OnClickListener#onClick` | `domElement.addEventListener("click", callback);` | + +--- +# Which of these Impacts Accessibility? + +| Android | Web | Accessibility (eg s) | +|--------------------------------|---------------------------------------------------|--------------------------------------| +| Java | HTML/CSS/JS | Does the toolkit support access? | +| Layouts | CSS Flexbox or Grid | Comprehension/Magnification | +| Interactor Hierarchy | Document Object Model (DOM) | Navigation | +| Components | DIVS | Alternative text (toolkit dependent) | +| Paint objects on a canvas | CSS | Color choices | +| `onCreate` | `window.addEventListener("load", init);` | Proper Interaction with access API? | +| `View.OnClickListener#onClick` | `domElement.addEventListener("click", callback);` | See above | + +--- +# End of Deck + +