Tableless web design

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

Tableless web design (or tableless web layout) is a web design philosophy eschewing the use of HTML tables for page layout control purposes.[1] Instead of HTML tables, style sheet languages such as Cascading Style Sheets (CSS) are used to arrange elements and text on a web page.

The CSS1 specification was published in December 1996 by the W3C with the aim of improving web accessibility and emphasising the separation of presentational details in style sheets from semantic content in HTML documents. CSS2 in May 1998 (later revised in CSS 2.1 and CSS 2.2) extended CSS1 with facilities for positioning and table layout. Around the same time, in the late 1990s, as the dot-com boom led to a rapid growth in the "new media" of web page creation and design, there began a trend of using HTML tables, and their rows, columns and cells, to control the layout of whole web pages. This was due to several reasons:

  • the limitations at the time of CSS support in browsers;
  • the new web designers' lack of familiarity with the CSS standards;
  • the lack of knowledge of, or concern for the reasons (including HTML semantics and web accessibility) to use CSS instead of what was perceived as an easier way to quickly achieve the intended layouts, and
  • a new breed of WYSIWYG web design tools that encouraged this practice.

The advantages of restricting the use of HTML tables to their intended and semantic purpose include improved accessibility of the information to a wider variety of users, using a wide variety of user agents. There are bandwidth savings as large numbers of semantically meaningless <table>, <tr> and <td> tags are removed from dozens of pages leaving fewer, but more meaningful headings, paragraphs and lists. Layout instructions are transferred into site-wide CSS stylesheets, which can be downloaded once and cached for reuse while each visitor navigates the site. Sites may become more maintainable as the whole site can be restyled or re-branded in a single pass merely by altering the mark-up of the specific CSS, affecting every page which relies on that stylesheet. New HTML content can be added in such a way that consistent layout rules are immediately applied to it by the existing CSS without any further effort.

Some developers are now afraid to introduce a simple HTML table even where it makes good sense,[2] some erring by the overuse of span and div elements, perhaps even with table-like rules applied to them using CSS.[3]

Rationale

HTML was originally designed as a semantic markup language intended for sharing scientific documents and research papers online. Visual presentation was left up to the user. However, as the Internet expanded from the academic and research world into the mainstream in the mid-1990s, and became more media oriented, graphic designers sought ways to control the visual appearance of the Web pages presented to end users. To this end, tables and spacers (usually transparent single pixel .GIF images with explicitly specified width and height) have been used to create and maintain page layout.

This causes a number of problems. Many web pages were designed with tables nested within tables, resulting in large HTML documents that use more bandwidth than documents with simpler formatting. Furthermore, when a table-based layout is linearized, for example when being parsed by a screen reader or a search engine, the resulting order of the content can be somewhat jumbled and confusing.

In the late 1990s the first reasonably powerful WYSIWYG editors arrived on the market, which meant Web designers no longer needed a technical understanding of HTML to build web pages.[4] Such editors indirectly encourage extensive use of nested tables to position design elements. As designers edit their documents in these editors, unnecessary code and empty elements can be added to the document. Furthermore, unskilled designers may use tables more than required when using a WYSIWYG editor. This practice can lead to many tables nested within tables as well as tables with unnecessary rows and columns.

The use of graphic editors with slicing tools that output HTML and images directly also promote poor code with tables often having many rows of 1 pixel height or width. Sometimes many more lines of code are used to render content than the actual content itself.

As the dotcom boom receded in 2001 and the web development industry shrank, coders with more industry experience were in higher demand.[citation needed] In a large number of cases UI development was carried out by coders with greater knowledge of good coding practice.[citation needed] It was around this time that many became critical of messy coding practices and the idea of tableless design began to grow.[5][citation needed]

Cascading Style Sheets (CSS) were developed to improve the separation between design and content, and move back towards a semantic organization of content on the Web. The term "tableless design” implies the use of CSS rather than layout tables to position HTML elements on the page. HTML tables still have their legitimate place when presenting tabular information within web pages.[2]

Advantages

Accessibility

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Because of the Internet's rapid growth, expanding disability discrimination legislation, and the increasing use of mobile phones and PDAs, it is necessary for Web content to be made accessible to users operating a wide variety of devices. Tableless Web design considerably improves Web accessibility in this respect.

Screen readers and braille devices have fewer problems with tableless designs because they follow a logical structure. The same is true for search engine Web crawlers, the software agents that most web site publishers hope will find their pages, classify them accurately and so enable potential users to find them easily in appropriate searches.

As a result of the separation of design (CSS) and structure (HTML), it is also possible to provide different layouts for different devices, e.g. handhelds, mobile phones, etc. It is also possible to specify a different style sheet for print, e.g. to hide or modify the appearance of advertisements or navigation elements that are irrelevant and a nuisance in the printable version of the page.

The W3C's Web Content Accessibility Guidelines' guideline no. 3 states "use markup and style sheets and do so properly."[6] The guideline's checkpoint 3.3, a priority-2 checkpoint, says "use style sheets to control layout and presentation."[7]

Bandwidth savings

Tableless design produces web pages with fewer HTML tags used purely to position content. This normally means that the pages themselves become smaller to download. The philosophy implies that all the instructions regarding layout and positioning be moved into external style sheets. According to the basic capabilities of HTTP, as these rarely change and they apply in common to many web pages, they will be cached and reused after the first download. This further reduces bandwidth and download times across the site.[8][9]

Maintainability

Maintaining a website may require frequent changes, both small and large, to the visual style of a website, depending on the purpose of the site. Under table-based layout, the layout is part of the HTML itself. As such, without the aid of template-based visual editors such as HTML editors, changing the positional layout of elements on a whole site may require a great deal of effort, depending on the amount of repetitive changes required. Even employing sed or similar global find-and-replace utilities cannot alleviate the problem entirely.

In tableless layout using CSS, the layout information may reside in a CSS document. Because the layout information may be centralized, it is possible that these changes can be made quickly and globally by default. The HTML files themselves may not need to be adjusted when making layout changes.

Also, because the layout information may be stored externally to the HTML, it may be quite easy to add new content in a tableless design, whether modifying an existing page or adding a new page. By contrast, without such a design, the layout for each page may require a more time-consuming manual changing of each instance or use of global find-and-replace utilities. However site owners often want particular pages to be different from others on the site either for a short period or long term. This will often necessitate a separate style sheet to be developed for that page.

On the other hand, due to browser inconsistency and a particular web designer's implementation of tableless design, it may not be clear at first glance exactly how a tableless web page is constructed. While it is convenient to have markup language residing in a single CSS file, it can split layout logic unnecessarily. Browser inconsistencies can increase the risk of web pages failing to render properly which increases the need for maintainability.

The use of tables

On the one hand, because of the term "tableless web design", some have interpreted this design strategy as an unconditional repudiation of all tables in web design. This has caused some to avoid tables even when tables are appropriate. Using divisions to simulate a table for the display of tabular data is as much a design flaw as using tables to control graphic and page layout. Some sources clarify this distinction by using the more specific term "tableless web layout".[1]

On the other hand, using tables in web design, although most common, does not necessarily equate to using the table element defined in HTML 4.0. CSS also specifies a "table model" which allows the layout of tables to be applied to any element using the "display: table" CSS declaration.[10] One reason this technique is sometimes overlooked is the lack of support for the CSS table model in Internet Explorer versions earlier than 8.

See also

Notes and references

  1. 1.0 1.1 The term "tableless web design" refers to avoiding tables as a means of specifying general page or screen layout; they are a means for specifying and laying out tabular data Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.

External links