Progressive enhancement

Last updated
The order of progressive enhancement: HTML, CSS, and JavaScript. Progressive enhancement web design pyramid (HTML, CSS, JS).svg
The order of progressive enhancement: HTML, CSS, and JavaScript.
This article is accessible through pure HTML (first layer). Without styling (second layer) and scripts (third layer), the content is only 76 KB in size. Basic unstyled HTML.png
This article is accessible through pure HTML (first layer). Without styling (second layer) and scripts (third layer), the content is only 76 KB in size.

Progressive enhancement is a strategy in web design that puts emphasis on web content first, allowing everyone to access the basic content and functionality of a web page, while users with additional browser features or faster Internet access receive the enhanced version instead. This strategy speeds up loading and facilitates crawling by web search engines, as text on a page is loaded immediately through the HTML source code rather than having to wait for JavaScript to initiate and load the content subsequently, meaning content ready for consumption "out of the box" is served immediately, and not behind additional layers. [1] [2] [3]

Contents

This strategy involves separating the presentation semantics from the content, with presentation being implemented in one or more optional layers, activated based on aspects of the browser or Internet connection of the client. In practice, this means serving content through HTML, the "lowest common denominator" of web standards, and applying styling and animation through CSS to the technically possible extent, then applying further enhancements through JavaScript. [4] Deprecated Adobe Flash could be thought of as having shared the final spot with JavaScript while it was widely in use. [5] [6] Since web browsers can load site features to the extent supported rather than failing to load the entire site due to one error or missing feature in JavaScript, a progressively enhancing site is more stable and backwards compatible. [4]

History

"Progressive enhancement" was coined by Steven Champeon and Nick Finck at the SXSW Interactive conference on March 11, 2003, in Austin, [7] and through a series of articles for Webmonkey which were published between March and June 2003. [8]

Specific Cascading Style Sheets (CSS) techniques pertaining to flexibility of the page layout accommodating different screen resolutions is the concept associated with responsive web design approach. In 2012, net Magazine chose Progressive Enhancement as #1 on its list of Top Web Design Trends for 2012 (responsive design was #2). [9] Google has encouraged the adoption of progressive enhancement to help "our systems (and a wider range of browsers) see usable content and basic functionality when certain web design features are not yet supported". [10]

Introduction

The strategy is an evolution of a previous web design strategy known as graceful degradation, wherein Web pages were designed for the latest browsers first, but then made to work well in older versions of browser software. [11] [3] Graceful degradation aims to allow a page to "degrade" – to remain presentable and accessible even if certain technologies expected by the design are absent. [12]

In progressive enhancement the strategy is deliberately reversed: The web content is created with a markup document, geared towards the lowest common denominator of browser software functionality. [13] [8] [12] If content should be revealed interactively through JavaScript, such as a collapsible navigation menu, this would be by default and only first hidden by JavaScript itself. [3] The developer adds all desired functionality to the presentation and behavior of the page, using modern CSS, Scalable Vector Graphics (SVG), or JavaScript. [14]

Background

The progressive enhancement approach is derived from Champeon's early experience (c.1993–1994) with Standard Generalized Markup Language (SGML), predating HTML and other Web presentation languages. [8]

Writing content with semantic markup and considering the presentation of the content separately, rather than being embedded in the markup itself, is a concept referred to as the rule of separation of presentation and content [15] [16] . Champeon expressed a hope that, since web browsers provide a default presentation style for HTML content, this would result in websites with their content written as semantic HTML, leaving presentation choice to the web browser. [8] However, the needs of web designers led to the HTML standard being extended with hardcoded features that allowed HTML content to prescribe specific styles, and taking away this option from consumers and their web browsers. [8] These features forced publishers to choose between adopting a new disruptive technologies or allowing content to remain accessible to audiences that used other browsers, a dilemma between design and compatibility. [8] [17] [12] During the 1990s, an increasing number of websites would not work in anything but the latest of popular browsers. [12]

This trend reversed after the 1990s, once CSS was widely supported, [8] [17] through grassroots educational efforts (from Eric Costello, Owen Briggs, Dave Shea, and others) showing Web designers how to use CSS for layout purposes.[ citation needed ]

Core principles

The progressive enhancement strategy consists of the following core principles: [8]

Support and adoption

Benefits

Accessibility, compatibility, and outreach

