The right people can make or break a company. That’s great news for the self-employed, but unless you have a workforce of one, staffing is a major, perpetual concern.
The right people can make or break a company. That’s great news for the self-employed, but unless you have a workforce of one, staffing is a major, perpetual concern.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA... ..
Evidence: Describing my kitchen. SENA.
ENGLISH DOT WORKS 2. SENA.
3. describing my kitchen. ENGLISH DOT WORKS 2.
activity 3 week 1. ENGLISH DOT WORKS 2.
actividad 3 semana 1. ENGLISH DOT WORKS 2.
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda..... ..
Evidence: describing cities and places.ENGLISH DOT WORKS 2. SENA. ENGLISH DOT WORKS 2.
semana 4 acitivdad 2.ENGLISH DOT WORKS 2.
week 4 acitivty 2. ENGLISH DOT WORKS 2.
3.Evidence: Getting to Bogota.ENGLISH DOT WORKS 2. SENA.semana 4 actividad 3... ..
vidence: Getting to Bogota / Evidencia: Llegando a Bogotá.
ENGLISH DOT WORKS 2. SENA.
ENGLISH DOT WORKS 2.
semana 4 actividad 3.ENGLISH DOT WORKS 2.
week 4 activity 3.ENGLISH DOT WORKS 2. SENA.
Evidence: Going to the restaurant . ENGLISH DOT WORKS 2. SENA... ..
Evidence: Going to the restaurant .
ENGLISH DOT WORKS 2. SENA.
actividad 2 Semana 1. Evidence: Going to the restaurant .
Activity 2 Week 1. Evidence: Going to the restaurant .
Evidence: I can’t believe it.ENGLISH DOT WORKS 2. semana 3 actividad 1.SENA... ..
Evidence: I can’t believe it.ENGLISH DOT WORKS 2. SENA.
ENGLISH DOT WORKS 2.
semana 3 actividad 1.ENGLISH DOT WORKS 2.
week 3 activity 1.ENGLISH DOT WORKS 2.
Evidence: I can’t believe it. SENA.
Evidence: Memorable moments.ENGLISH DOT WORKS 2. SENA. semana 2 actividad 2... ..
Evidence: Memorable moments.ENGLISH DOT WORKS 2. SENA. ENGLISH DOT WORKS 2.
week 2 activity 2.ENGLISH DOT WORKS 2.
semana 2 actividad 2. ENGLISH DOT WORKS 2.
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
Early on, Internet access was considered a luxury. Those times have passed and the Internet, especially the Web, has become a necessity. Whether your users are trying to access their money, gather health information, attend class, apply for assistance, or any of the other hundreds (if not thousands) of critical tasks people do on the web, your site needs to be prepared to meet their needs. And it needs to work, no matter what.
In this session, I discuss the many challenges to delivering critical information and services as well as the steps you can take to overcome those challenges. He’ll explore ways to make sure you can meet users on a variety of devices—and not the just the latest and greatest high end ones folks are talking about; how to make it accessible to people with disabilities; and how to load—and load quickly—on limited- bandwidth connections.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA... ..
Evidence: Describing my kitchen. SENA.
ENGLISH DOT WORKS 2. SENA.
3. describing my kitchen. ENGLISH DOT WORKS 2.
activity 3 week 1. ENGLISH DOT WORKS 2.
actividad 3 semana 1. ENGLISH DOT WORKS 2.
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda..... ..
Evidence: describing cities and places.ENGLISH DOT WORKS 2. SENA. ENGLISH DOT WORKS 2.
semana 4 acitivdad 2.ENGLISH DOT WORKS 2.
week 4 acitivty 2. ENGLISH DOT WORKS 2.
3.Evidence: Getting to Bogota.ENGLISH DOT WORKS 2. SENA.semana 4 actividad 3... ..
vidence: Getting to Bogota / Evidencia: Llegando a Bogotá.
ENGLISH DOT WORKS 2. SENA.
ENGLISH DOT WORKS 2.
semana 4 actividad 3.ENGLISH DOT WORKS 2.
week 4 activity 3.ENGLISH DOT WORKS 2. SENA.
Evidence: Going to the restaurant . ENGLISH DOT WORKS 2. SENA... ..
Evidence: Going to the restaurant .
ENGLISH DOT WORKS 2. SENA.
actividad 2 Semana 1. Evidence: Going to the restaurant .
Activity 2 Week 1. Evidence: Going to the restaurant .
Evidence: I can’t believe it.ENGLISH DOT WORKS 2. semana 3 actividad 1.SENA... ..
Evidence: I can’t believe it.ENGLISH DOT WORKS 2. SENA.
ENGLISH DOT WORKS 2.
semana 3 actividad 1.ENGLISH DOT WORKS 2.
week 3 activity 1.ENGLISH DOT WORKS 2.
Evidence: I can’t believe it. SENA.
Evidence: Memorable moments.ENGLISH DOT WORKS 2. SENA. semana 2 actividad 2... ..
Evidence: Memorable moments.ENGLISH DOT WORKS 2. SENA. ENGLISH DOT WORKS 2.
week 2 activity 2.ENGLISH DOT WORKS 2.
semana 2 actividad 2. ENGLISH DOT WORKS 2.
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
Early on, Internet access was considered a luxury. Those times have passed and the Internet, especially the Web, has become a necessity. Whether your users are trying to access their money, gather health information, attend class, apply for assistance, or any of the other hundreds (if not thousands) of critical tasks people do on the web, your site needs to be prepared to meet their needs. And it needs to work, no matter what.
In this session, I discuss the many challenges to delivering critical information and services as well as the steps you can take to overcome those challenges. He’ll explore ways to make sure you can meet users on a variety of devices—and not the just the latest and greatest high end ones folks are talking about; how to make it accessible to people with disabilities; and how to load—and load quickly—on limited- bandwidth connections.
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website. In this session, Aaron Gustafson will discuss how smart markup choices can improve the overall usability and accessibility of your projects without disrupting your current workflow.
For the last three years, our industry has been coming to terms with Progressive Web Apps (PWAs) and what they mean for the work we do every day. Scores of articles, reams of documentation, and dozens of white papers touting the successes and failures in this space can really get your head spinning. It’s easy to get lost in the complexities of service workers, manifests, and oh so many JavaScript frameworks and toolkits. Aaron believes it’s time to take a step back and refocus our attention on what really matters: building great web experiences. In this session, you’ll learn how to apply modern web design and development best practices to your web projects. You’ll learn how to grow a project from a core, universally-accessible experience to a sophisticated Progressive Web App that ensures users will be able to access your product, no matter what.
Our industry is abuzz with talk about Progressive Web Apps (PWAs) and with good reason: they are a great way to improve the experiences our users have on our sites, especially when it comes to performance. Using Service Workers—a key component of PWAs—we can manage network requests and the cache to an incredibly granular degree. We can also totally abuse the privilege Service Workers grant us when it comes to writing files to disk.
In this session, Aaron Gustafson will discuss some of the potential pitfalls in implementing Service Workers, especially when it comes to managing heavy files like images and video. He’ll provide guidance on current best practices in cache management. And he’ll offer a few simple recipes you can put to use right away to deliver amazing experiences for your users that respect their data usage and disk space.
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
After enjoying more than a decade of relative stability in designing for the 'desktop' web, smartphones had to come along and throw a wrench in the works. It seemed that in an instant, everything changed and nothing was certain any more. The truth is, though, nothing was ever certain.
One of the web’s major strengths is its ability to adapt, to travel anywhere and everywhere in service of its users. All those years we were the ones restraining it with our desire to create a single monolithic experience. But experience is not monolithic. Every person is different, and we all bring our unique perspectives, experiences, and capabilities to the table. A one-size-fits-all approach rarely fits anyone well. When we embrace that, our designs, products, and experiences will be all the better for it.
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website. In this session, Aaron Gustafson will discuss how smart markup choices can improve the overall usability and accessibility of your projects without disrupting your current workflow.
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, writing more appropriate copy, and (of course) building accessible experience. But experience is about more than just interface. Our users’ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. You’ll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
In this session, you'll learn how to apply modern best practices to grow your Progressive Web Apps fluidly from mobile devices all the way to large screen desktop environments. You’ll even learn how to lay the groundwork for reaching users of future form factors and “headless” UIs. We'll focus on design patterns that set you up for success on every device and across platforms and guarantee your users will be able to access your product, no matter what. Additional topics will include a primer on how your PWA can integrate more tightly with Windows 10—including how to distribute your PWA via the Store—and how to incorporate accessibility from the very beginning.
Designing the Conversation [Concatenate 2018]Aaron Gustafson
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
Over time, your users will become more accustomed to and reliant on voice-based interactions with their computers and, thereby, the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our users’ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. You’ll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
We, as an industry, tend to have a pretty myopic view of experience. Those of us who work day-to-day in accessibility probably have a broader perspective than most, but I would argue that even we all fall short now and again when it comes to seeing the Web as others do.
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
Aaron Gustafson
Author, Adaptive Web Design
Performance as User Experience
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our users’ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. You’ll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
Design is problem solving. Each and every day, we are tasked with finding ways to reduce the friction our users experience on the Web. That means streamlining flows, reducing cognitive load, and writing more appropriate copy, but user experience goes far beyond the interface. Our users’ experiences begin with their first request to our servers. In this intensely practical session, Aaron will explore the ins and outs of page load performance by showing how he made the web site of the 10K Apart meet its own contest rules, by having a site that was functional and attractive even without JavaScript, and was less than ten kilobytes at initial load. You’ll walk away with a better understanding of the page load process as well as numerous ways you can improve the projects you are working on right now.
Over time, your users will become more accustomed to and interacting with their computers on the web. Enabling them to complete critical tasks without a visual user interface will be crucial for the long-term success of your website.
So how do you design a "headless" UI? That's easy: You design the conversation.
Conversation is at the root of every interaction we have, be it with another human being, a game, or with a website. This session will discuss how to design and implement a web application that will allow you to create a web page that will allow you to create HTML documents.
After enjoying more than a decade of relative stability in designing for the 'desktop' web, smartphones had to come along and throw a wrench in the works. It seemed that in an instant, everything changed and nothing was certain any more. The truth is, though, nothing was ever certain.
One of the web’s major strengths is its ability to adapt, to travel anywhere and everywhere in service of its users. All those years we were the ones restraining it with our desire to create a single monolithic experience. But experience is not monolithic. Every person is different and we all bring our unique perspectives, experiences, and capabilities to the table. A one-size-fits-all approach rarely fits anyone well. When we embrace that, our designs, products, and experiences will be all the better for it.
In this talk, Aaron will discuss and dissect several adaptive interfaces and demonstrate how they smartly morph to meet their users’ needs — slow connections, older browsers, narrow screens, and even no screens at all. He’ll also introduce you to a battle-tested tool for planning, discussing, building and testing adaptive interfaces.
5. SIMPLE FORM: CONTACT US < form id = "contact-form" action = "/action-page.php" method = "post" > <!-- the rest of our form will go here --> </ form > FORM Element establishes a form ACTION is the only required attribute and should always be a URI METHOD defaults to “get” NAME is depreciated; use ID instead
6. SIMPLE FORM: CONTACT US <form id="contact-form" action="/action-page.php" method="post"> < fieldset > <legend> Send us a message </legend> <!-- the rest of our form will go here --> </ fieldset > </form> FIEDSET Element used to group related fields LEGEND Element used to provide a caption for a FIELDSET
7. SIMPLE FORM: CONTACT US <form id="contact-form" action="/action-page.php" method="post"> <fieldset> <legend> Send us a message </legend> < p > <!-- form control --> </ p > < p > <!-- form control --> </ p > < p > <!-- form control --> </ p > </fieldset> </form> Containing FORM Controls P or DIV sensible choices, but not very accurate (except in certain instances) OL or UL most forms are lists of questions or form controls, so these are better <form id="contact-form" action="/action-page.php" method="post"> <fieldset> <legend> Send us a message </legend> < ol > < li > <!-- form control --> </ li > < li > <!-- form control --> </ li > < li > <!-- form control --> </ li > </ ol > </fieldset> </form>
8. SIMPLE FORM: CONTACT US <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> <li> Name < input type = "text" name = "name" id = "contact-name" /> </li> <li> Email < input type = "text" name = "email" id = "contact-email" /> </li> <li> <!-- form control --> </li> </ol> </fieldset> </form> INPUT Text Control type= "name" is a basic text input field (also type= "password" for content you want hidden) NAME vs. ID NAME is for the back end ID is for the front end
9. SIMPLE FORM: CONTACT US <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> <li>Name <input type="text" name="name" id="contact-name" /></li> <li>Email <input type="text" name="email" id="contact-email" /></li> <li> Message < textarea name = "message" id = "contact-message" rows = "4" cols = "30" > </ textarea > </li> </ol> </fieldset> </form> TEXTAREA a multiline text form control requires ROWS and COLS attributes!!!
10. SIMPLE FORM: CONTACT US Working with LABEL this element provides to means of associating its content with a form control: implicit association LABEL wraps the form control and the text explicit association LABEL 's FOR attribute is an ID reference to the form control <form id="contact-form" action="/action-page.php" method="post"> <fieldset> <legend> Send us a message </legend> <ol> <li> < label for = "contact-name" > Name </ label> < input id = "contact-name" ... /> </li> ... </ol> </fieldset> </form> <form id="contact-form" action="/action-page.php" method="post"> <fieldset> <legend> Send us a message </legend> <ol> <li> < label > Name < input ... /></ label> </li> ... </ol> </fieldset> </form>
11. SIMPLE FORM: CONTACT US Buttons trigger events in a form; use either INPUT or BUTTON element Common TYPE s submit – submits the form; default button type reset – resets all form control values back to their defaults when the page loaded <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... </ol> <button type = "submit" > Go </button> </fieldset> </form> <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... </ol> <input type = "submit" value = "Go" / > </fieldset> </form>
12. SIDEBAR : BUTTONS WINDOWS XP OS X BUTTON INPUT Mozilla IE 6/7 (XP) IE 6/7 (classic) Opera Opera IE 5 Firefox Camino Safari
22. SIMPLE FORM: CONTACT US SELECT ion Lists allows selection of one or more OPTION s On OPTION elements, the VALUE attribute is optional (contents are submitted by default) <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... <li>< label for = "contact-subject" > Subject </ label > < select id = "contact-subject" name = "subject" > < option value = "Error" > I noticed a website error </ option > < option value = "Question" > I have a question </ option > < option > Other </ option > </ select ></li> ... </ol> <button type="submit">Go</button> </fieldset> </form>
28. SIMPLE FORM: CONTACT US Nested FIELDSET s a great way to organize radio or checkbox groups The LEGEND is the question or statement Lists organize the possible responses ( OL or UL ) implicit LABEL s provide an easy way to style in IE6 ... < li > < fieldset class = "radio" > < legend > I would prefer to be contacted by </ legend > < ul > < li >< label >< input type = "radio" name = "method" value = "email" /> email </ label ></ li > < li >< label >< input type = "radio" name = "method" value = "phone" /> phone </ label ></ li > </ ul > </ fieldset > </ li > ...
29. SIMPLE FORM: CONTACT US <form id="contact-form" action="#" method="post"> ... <li> <fieldset class="radio"> <legend>I would prefer to be contacted by</legend> <ul> <li><label><input type="radio" name="method" value="email" /> email</label></li> <li><label><input type="radio" name="method" value="phone" /> phone</label></li> </ul> </fieldset> </li> ... </form>
36. SIMPLE FORM: CONTACT US <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... < li class = "confirm" > < input type = "hidden" name = "mailing-list" value = "0" /> < label >< input type = "checkbox" name = "mailing-list" value = "1" /> Please add me to your mailing list </ label ></ li > ... </ol> <button type="submit">Go</button> </fieldset> </form> Confirmations a little CLASS ification goes a long way
37. SIMPLE FORM: CONTACT US <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... <li class="confirm"> <input type="hidden" name="mailing-list" value="0" /> <label><input type="checkbox" name="mailing-list" value="1" /> Please add me to your mailing list</label></li> ... </ol> <button type="submit">Go</button> </fieldset> </form>
38. SIMPLE FORM: CONTACT US .confirm label { display: block; float: none; margin-left: 125px; text-align: left; width: 270px; } <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... <li class="confirm"> <input type="hidden" name="mailing-list" value="0" /> <label><input type="checkbox" name="mailing-list" value="1" /> Please add me to your mailing list</label></li> ... </ol> <button type="submit">Go</button> </fieldset> </form>
39. SIMPLE FORM: CONTACT US .confirm { margin-bottom: 1.4em; } .radio label:after , .confirm label:after { content: ''; } <form id="contact-form" action="#" method="post"> <fieldset> <legend>Send us a message</legend> <ol> ... <li class="confirm"> <input type="hidden" name="mailing-list" value="0" /> <label><input type="checkbox" name="mailing-list" value="1" /> Please add me to your mailing list</label></li> ... </ol> <button type="submit">Go</button> </fieldset> </form>
42. SIMPLE FORM: SEARCH BOX POST vs. GET Search forms are traditionally GET requests to allow the action page (i.e. the results) to be bookmarkable. < form id = "search-form" action = "/action-page.php" method = "get" > <!-- the rest of our form will go here --> </ form >
43. SIMPLE FORM: SEARCH BOX You need something Sometimes a FIELDSET is unnecessary, but in XHTML, you need something to wrap the contents of a form <form id="search-form" action="/action-page.php" method="get"> <p> <!-- the rest of our form will go here --> <p> </form>
44. SIMPLE FORM: SEARCH BOX Easy-peasy <form id="search-form" action="/action-page.php" method="get"> <p> < label for = "search-query" > Search this site for </ label > < input type = "text" id = "search-query" name = "query" /> <p> </form>
45. SIMPLE FORM: SEARCH BOX It’s a BUTTON big shock, I know <form id="search-form" action="/action-page.php" method="get"> <p> <label for="search-query">Search this site for</label> <input type="text" id="search-query" name="query" /> < button type = "submit" > Go </ button > <p> </form>
46. SIMPLE FORM: SEARCH BOX <form id="search-form" action="/action-page.php" method="get"> <p> <label for="search-query">Search this site for</label> <input type="text" id="search-query" name="query" /> <button type="submit">Go</button> <p> </form> body { background: #54af44; font: 62.5% "Lucida Sans Unicode", "Lucida Grande", sans-serif; } ol, ul, p { font-size: 1.2em; line-height: 1.5; }
50. SIMPLE FORM: DATE SELECT Getting organized < fieldset class = "date" > <!-- the rest will go here --> </ fieldset >
51. SIMPLE FORM: DATE SELECT Not really a LABEL <fieldset class="date"> < legend > Post Date </ legend > <!-- the rest will go here --> </fieldset>
52. SIMPLE FORM: DATE SELECT Not just a SELECT we need some LABEL ing <fieldset class="date"> <legend>Post Date</legend> < ol > < li > < label for = "date-day" > Date </ label > < select id = "date-day" name = "day" > < option > 01 </ option > ... < option > 31 </ option > </ select > </ li > </ ol > </fieldset>
53. SIMPLE FORM: DATE SELECT And so on <fieldset class="date"> <legend>Post Date</legend> <ol> <li> <label for="date-day">Date</label> ... </li> < li > < label for = "date-month" > Month </ label > < select id = "date-month" name = "month" > < option value = "01" > January </ option > ... < option value = "12" > December </ option > </ select > </ li > </ ol > </ fieldset >
54. SIMPLE FORM: DATE SELECT And so forth <fieldset class="date"> <legend>Post Date</legend> <ol> <li> <label for="date-day">Date</label> ... </li> <li> <label for="date-month">Month</label> ... </li> < li > < label for = "date-year" > Year </ label > < select id = "date-year" name = "year" > < option > 2007 </ option > < option > 2008 </ option > </ select > </ li > </ol> </fieldset>
63. COMPLEX FORM: RELATED FIELDS Organization and coordination as with other elements, form components can have multiple CLASS ifications < fieldset class = "radio related" > < legend > < span > Confine results to </ span > </ legend > < ul > < li > <!-- year --> </ li > < li > <!-- month --> </ li > < li > <!-- range --> </ li > </ ul > </ fieldset >
64. COMPLEX FORM: RELATED FIELDS Basic implicit LABEL nothing shocking here <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> <li> < label > < input type = "radio" name = "confines" value = "year" /> within the last year </ label > </li> ... </ul> </fieldset>
65. COMPLEX FORM: RELATED FIELDS In a slight bending of the rules, implicit LABEL s can contain more than one form control in our case, a radio INPUT as well as a SELECT ion box <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> <li> <label><input type="radio" name="confines" value="year" /> within the last year</label> </li> <li> < label > < input type = "radio" name = "confines" value = "month" /> the month of < select name = "month" > < option value = "01" > January </ option > ... < option value = "12" > December </ option > </ select > </ label > </li> ... </ul> </fieldset>
66. COMPLEX FORM: RELATED FIELDS How do I code that?!? think about it... what are the relationships of the fields? <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> ... <li> < dl > < dt > <!-- radio will go here --> </ dt > < dd > <!-- related fields here --> </ dd > </ dl > </li> </ul> </fieldset>
67. COMPLEX FORM: RELATED FIELDS We know the first bit <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> ... <li> <dl> <dt> < label > < input type = "radio" name = "confines" value = "range" /> a monthly range </ label > </dt> <dd> <!-- related fields here --> </dd> </dl> </li> </ul> </fieldset>
68. COMPLEX FORM: RELATED FIELDS We need to organize this now <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> ... <li> <dl> <dt> <label><input type="radio" name="confines"... </dt> <dd> < ol > < li > <!-- start --> </ li > < li > <!-- end --> </ li > </ ol > </dd> </dl> </li> </ul> </fieldset>
69. COMPLEX FORM: RELATED FIELDS Simple explicit LABEL ... <dd> <ol> <li> < label for = "range-start" > from the start of </ label > < select id = "range-start" name = "range-start" > < option value = "2006-01" > January 2006 </ option > ... < option value = "2006-12" > December 2006 </ option > </ select > </li> <li> <!-- end --> </li> ... </ol> </dd> ...
70. COMPLEX FORM: RELATED FIELDS And again ... <dd> <ol> <li> <label for="range-start">from the start of</label> ... </li> <li> < label for = "range-end" > until the end of </ label > < select id = "range-end" name = "range-end" > < option value = "2006-01" > January 2006 </ option > ... < option value = "2006-12" > December 2006 </ option > </ select > </li> </ol> </dd> ...
71. COMPLEX FORM: RELATED FIELDS <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> <li> <label> <input type="radio" name="confines" value="year" /> within the last year</label> </li> <li> <label> <input type="radio" name="confines" value="month" /> the month of <select name="month"> <option value="01">January</option> ... </select> </label> </li> <li> <dl> <dt> <label> <input type="radio" name="confines" value="range" /> a monthly range </label> </dt> <dd> <ol> <li> <label for="range-start">from the start of</label> <select id="range-start" name="range-start"> <option value="2006-01">January 2006</option> ... </select> </li> <li> <label for="range-end">until the end of</label> <select id="range-end" name="range-end"> <option value="2006-01">January 2006</option> ... </select> </li> </ol> </dd> </dl> </li> </ul> </fieldset> Itʼs a lot of code...
72. COMPLEX FORM: RELATED FIELDS ...but the benefits are worth it Confine results to List of three items bullet Radio button (not checked) within the last year bullet Radio button (not checked) the month of Combo box January bullet Definition list of one item Radio button (not checked) a monthly range equals List of two items one: from the start of Combo box January 2006 two: until the end of Combo box January 2006 List end List end List end transcribed by Fangs
73. COMPLEX FORM: RELATED FIELDS <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> <li> <!-- year --> </li> <li> <!-- month --> </li> <li> <!-- range --> </li> </ul> </fieldset> /* We'll save some space and inherit styles from .radio */ form ol, form ul, form dl { list-style: none; margin: 0; padding: 0; } li ul, li ol { font-size: 1em; }
74. COMPLEX FORM: RELATED FIELDS <fieldset class="radio related"> <legend><span>Confine results to</span></legend> <ul> <li> <!-- year --> </li> <li> <!-- month --> </li> <li> <!-- range --> </li> </ul> </fieldset> .related li { clear: both; float: none; margin: 0 0 .5em; width: auto; } /* For IE to recover from a strange margin */ .related li { zoom: 1; }
79. MESSAGING: REQUIRED What is the * anyway? Well, it stands for something else and in HTML, the closest to that we have to convey that is the ABBR element. <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <p> Required fields are marked <abbr title = "required" > * </abbr> . </p> <ol> <li> <label for="contact-name"> Name < abbr title = "required" > * </ abbr > </label> <input type="text" id="contact-name" name="name" /> </li> ...
80. MESSAGING: REQUIRED If you want to go all-out, you can but that seems like overkill <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <p> Required fields are marked <em><abbr title = "required" > * </abbr></em>. </p> <ol> <li class = "required" > <label for="contact-name"> Name <em>< abbr title = "required" > * </ abbr ></em> </label> <input type="text" id="contact-name" name="name" /> </li> ...
90. MESSAGING: ERRORS How should we strongly emphasize even more important error advisories? How should we highlight the field? ... <li class = "error" > <label for="contact-email"> Email<abbr title="required">*</abbr> < strong class = "err" > You forgot to fill in your email </ strong > </label> <input type="text" id="contact-email" name="email" /> </li> ...
91. MESSAGING: ERRORS ... <li class="error"> <label for="contact-email"> Email<abbr title="required">*</abbr><strong class="err"> You forgot to fill in your email</strong> </label> <input type="text" id="contact-email" name="email" /> </li> ...
92. MESSAGING: ERRORS ... <li class="error"> <label for="contact-email"> Email<abbr title="required">*</abbr><strong class="err"> You forgot to fill in your email</strong> </label> <input type="text" id="contact-email" name="email" /> </li> ... strong.err { color: #ffdfdf; display: block; padding-left: 5px; text-align: left; }
94. MESSAGING: ERRORS ... <li class="error"> <label for="contact-email"> Email<abbr title="required">*</abbr><strong class="err"> You forgot to fill in your email</strong> </label> <input type="text" id="contact-email" name="email" /> </li> ... .error input { border: 2px solid #b00; background: #ffdfdf; } .error input:focus { background: #fff; }
95. MESSAGING: ERRORS How do we notify users of errors? It is best to be upfront about errors encountered and to say, in plain language, what the user needs to do to fix it and linking to the field with errors doesn't hurt <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> < div id = "errors" > < p > We encountered < strong > 1 error </ strong > while trying to process this form: </ p > < ol > < li > You forgot to include < a href = "#contact-email" > your email address </ a ></ li > </ ol > </ div > <p>Required fields are marked <abbr title="required">*</abbr>.</p> ...
96. MESSAGING: ERRORS <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <div id="errors"> <p>We encountered <strong>1 error</strong> while trying to process this form:</p> <ol> <li>You forgot to include <a href="#contact-email">your email address</a></li> </ol> </div> <p>Required fields are marked <abbr title="required">*</abbr>.</p> ...
97. MESSAGING: ERRORS <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <div id="errors"> <p>We encountered <strong>1 error</strong> while trying to process this form:</p> <ol> <li>You forgot to include <a href="#contact-email">your email address</a></li> </ol> </div> <p>Required fields are marked <abbr title="required">*</abbr>.</p> ... #errors { background: #ffdfdf; border: 2px solid #b00; color: #333; margin: .5em 0 1em; padding: 10px; }
98. MESSAGING: ERRORS <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <div id="errors"> <p>We encountered <strong>1 error</strong> while trying to process this form:</p> <ol> <li>You forgot to include <a href="#contact-email">your email address</a></li> </ol> </div> <p>Required fields are marked <abbr title="required">*</abbr>.</p> ... #errors p { margin: 0; padding: 0; } #errors ol { list-style: disc; margin: 0 0 0 20px; }
99. MESSAGING: ERRORS <form id="contact-form" action="test.php" method="get"> <fieldset> <legend>Send us a message</legend> <div id="errors"> <p>We encountered <strong>1 error</strong> while trying to process this form:</p> <ol> <li>You forgot to include <a href="#contact-email">your email address</a></li> </ol> </div> <p>Required fields are marked <abbr title="required">*</abbr>.</p> ... #errors a { color: #b00; }
100. PARTING ADVICE • treat forms like any other piece of (X)HTML • be aware of browser inconsistencies & make accommodations (when possible) • break a complex form into bite-size chunks • look for ways to provide richer meaning/a better experience • apply your CSS layout knowledge for the rest of the page to a form • don't over-complicate form design • learn to love forms