Web pages created according to the principles of progressive enhancement are by their nature more accessible, [27] backwards compatible, [6] and outreaching, because the strategy demands that basic content always be available, not obstructed by commonly unsupported or scripting that may be easily disabled, unsupported (e.g. by text-based web browsers), or blocked on computers in sensitive environments. [14] Additionally, the sparse markup principle makes it easier for tools that read content aloud to find that content. It is unclear as to how well progressive enhancement sites work with older tools designed to deal with table layouts, "tag soup", and the like.[ citation needed ]

Speed, efficiency, and user control

The client (computing) is able to select which parts of a page to download beyond basic HTML (e.g. styling, images, etc.), and can opt only to download parts necessary for desired usage to speed up loading and reduce bandwidth and power consumption. For example, a client may choose to only download basic HTML, without loading style sheets, scripts, and media (e.g. images), due to low internet speeds caused by geographical location, poor cellular signal, or throttled speed due to exhausted high-speed data plan. This also reduces bandwidth consumption on the server side.

In comparison, pages whose initial content is loaded through AJAX require the client to inefficiently run JavaScript to download and view page content, rather than downloading the content immediately.

Search engine optimization (SEO)

Improved results with respect to search engine optimization (SEO) is another side effect of a progressive enhancement-based Web design strategy. Because the basic content is always accessible to search engine spiders, pages built with progressive enhancement methods avoid problems that may hinder search engine indexing, whereas having to render the basic page content through JavaScript execution would make crawling slow and inefficient. [27] [30]

Criticism and responses

Some skeptics, such as Garret Dimon, have expressed their concern that progressive enhancement is not workable in situations that rely heavily on JavaScript to achieve certain user interface presentations or behaviors. [31] Laurie Gray (Information Architect at KnowledgeStorm [32] ) countered with the point that informational pages should be coded using progressive enhancement in order to be indexed by search engine spiders. [33] Geoff Stearns (author of SWFObject, a popular Flash application) argued that Flash-heavy pages should be coded using progressive enhancement. [34]

Designers Douglas Bowman and Bob Stein expressed doubts concerning the principle of the separation of content and presentation in absolute terms, pushing instead for a realistic recognition that the two are inextricably linked. [35] [15]

See also

Related Research Articles

<span class="mw-page-title-main">HTML</span> HyperText Markup Language

HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript.

Web design encompasses many different skills and disciplines in the production and maintenance of websites. The different areas of web design include web graphic design; user interface design ; authoring, including standardised code and proprietary software; user experience design ; and search engine optimization. Often many individuals will work in teams covering different aspects of the design process, although some designers will cover them all. The term "web design" is normally used to describe the design process relating to the front-end design of a website including writing markup. Web design partially overlaps web engineering in the broader scope of web development. Web designers are expected to have an awareness of usability and be up to date with web accessibility guidelines.

A HTML editor is a program used for editing HTML, the markup of a web page. Although the HTML markup in a web page can be controlled with any text editor, specialized HTML editors can offer convenience, added functionality, and organisation. For example, many HTML editors handle not only HTML, but also related technologies such as CSS, XML and JavaScript or ECMAScript. In some cases they also manage communication with remote web servers via FTP and WebDAV, and version control systems such as Subversion or Git. Many word processing, graphic design and page layout programs that are not dedicated to web design, such as Microsoft Word or Quark XPress, also have the ability to function as HTML editors.

Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.

Web standards are the formal, non-proprietary standards and other technical specifications that define and describe aspects of the World Wide Web. In recent years, the term has been more frequently associated with the trend of endorsing a set of standardized best practices for building web sites, and a philosophy of web design and development that includes those methods.

The Web Standards Project (WaSP) was a group of professional web developers dedicated to disseminating and encouraging the use of the web standards recommended by the World Wide Web Consortium, along with other groups and standards bodies.

Tableless web design is a web design method that avoids the use of HTML tables for page layout control purposes. Instead of HTML tables, style sheet languages such as Cascading Style Sheets (CSS) are used to arrange elements and text on a web page.

In HTML, <div> and <span> tags are elements used to define parts of a document, so that they are identifiable when a unique classification is necessary. Where other HTML elements such as <p> (paragraph), <em> (emphasis), and so on, accurately represent the semantics of the content, the additional use of <span> and <div> tags leads to better accessibility for readers and easier maintainability for authors. Where no existing HTML element is applicable, <span> and <div> can valuably represent parts of a document so that HTML attributes such as class, id, lang, or dir can be applied.

Pagination, also known as paging, is the process of dividing a document into discrete pages, either electronic pages or printed pages.

Unobtrusive JavaScript is a general approach to the use of client-side JavaScript in web pages so that if JavaScript features are partially or fully absent in a user's web browser, then the user notices as little as possible any lack of the web page's JavaScript functionality. The term has been used by different technical writers to emphasize different aspects of front-end web development. For some writers, the term has been understood more generally to refer to separation of functionality from a web page's structure/content and presentation, while other writers have used the term more precisely to refer to the use of progressive enhancement to support user agents that lack certain JavaScript functionality and users that have disabled JavaScript. Following the latter definition, unobtrusive JavaScript contributes to web accessibility insofar as it helps ensure that all users—whatever their computing platform—get roughly equal access to all of the web page's information and functionality.

<span class="mw-page-title-main">Flash of unstyled content</span> Phenomenon in web browsers

A flash of unstyled content is an instance where a web page appears briefly with the browser's default styles prior to loading an external CSS stylesheet, due to the web browser engine rendering the page before all information is retrieved. The page corrects itself as soon as the style rules are loaded and applied; however, the shift may be distracting. Related problems include flash of invisible text and flash of faux text.

Web Accessibility Initiative – Accessible Rich Internet Applications (WAI-ARIA) is a technical specification published by the World Wide Web Consortium (W3C) that specifies how to increase the accessibility of web pages, in particular, dynamic content, and user interface components developed with Ajax, HTML, JavaScript, and related technologies.

<span class="mw-page-title-main">Web page</span> Content provided by a website

A web page is a document on the World Wide Web "with its own address". Web pages are delivered by a web server to the user and displayed in a web browser to act as a "retrieval unit" for the information stored within it. A website consists of many web pages linked together under a common domain name. The name "web page" is a metaphor of paper pages bound together into a book.

ZK is an open-source Ajax Web application framework, written in Java, that enables creation of graphical user interfaces for Web applications with little required programming knowledge.

<span class="mw-page-title-main">CSS</span> Style sheet language

Cascading Style Sheets (CSS) is a style sheet language used for specifying the presentation and styling of a document written in a markup language such as HTML or XML. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript.

The Web platform is a collection of technologies developed as open standards by the World Wide Web Consortium and other standardization bodies such as the Web Hypertext Application Technology Working Group, the Unicode Consortium, the Internet Engineering Task Force, and Ecma International. It is the umbrella term introduced by the World Wide Web Consortium, and in 2011 it was defined as "a platform for innovation, consolidation and cost efficiencies" by W3C CEO Jeff Jaffe. Being built on The evergreen Web has allowed for the addition of new capabilities while addressing security and privacy risks. Additionally, developers are enabled to build interoperable content on a cohesive platform.

<span class="mw-page-title-main">Adaptive web design</span> Display a web page to fit a certain device and screen size

Adaptive web design (AWD) promotes the creation of multiple versions of a web page to better fit the user's device, as opposed to a single static page which loads the same on all devices or a single page which reorders and resizes content responsively based on the device/screen size/browser of the user.

Front-end web development is the development of the graphical user interface of a website through the use of HTML, CSS, and JavaScript so users can view and interact with that website.

HtmlUnit is a headless web browser written in Java. It allows high-level manipulation of websites from other Java code, including filling and submitting forms and clicking hyperlinks. It also provides access to the structure and the details within received web pages. HtmlUnit emulates parts of browser behaviour including the lower-level aspects of TCP/IP and HTTP. A sequence such as getPage(url), getLinkWith("Click here"), click allows a user to navigate through hypertext and obtain web pages that include HTML, JavaScript, Ajax and cookies. This headless browser can deal with HTTPS security, basic HTTP authentication, automatic page redirection and other HTTP headers. It allows Java test code to examine returned pages either as text, an XML DOM, or as collections of forms, tables, and links.

The following outline is provided as an overview of and topical guide to web design and web development, two very related fields:

References

  1. "Progressive enhancement is faster". jakearchibald.com. 2013-09-03. Retrieved 2021-11-11.
  2. Tse, Tiffany (2017-02-15). "What is Progressive Enhancement and Why Should You Care?" . Retrieved 2023-09-28.
  3. 1 2 3 Olsson, Tommy (2007-02-06). "Graceful Degradation & Progressive Enhancement". The Art of Accessibility. Accessites.org. Archived from the original on 2012-03-04. Retrieved 2023-09-28.
  4. 1 2 van der Sluis, Bobby (2005-04-19). "Ten good practices for writing JavaScript in 2005". Archived from the original on 2008-07-04. Retrieved April 14, 2006.
  5. Mills, Chris (8 July 2011). "Graceful degradation versus progressive enhancement". World Wide Web Consortium . Retrieved 2020-08-13.
  6. 1 2 Nyman, Robert (2006-03-01). "What is Accessibility?" . Retrieved April 14, 2006.
  7. Steven Champeon; Nick Finck (2003-03-11). "Inclusive Web Design for the Future (SxSWi presentation)". Archived from the original on 2014-11-08 via South by Southwest.
  8. 1 2 3 4 5 6 7 8 Champeon, Steve (2003-03-21). "Progressive Enhancement and the Future of Web Design". Webmonkey . Retrieved 2023-09-28.
  9. "15 top web design and development trends for 2012". Creative Bloq. net. January 9, 2012. Archived from the original on 2017-08-23.
  10. Pierre Far (2014), Updating our technical Webmaster Guidelines, Webmaster Central Blog
  11. 1 2 Gustafson, Aaron (2008-10-07). "Understanding Progressive Enhancement". A List Apart . Retrieved 2023-09-28.
  12. 1 2 3 4 5 Koechley, Nate (2006-02-13). "Graded Browser Support". Yahoo! Developer Network. Archived from the original on 2006-04-14.
  13. "101 Search Engine Optimization Tips". www.meta4creations.com. Retrieved 2016-04-14. Progressive Enhancement […] means [to] build your website starting with the lowest common denominator browsers in mind.
  14. 1 2 3 James Edwards; Cameron Adams (2006-03-07). "Script Smarter: Quality JavaScript from Scratch". SitePoint . Retrieved April 14, 2006.
  15. 1 2 Stein, Bob (2000-11-17). "Separation Anxiety: The Myth of the Separation of Style from Content". A List Apart . Retrieved 2023-09-28.
  16. "Separation: The Web Designer's Dilemma". A List Apart . 14 May 2004. Retrieved 24 May 2017.
  17. 1 2 3 Malicoat, Todd (2003-08-23). "Form vs. Function in Site Design". SEO Today. Archived from the original on 2003-08-29. Retrieved April 14, 2006.
  18. Wilkinson, Jim (2003), Progressive Enhancement - CSS Discuss Archived 2016-03-09 at the Wayback Machine
  19. Jeremy Keith's Adactio blog (2005), Progressive Enhancement with Ajax
  20. Keith, Jeremy (2006-06-20). "Behavioral Separation". A List Apart . Retrieved 2023-09-28.
  21. Gustafson, Aaron (2007-03-27). "Ruining the User Experience". A List Apart . Retrieved 2023-09-28.
  22. Gustafson, Aaron (2008-10-22). "Progressive Enhancement with CSS". A List Apart . Retrieved 2023-09-28.
  23. Gustafson, Aaron (2008-11-04). "Progressive Enhancement with JavaScript". A List Apart . Retrieved 2023-09-28.
  24. Lawson, Bruce. "An interview with Dave Shea, the CSS Zen Gardener". DMXzone.com. Archived from the original on 2007-06-08. Retrieved 2007-06-05.
  25. "Acid Test Results on Popular Browser". SciActive. Archived from the original on 2008-05-05. Retrieved 2008-05-05. The Acid 3 test is a work in progress and will be updated when The Web Standards Project releases the final version of the test.
  26. Steven G. Chipman (2005), New Skool DOM Scripting
  27. 1 2 3 Heilmann, Chris (2005-02-22). "Double Vision – Give the Browsers CSS They Can Digest". Developer Shed. Archived from the original on 2006-07-20. Retrieved 2017-07-06.
  28. "Seven Accessibility Mistakes (Part 1)". Digital Web Magazine. 2006-04-12. Archived from the original on 2006-04-12. Retrieved April 14, 2006.{{cite web}}: CS1 maint: unfit URL (link)
  29. Jehl, Scott (23 September 2008). "Test Driven Progressive Enhancement". A List Apart. Retrieved 27 October 2009.
  30. Spencer, Stephan (2007-09-25). "PE is good for SEO". Searchlight - CNET News. Archived from the original on 2011-09-10.
  31. Dimon, Garret (2005-08-29). "The Reality of Progressive Enhancement". Archived from the original on 2007-03-17.
  32. "IA Summit 2006: Speaker Biographies". ASIS&T. Archived from the original on 2006-04-17.
  33. Gray, Laurie (2006-03-27). "Web 2.0 and SEO?". Association for Information Science and Technology. Archived from the original on 2006-04-17.
  34. Stearns, Geoff (2006-02-27). "Using alternate content as content in Flash". deconcept. Retrieved 2023-09-28.
  35. Bowman, Douglas (2003-10-14). "Are they really separated?". Stopdesign.com. Archived from the original on 2006-03-28. Retrieved 2006-04-14.

Further reading