04 Layout Demonstration

Going over how everything works does not mean you understand it. This demonstration will help you understand how to lay out a page. It explains step by step how to lay out a page using no floats, and then explains how to use floats to create the same page. It assumes familiarity with the information contained in these other pages in this section, and with the previous sections:

The Document’s Default Behavior

In the first homework assignment you marked up content using heads <h1><h6> and paragraphs <p>, added links <a> and images<img>, and grouped certain content together using the generic <div> or the more semantic HTML5 tags like <header>, <nav>, <section>, <article>, <figure> and <figcaption>.

At this time you did not nest too many tags inside of other tags, but know that every tag you created was already nested as a child of the body tag. As you develop the layout, you will increasingly nest tags inside of one another, usually to define and group an area of the layout, like the header, right column, main content, navigation or footer.

When you look at the first assignment, you see the browser’s default style at work. The content vertically lines up, one below another, while the text flows left to right.

To better understand this structure, change the embedded style included in the HTML5 template, which looks like this:

<style type="text/css">
.example {
}
</style>

To an embedded style that puts an outline or border on all elements, like this:

<style type="text/css">
	body, section, header, nav, article, p, h1, h2, footer, nav, figure, figcaption { 
	outline: 2px solid red;
}
a, img, span, strong { 
	border: 2px solid green;
}
</style>

A red outline is put on the elements that are displayed according to the block mode and a green border is put on the elements that are displayed according to the inline mode.
example with borders

Each element of the assignment now has an outline or border.

Take a moment and explore the way the red outlined block elements stack below one another. Each element’s width extends all the way out to the parent by default.

Inline elements with green borders styles the content (type) in block elements, flowing from insertion point to the end of the box. It then start over on the next line. Not all languages flow horizontally or left to right, though english does, so we can say that type starts left and flows horizontally.

The other display modes besides block and inline are tables, which are not to be used for layout purposes, and the absolute display mode, which completely removes elements from the document flow.

Styling the Elements

I use an embedded style sheet for this example, but you should use an external style sheet. Because the rules act at a distance, you need selectors placed in front of the rules to target the elements.

The best selectors to use are type selectors, that select the element by its type, i.e. p for selecting all paragraphs. You can combine them to get more specific, like article div p, which targets only those paragraphs in the div in the article. If that doesn’t work, you can use the pseudo class selectors like :nth-child(N) or use class selectors if you want to target certain elements, but avoid using ids, as they are much stronger than classes and tend to dominate the cascade hierarchy.

Select each of the elements in the document and change the background color to know that you have successfully targeted that element with a CSS rule.

Altering the Default Layout Order

The block elements are like a child stacking playing blocks one on top of the other, only upside down, starting from the top with one box below the other. This is the normal document flow mode, and it is similar to how a word processor works. The difficulty of laying out a document using the normal document flow is that you have to build your way to every part of the document. The benefit is that if one thing changes, everything else adapts, if it’s done right.

Most Design students layout their documents using Indesign (Illustrator, or even Photoshop). The activity of creating and moving design elements where you want them is what layout is all about. Forget the normal document flow! The absolute display mode is similar to the layout mode of Indesign, but be careful. The web is a much more flexible environment than print, and the layout has to accommodate that. You need to be judicious in the way you use absolute positioning.

The flexibility of the web as a medium means the layout is much more likely to be determined by the normal document flow, whose default behavior we’ve just looked at, than the rigid absolute positioning used for print. This means that you can’t just pick up any item and move it to where it looks best. Instead, you have to figure out how to best position it where you want, using all of the previous elements in the normal document flow. This is possible with planning. That’s why the emphasis on the creative process with thumbnails, mood boards, wireframes and a Photoshop comp before starting to code the layout.
wireframe

Yes, there is not much spontaneity in coding the layout, but then, there is little spontaneity in prepping an Indesign document for print. The creativity and spontaneity of web design happens in the early planning stages. After that it’s mostly creative problem solving as you try to execute the layout. You are ahead of the game if you can see this as a puzzle to be solved.

Homework Assignment Not Using Floats

The following step by step tutorial is meant to explain the homework assignment and uses the techniques explained in the Beyond Floats article.

You start by opening up an HTML5 template and pasting into a blank document. Paste in the CSS reset at the beginning of the style tags in the head. This prepares your document for coding.

Setting Up the Page

While we want the page to center in the window, if the window becomes too wide, it looks kind of funny, so we put in a wrapper div with a max-width: 1300px to keep the page from centering when the window gets wider than that. It’s tradition to call that first div “wrapper,” though you could just as easily select it with the selector body>div, which selects any immediate child div tags of the body tag.

<div class="wrapper">

with the style being:

.wrapper {
	max-width: 1300px;
}

If some of your pages have enough content on them that they force a scroll bar, the entire content shifts 8 pixels to the left. The web site then moves to the left as you move from a page that does not require a scroll bar to one that does and vice versa. If that annoys you, force a vertical scroll bar to appear by making the page 1 pixel more than the height of the window:

html {
	min-height: 100%;
	margin-bottom: 1px;
}

This page is long enough to force a vertical scroll bar, so it’s not an issue, but if you were to use this technique on your web site, it very well might be an issue.

Next comes section tag to create the actual page for us. We want to center the page inside of the wrapper div, so we need to specify its width (960px) and set the left and right margins to auto. I set the background color for the page to middle grey, create a margin on top to push the header element down 70px, and finally, set the positioning to relative, so that any absolute positioning will be in relation to the page and not the body.

section { 
	width: 960px;
	margin: 0 auto;
	background: #888;
	padding-top: 90px;
	position: relative;
}

The first element is the header. This is the bar with the name and picture on it. The position of the bar is taken care of by the padding-top (90px) of the section element. The width is a little tricky. I want to put a shadow on the header element (shadow 1), but do not want the shadow to bleed out over the right edge of the page. The solution is to shorten the header to just 930px so that the shadow looks good. Had I not restricted the width of the element it would have expand to 100% of the parent window, and the shadow would have fallen outside of the header, and the page as well.

Nested inside the header is div that is given a width (848px) plus padding-left (112px) that equals 960px, the same width as the page. Because the div comes after the header in the way the computer reads the page, it is drawn on top. The HTML5 code for the header is:

<header class="shadow_1"> 
	<div class="">
		<h1>Piet Mondrian</h1> 
		<figure class="shadow_2">
			<img src="images/Mondrian.jpg" alt="Portrait of Piet Mondriaan" />
		</figure> 
	</div>
</header> 

The CSS for the header and div is:

header {
	width: 930px;
}
header div {
	height: 90px;
	width: 848px;
	background: #eee;
	outline: 1px solid black;
	padding: 20px 0 0 112px;
	position: relative;
}

Horizontal Layout Strategies: Absolute Position

Since the vertical relation between boxes is pretty much taken care of, most of the strategies concern how to place boxes horizontally next to one another. The relation between name and the picture provide us with an opportunity for using one of these strategies. I could choose to float the name to the left. That would put the picture on the right next to the name. I could also change the display from the block to inline, and vertically center the two, but I use absolute positioning instead.

The h1 element falls into place because of the padding added to the parent. As you can see, the header div has 20px of padding added to the top and 120px of padding added to the left padding: 20px 0 0 112px;.

I then apply absolute positioning to the figure that holds the picture. The figure no longer occupies any space in the document flow and floats above that layer by default. I’m free to move the figure up 70px, which is specified as top: −70px, and either 640px to the left or 40px to the right of the parent element. (640px + 280px (width of the figure) + 40px = 960px). It does not matter whether I go from the left or right side of the parent element since its width is fixed.

header h1 {
	color: #000;
	font-family: 'Anton', serif;
	font-size: 48px;
	font-style: normal;
	font-weight: 400;
	letter-spacing: 0.108em;
	word-spacing: 0em;
	line-height: 1.2;
}
header figure { 
	position: absolute;
	height: 260px;
	width: 280px;
	top: -70px;
	left: 640px;
}

Judicious use of Absolute Position

I’ll also use absolute positioning to horizontally layout the aside, and nav elements. The potential problem this creates is a lack of flexibility, so I have to be careful, and be prepared to adjust things manually if there are changes. Some problems are avoided by using it only for horizontal placement, but I still need to be careful. Additional links would require a larger image or more space to push down the text box, for example, otherwise the navigation would overlap. This is the HTML with the content removed:

<nav> 
	<h2 class="shadow_2">WORK
	</h2>			
	<ul> 
		<li><a href="#">… </a></li> 
		<li><a href="#">…</a></li> 	<li><a href="#"> …</a></li> 
		<li><a href="#">…</a></li> 
	</ul> 
</nav> 
<aside>
	<figure>…</figure> 
	<figure>…</figure> 
	<figure>…</figure> 
	<figure>…</figure> 
</aside>

The nav is positioned absolutely to the right (0px) with a top margin of 130px and a right margin of 80px. This removes it from the document flow and positions it below the picture. Adding padding moves it down and over to the left, correctly placing it according to the comp. I could just as well have positioned it from the left side of the document. Flexibility is increased by not invoking absolute positioning for vertical positioning (by using top:), leaving that up to the document flow. That would have locked in the vertical position of the navigation to the page, causing a problem if I were to change the height of the header.

The navigation is targeted by three classes, first the anchor itself, which is made to act like a block so it will act like a box, the second is a:hover, which changes the style when you roll over, and lastly a:active, which changes the style when you click on the button.

nav {
	position: absolute;
	right: 0px;
	width: 120px;
	height: 140px;
	padding: 40px;
	margin: 130px 80px 0 0;
	background: #bbb;
}
nav a {
	display: block;
	width: 100px;
	height: 25px;
	text-decoration: none;
	background: #ccc;
	padding: 5px 10px;
	margin: 3px 0;
	color: #333;
}
nav a:hover {
	text-decoration: none;
	background: #eee;
	color: #000;
}
nav a:active {
	text-decoration: none;
	background: #fcc;
	color: #000;
}

Though the aside has no width, the figure that make up its content is 200px in total (160px for the figure and 40px for the left margin). Giving the article a left margin of 200px and a padding of 40px creates a place in the layout for the article.

The article content has a width of 960px −80px −200px, or 680px. Because the navigation is absolutely placed you have be aware of keeping content out of its way. This is the downside of absolute positioning, but it’s taken care of in this layout by the large picture in the figure tag.

<article> 
	<figure>…</figure>
	<div>
		<div class="column1">
			<h2 class="shadow_2">EXPERIENCE</h2>
			<p>…</p> 
		</div>
		<div class="column2">
			<p>…</p> 
			<p>…</p> 
			<p>…</p> 
		</div>		
	</div>
</article>

The CSS for these elements is:

aside {
	position: absolute;
}
aside figure {
	width: 160px;
	height: 145px;
	margin: 40px 0 40px 40px;
}
article {
	padding: 40px;
	margin-left: 200px;
}
article > figure{
	width: 360px;
	height: 310px;
}

Horizontal Layout Strategies: Table-Cell

There is no need to go over absolute positioning once again, and so I use table-cell to position the columns. The enclosing div has a 40px margin on top that separates it from the figure above and a background of #ccc. The two columns are layer out horizontally by divs whose display has been changed from the default block to table-cell. Here is the CSS:

article div{
	margin-top: 50px;
	text-align: left;
	width: 680px;
	background: #ccc;
}
#column1 {
	line-height: 1.2;
	display: table-cell;
	Width: 240px;
	padding: 40px 40px 40px 60px;
}
#column2 {
	line-height: 1.2;
	display: table-cell;
	Width: 240px;
	padding: 40px 60px 40px 40px;
}

Horizontal Layout Strategies: Relative Positioning

The headline on the navigation and the article use relative positioning, but with a trick. Relative positioning leaves a space in the document flow. By creating a negative margin, its possible to erase that space, which makes it possible to insert an element in the document flow without it taking up its normal space. This is the case with the headline, which is located above the insertion point by 60px. I set it for the navigation, but that turned out to be slightly off for the column, so I had to adjust that with two declarations. This is a useful trick if you want to include an aside that stays with the main text while you are editing it, for example.

nav h2, article h2{
	position: relative;
	top: -60px;
	left: -30px;
	height: 30px;
	width: 140px;
	margin-bottom: -40px;
	padding: 8px 10px 10px;
	font-family: 'Anton', serif;
	font-size: 24px;
	font-style: normal;
	font-weight: 400;
	letter-spacing: 0.108em;
	background: #ddd;
}
article h2 {
	margin-bottom: -30px;
}

The Footer

The footer only contains a link to the validator. The width is specified as 100%, which is the fill size of the section. The HTML is:

<footer> 
		<a href="http://validator.w3.org/check?uri=referer"> Validate your page.</a> 
</footer> 

and the CSS is:

footer a{
display: block;
width: 100%;
padding: 5px 0;
text-decoration: none;
text-align: center;
color: #444;
background: #ddd;
}
footer a:hover{
background: #222;
color: #ddd
}

CSS3 Finishing Touches

Two shadows styles are added to any element that includes the following classes:

/*css3 effects*/
.shadow_1 {
	box-shadow: 14px 14px 26px #000000;
}
.shadow_2 {
	box-shadow: 0px 14px 26px #000;
}

You can look up the finished file.

Homework Assignment Using Floats

Floats are used to put boxes side by side which does not happen in either the header or the footer, so we only change everything in between. The page is divided into three columns: the aside, the article and the nav and the main content has two columns. Relative positioning is no longer need and is removed from the section and it gets overflow: auto; instead, to force the parent to recognize its floated children, a trick discussed in floating Layouts.

If you look at the HTML, you can see a few changes. The nav is now inside of the article and the h2 is now before the first column in the div.

<aside></aside>
<article> 
	<nav> </nav> 
	<figure></figure>
	<div>
		<h2 class="shadow_2"></h2>
		<div class="column1"></div>
		<div class="column2"></div>
	</div>
</article>

The aside and the article are floated left. This places the article to the right of the aside. There is no need for the 200px left margin on the article. As there is no need to change the figure in the aside and article, I do not list them in the CSS below:

aside {
	float: left;
}
article {
	padding: 40px;
}
nav {
	float: right;
	right: 0px;
	width: 120px;
	padding: 30px 40px 20px;
	margin: 95px 40px 0 0;
	background: #bbb;
}

The nav and the picture are children of the article. Floating the nav to the right places the picture to the left of the article. The margins and padding of the nav are updated to place it in the same place.

As long as the combined total width does not exceed the width of the containers, the elements will float next to one another: 200px for the aside, the plus the 550px of the article (260px for the figure (plus 80px margin) and 120px (plus 50px padding and 40px margin) for the nav) equals 750px, far less than the 960px of the section.

The div that follows the is given a clear: right, forcing it to position itself under the nav. That way it will be responsive and move down if additional links are added. This was not possible using the absolute positioning method. Chances are, however, that the layout would require fixing if that were to happen, so the difference is not so great from the work required to facilitate the absolutely positioned layout.

The Challenge with Floats

I also want to float the two columns, but ran into a problem with the h2 header. It got clipped by the floated column, but when I moved it to the div, it still got cut off because of the overflow: auto;. For that reason, an older solution to the problem was used to force the parent to recognize the floated children, using the pseudo object div:after to create an object after the last column that can be cleared using CSS alone. Clearing the last child forces the parent to recognize all of the children. Here is the CSS:

article div:after {
	content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

What this pseudo element does is place a period after the article div. It then forces the period to display like a block element instead of the inline element that it is, and gives it height: 0; so it does not actually change the document flow. It then clears the floating children, which is the reason we are doing all of this. That is another way that the parent element can recognize its children. The final declaration makes sure that the period’s visibility remains hidden. OK, that’s a lot to comprehend for a technique that has been superseded by the overflow: auto; method, but its good to know that it’s still useful when overflow does not work. The rest of the CSS looks like this:

article div{
	clear: right;
	margin-top: 50px;
	text-align: left;
	line-height: 1.2;
	width: 680px;
	background: #ccc;
}
#column1 {
	float: left;
	Width: 240px;
	padding: 0px 40px 40px 60px;
}
#column2 {
	Width: 240px;
	padding: 0px 60px 40px 40px;
}

The first column is floated to the left and the second column appears to the right of it. All that’s left to do is to align the h2 header for both the nav and the div. Because both of them are in the selector of the h2 in the div selector has to be further specified as article div h2{}.

nav h2, article h2{
	position: relative;
	top: -55px;
	left: -30px;
	height: 30px;
	width: 140px;
	margin-bottom: -40px;
	padding: 8px 10px 10px;
	font-family: 'Anton', serif;
	font-size: 24px;
	font-style: normal;
	font-weight: 400;
	letter-spacing: 0.108em;
	background: #ddd;
}
article div h2 {
	top: -25px;
	left: 30px;
	width: 140px;
}

The footer and the shadows are the same. You can look up the finished file.

04 The Layout Modes

Learning the traditional layout modes developed for CSS2.1.1 offers several advantages. Firstly, they provide a structured approach, ensuring that you begin with a solid foundation. Secondly, they serve as essential tools for securing the layout through manual or mechanical means. While newer layout strategies automate many aspects, they do not replace these fundamental tools but rather enhance their capabilities, making responsible layout easier and more automated. Moreover, many newer CSS features aim to expand the power of CSS to automate layout, allowing designers to maintain better control over changes in size. Additionally, some features facilitate data dumps, as designing for variable content with the same parameters becomes increasingly challenging.

Layout in CSS 2.1.1

CSS 2.1 has four layout modes that can be strategically used, in addition to the ubiquitous floats. They are block layout, designed for laying out documents, inline layout, designed for laying out text, table layout, designed for laying out data in tabular format and positioned layout, designed for very explicit positioning without much regard for other elements in the document. Floats were originally applied to pictures so that they could be floated to the right or left and text would wrap around them. Both tables and floats have been used by web designers to create layouts for which they were never intended. Their use for layout is no longer necessary. Tables were replaced by floats in 2007 and floats were replaced by Flex and Grid in 2017. CSS layout has been transformed by the release of multicolumn, flexbox and grid. These will be discussed separately.

Many layouts require multiple strategies at once. This means understanding all of the strategies is the only strategy. If each strategy can be considered a tool, you need all of the tools to build a responsible web page.

The Box Model

box model

The box model is central to understanding how to do layout with CSS. Every element is a content box with specific properties; padding, border and margin, in addition to all the other layout properties, like position, width, height, display, and so on. Elements (or boxes) grow to fit the content.

Default Behavior

The default setting for the box properties is no height and width set at 100% of the parent box. By default, all children boxes are the same width as their parent. The body element is parent to all elements (boxes) in the viewport, and is by default the width of the viewport. The viewport is the width of the window, or the device.

Default behavior sizes the box with the content. Padding, border and margins are in addition to the specified height and width. The actual size of the box in the layout is the content plus the borders and padding. A box that is 400px wide, with 20 px padding, and 10 px borders would take up 460 pixels.

Negative margins can be used to subtract from the space that the content takes up in the document flow. In the demo below, if the content is height: 300px, and has a margin-bottom: -150px, the next element down will start midway the box, because the negative margin does not effect the size of the content. It also becomes clear that elements that come after are positioned above elements that come before. Change the second box’s top and bottom margins to -200px auto 0; and the second box move up 200 points over the first box.

Vertical margins collapse. Horizontal margins do not collapse. If the horizontal margin is 5px for both boxes, expect the space between the boxes to be 10px. But with vertical margins, if both were 5px, the space would be 5px, because the margins have collapsed. The margin collapses to whichever is the larger margin.

CSS 3 introduced the box-sizing property allowing box width to include the padding and borders. CSS Tricks has a nice history of how it ended up the way it is. It’s often applied to the entire page with the universal selector: *, *::before, *::after { box-sizing: border-box;}. You can toggle the box-sizing on and off in the demo or change it to content-box, the default, or padding-box:

Box Model Interactive

CSS Code View

BOX 1: The margin is set for 20px auto, meaning that the box has 20 pixels of margin on top and bottom, and the left and right margins are automatically adjusted to center the box, possible only because the box has a declared width

BOX 2: Though both boxes have a 20px margin, that margin collapses between the boxes.The smaller margin collapses into the larger margin.

The Layout Modes of CSS 2.1.1

The layout modes determine the layout of boxes in the document flow. Boxes act either as block layout, like inline layout, like table layout or like positioned layout in which absolute and fixed positioning , which disregards the document flow.

The best analogy of the document flow to the flow of a word processor, which starts at the top of the document and proceeds downward. All of the content is tethered to the top of the page. This document flow is composed of blocks that often contain inline content. Inline content is letters or words, pictures, links, etc. They make up the content of the block element they are in, and the block element will be as wide as the parent, and grow vertically to hold all of the content.

Contrast the document flow for a webpage with the document flow of programs like Illustrator or InDesign, programs made for print. In these programs, the last thing you want is for something to move. These programs are designed to provide freedom in placing a box anywhere on the page. Each box can initiate its own internal inline flow, but the box itself is not connected to the document flow, because there is no document flow. Instead, the place of each element in InDesign or Illustrator is determined by its x and y values, and its width and height.

Absolute or fixed positioning act similar to laying out designs in Illustrator or InDesign, but don’t try to use them as the foundation for your layout, because it will not be friendly to changes in viewport sizes. You can use them within the layout, once the foundation has been established. Elements are taken out of the document flow and no longer relate to one another.

Tables, the forth layout mode, are in their own world, and wile great for tabular data, should not be used for layout purposes, as that violates the separation of church and state, I mean, form and content.

Block Display

The block layout mode displays the boxes just described by the box model, in default configuration, vertically , coming one after another down the page in the direction of the document flow. Each box, by default, is 100% the width of its parent. Even if a box is not 100% the width of its parent, block elements still start on a new line, by default, starting at the top left corner of the <body> tag. Some HTML elements follow the block model by default, like headers <h1>, paragraphs <p> and list items<li>, and the generic block element, the <div>, though as we will see, their display quality can be changed to inline or table modes using the display property.

Inline Display

Inline tags enclose inline content elements. By convention and for Most of the WOrld’s languages, inline content flows from left to right, and top to bottom, but this can be changed for languages that do not follow the convention. Some inline content is replaced, but most is not. A character is a non-replaced inline element, but the picture element is replaced by the picture. Box properties like margins, padding and border properties are applied differently to these elements.

Both of these inline elements flow horizontally, one after one, till they reach the width of the containing box. The line then returns to the next line, just like this text. Inline flow, unlike the document flow, is language specific. The English language inline flow goes from left to right, and top to bottom. Japanese language inline flow goes from top to bottom, and right to left.

Elements whose default display is inline are the <img> tag, the Hyperlink <a> tag and the emphasis<strong>. The generic inline element is <span>, and you can use it to select any number of characters within the same parent container. The default inline display can be changed to block or table using the display property.

Tables

Tables themselves by default act like block elements but the layout mode of the table is different from the document flow. They used to be used for layout in the early days by programs like Dreamweaver created but they are not to be used for layout purposes anymore. Did I already say that?

The following example provides both the HTML used to build the table and the CSS used to style it. I have included the HTML code so that you can see their structure. The basic structure is a <table> element followed by a table row <tr>element in which table data <td> elements make up the columns. It is possible to nest tables, shown here by nesting the same table in two of the table data cells.

If you want to style the table, its best to create as many hooks in it as possible, and this table is loaded up with column descriptions, a table header, a table footer and multiple table bodies, all used in styling the table. The code and an explanation of how the table layout works is reproduced below:

CSS Code View

The Caption Holds the Title of the Table
Head 1 Head 2 Head 3
table data table data table data
table data table data table data
table data table data table data
table data table data table data
table data table data table data
1 2 3
td td td
td td td
td td td
td td td
td td td
td td td
td td td
td td td
Footer
table data
1 2 3
td td td
td td td
td td td
td td td
td td td
td td td
td td td
td td td
Footer
table data table data table data
table data table data table data
The Footer is a Place for Information About the Table.
<table id="table">
<caption>The Caption Holds the Title of the Table
</caption>
<col><col><col>
<thead> 
<tr><th>Head 1</th><th>Head 2</th><th>Head 3</th></tr>
</thead>
<tbody>
<tr> <td> table data </td>  <td> table data </td>  <td> table data </td></tr>
<tr> <td> table data </td>  <td> table data </td>  <td> table data </td></tr>
<tr> <td> table data </td>  <td> table data </td>  <td> table data </td></tr>
<tr> <td> table data </td> <td> table data </td> <td> table data </td></tr>
</tbody>
<tbody>
<tr> <td> table data </td>  <td> table data </td>  <td> table data </td></tr>
<tr> <td> TABLE </td>  <td> table data </td>  <td> TABLE </td></tr>
<tr> <td> table data </td>  <td> table data </td>  <td> table data </td></tr>
<tr> <td> table data </td> <td> table data </td> <td> table data </td></tr>
</tbody>
<tfoot>
<tr><td colspan="3">
	The Footer is a Place for Information About the Table.
</td></tr>
</tfoot>
</table>

For demonstration purposes, I included the table within itself, which is just a repeat of the code placed in a table data. The ability to put tables inside of tables for layout purposes was much abused in the early days of the web.

The HTML code for the table can be divided into parts, and each can be styled separately. There are table headings, footers, data cells and captions and rows, all of which can be styled. The even and odd table rows are styled using pseudo selectors. If you look at the code, you can see that the table caption comes first, then the table header, two table bodies that contain the table rows and the table data cells and finally a table footer. The row tags allow the three rows to be styled individually, though that too could be handled by pseudo selectors.

Positioning the Document Flow

All objects can be positioned in (or out of) the document flow, which stacks the content together like building blocks in reverse of gravity. Starting from the top, the elements build their way down. W3.org calls this the visual formatting model. Think of these as tools to help you create layout.

Normal Flow

In the normal flow, boxes are like blocks that follow the document flow as they stack. Each of these boxes can hold other boxes, inline content, or both.

Boxes are described as stacked paragraphs blocks, whereas inline elements are said to be “distributed in lines”.

The display of boxes can be changed to inline elements and inline blocks, or when they are floated, and thee elements act just like inline content like a line of text. Pictures act like inline content items as well.

The default normal flow of the blocks is like a word-processor, in which each box takes up space in the document flow. Top and bottom margins collapse to the larger of the two margins as demonstrated above. Left and right margins do not collapse.

For centering elements auto margins provide an equal amount of margin on both the left and right side of an element, as long as the width of the element is given. If this does not work, you probably forgot to give the element a width.

Relative Positioning

Relative positioning maintains the position and size of the element within the normal flow, and visually moves the element relative to its static location in the normal flow. The horizontal and vertical distance shifts the element relative to the position the box has in the normal flow. Specify positive or negative distance from the top, left, bottom or right edges. If the relative position distance is 0, there is no change from the static position.

Boxes can and will overlap. Use z-index to adjust which box is on top. In the demonstration, the z-index is 1, and the box sits on top of the following box, which is contrary to the actual flow, in which later elements would cover earlier elements. A z-index of 0 would bring back the normal document flow, the same as if there were no z-index, and a z-index of -1 would put the element under its parent element.

Relative positioning is also used to ground absolute position elements. The parent of an absolute positioned element needs relative positioning (with no need to change its relative position) to ground the absolute positioned element to the parent. If the absolute positioned element is not grounded, it will be positioned relative to the first relative positioned parent, or the body element. In the demonstration, the parent element <div id="norm"> has a position of relative flow. If one of the paragraphs were to be changed from relative to absolute positioning, it will go to the top of this demonstration with whatever offset values it has. Take this relative position away, and the absolute positioned element will end up at the top of the document.

Relative and Normal Position Interactive

CSS Code View

Normal Flow

Block elements are those that create a box that can contain inline content. Block elements expand to the width of the parent, and follow one another like paragraphs down the page.

The boxes determine the relation to adjacent boxes through margins, and determine the relation to child elements and inline content through padding. In between the margins and the padding is the border, which can be set to show or hide for each side.

Static Position

Static position is the same as the normal flow, which is similar to relative positioning if nothing is shifted. You can see that in these paragraphs: some have no position and take the normal flow by default, some have relative position, and some have the position of static.

Relative Flow

Relative flow is a subcategory of normal flow, for the element’s position still takes up place in the normal flow but it has been shifted in the top, right, bottom or left directions.

The previous box has z-index applied and covers this box. Set that element’s z-index to 0 or get rid of z-index and it box will cover this box. Set it to -1 and it will disappear behind the parent. This box does not have a property for z-index. Give it a property of 1 and it will cover the fixed menu element.

Absolute Positioning

Absolute positioning takes the element out of the document flow. Switch the relative position to absolute, and you will see it use the same offset in regard to the parent box. Turn off the relative position from the parent box, and the absolute box will jump to the top of the page.

Absolute Positioning

Absolute positioning is the forth layout mode, and it takes the box out of the normal document flow, except for a placeholder, the point of origin on which the absolute positioned box is aligned, and positions it in a layer above it in relation to the containing box’s coordinates, as long as that parent has been given a position in the document flow. If not, it continues on down the ancestry till it finds an element that has been given a position, or the body tag, which often happens, and which places the absolute value relative to the upper left hand corner of the window or viewport. To avoid this problem, remember to give the parent of the box you want to move absolutely a position: relative; without moving it from its place in the document flow.

There is an attraction for students to use absolute positioning as the main layout system since it follows the paradigm set up in print with programs like indesign. The problem is that the web is not like print, and such layouts quickly get into trouble. While it is fine to use absolute positioning for the very simplest of layouts, it breaks down for anything remotely more complicated, where it is a better idea to layout the document manipulating the document flow through margins, padding, floats and relative positioning.

These warnings aside, absolute positioning can be very useful in placing elements exactly where you need them, and can allow for some nifty layout calisthenics, as the demo shows, where objects are distributed by manipulating percentages in relation to the parent. If you change the position to fixed, the squares float in relation to the viewport. If you change the position to relative, and negate the object’s place in the normal document flow by adding negative margins, the objects will behave somewhat similar to the absolute positioned objects.

It is possible to manipulate elements like this because they can have more than one class as long as they are separated by a space: <div class="one box a">. Each box has three classes determining them: <div class="one box a"><p>1
</div>

Absolute Positioning Interactive

CSS Code View

Live Demo

1

2

3

4

5

6

7

8

9

Fixed Positioning

Fixed position is a subcategory of absolute positioning. The difference being that the container box is the viewport. The viewport is the window, so it is absolutely fixed to the window, regardless of the scrolling contents in the window. This can be used for menus like the one to the right, that stays in place while the user scrolls up and down the page. You can see this if you change the position of the boxes above to fixed, and they will float in the relation to the viewport.

Sticky Positioning

CSS Positioned Layout Module Level 3 Sticky position is a hybrid position that incorporates elements of relative, absolute, and fixed positioning to accomplish its effect. When scrolling a page, an element sticks to the top or bottom for as long as the parent container element is visible.

When an element is defined as sticky, the parent element is automatically defined as the sticky container. The parent is the maximum area that the sticky item can float in. In the demo, the header only floats in the container designated by the green box, and has a z-index:10; stacking order, so it remains on top. The footer of the second box is also sticky.

Sticky Positioning Interactive

CSS Code View

Live Demo

Title
Content
Title
Content
Footer

Z-Index Property

Once an element has been positioned, it’s overlap on the z-axis can be manipulated by the index property. This can be thought of in terms of having multiple layers, much like an Illustrator File. The normal flow happens at level 0, and you can put elements above and below the normal flow by giving them a number for −100 to 100.

Set the z-index of the following boxes to negative to read when using z-index can be useful. Play with the stacking order, and remember, the element you want to position in another layer other than the document flow has to be positioned first. Try giving the all the boxes a z-index of -3 and watch them move behind the text. Reverse the order of the boxes by changing the first box to -1, second to -2, third to -3 and the last box to -4.

Z-Index Property Interactive

CSS Code View

Live Demo

Box A:

Box B:

Box C:

Box D:

Making the z-index negative and watch the boxes go below the parent. Z-index can be especially useful if one element accidentally cover up a menu item, which is then no longer responds. By changing the z-index, you can move the menu above whatever is obstructing it.

Stacking Context

A stacking context is an element whose children can be ordered only relative to one another. Assigning the property z-index automatically creates a stacking context. As stacking contexts are not visually indicated there will be times when stacking contexts create confusion. It can happen, for example, that it becomes impossible to move one element on top of another using z-index despite astronomically high z-index values. As the z-index command does not work you may try to use !important to force it to work but to no avail. Once a stacking order is assigned to an element all its children become relative to each other and not relative to elements outside of the stacking order.

A number of other properties force stacking contexts because of the way CSS optimizes the way it renders a webpage. None of these properties are inherited but do pass on their effect to their children. These properties are opacity, transform, mix-blend-mode, perspective, isolation and position: fixed. The element and their children are flattened into a single layer to speed up rendering for browser efficiency. That makes it impossible to use z-index to layer something from outside the stacking context into any of those elements.

Display Property

The ability to change the display of an element is a very powerful feature of CSS, and its ability to function as a layout strategy has been overlooked during the time when floats reigned supreme as the Beyond Floats Article shows. It has since been updated to include flex and grid.

It is possible to change a block element to an inline element, to a list item to a table, table cell, etc. This is very useful for changing the basic behavior of an element exploited in the Beyond Floats Article.

Be aware that an inline object is content and does not have volume beyond the content box and requires the use of the inline-block value to change it to block behavior while remaining compatible with inline behavior.

Another important display values is display: none. That allows the element to be hidden from view till it is called up by a pseudo class like hover. This is one way to make CSS drop menus with multiple levels stay hidden till they are hovered over. No one here will build a website so complicated as to need such a menu though styling the navigation article demonstrates one. There is another property, visibility: hidden; or visibility: collapse;, that turns the visibility of objects on or off but that differs from display: none; in that the element still takes up room in the document flow.

Display Property Interactive

CSS Code View

Live Demo

Box A:

Box B:

Box C:

Box D:

Overflow Property

Unless otherwise specified, each box will span the entire width of the parent and accommodate whatever content. If you specify a width, text will just wrap within that width but if a replaced element, like a picture or a video file, is larger than the specified width, it could overflow the box boundaries, it could be clipped at the box boundaries or it could be accommodated by specifying horizontal overflow, in which case a scrollbar would provide access to the otherwise clipped content.

If you specify a height, its possible that both pictures and text could force the content out of the box. You can control this though the overflow property, which allows you to control whether or not content remains visible, hidden or if scroll bars appear to facilitate the extra content. You can also specify which axis overflows. Take away the comments from overflow-x: hidden; and you will see the horizontal scroll bar disappear.

If a web site has both short and long documents, in which case the vertical scroll bar can appear and disappear from page to page, with the result that the web site re-centers and the jump is both undesirable and quite noticeable. Telling the HTML element to always scroll in the y axis can solve that problem overflow-y: scroll.

Overflow Property Interactive

CSS Code View

The overflow property controls how content is clipped, and it creates horizontal or vertical scroll bars to accommodate the extra content.

Floated boxes

Floated boxes are part of the normal flow. When boxes are floated, they behave as inline elements. That means that they go from being in the document flow to being in the inline content flow of a parent box.

A box is either floated to the right or floated to the left, and it shifts the box to the right or left edge of the parent containing box at the line that the box is on. The remaining content then continues to flow around that box until it runs past the floated element or is cleared.

Floated boxes are central to multi-column page layouts, though that was not immediately apparent as they were first used to flow text around pictures. Nesting floats in one another is the basis for multi-column layouts. Nest one box inside of a floated box, and you have two columns, nest that box again inside another floated box, and you have three, and so on.

Floating Boxes Interactive

CSS Code View

Live Demo

Box A:

Box B:

Box C:

Box D:

Two of the floating properties have been disabled. Enable them and see how the boxes jump into position. Once you do, you will notice that Box D also has the clear right property, which pushes it below Box C. Delete the clear property and see what happens.

Floating Three Column Layout Interactive

A bulletproof three column layout.

CSS Code View

Live Demo

HEADER

CONTENT
The outlines show that the floated columns do not go all the way to the bottom. Color any one of them and they will stand out. The solution was to create a background picture to make it look like the columns go all the way down. This only becomes a problem when the columns have different backgrounds. The solution is to use an image that repeats vertically all the way to the bottom.

FOOTER

HTML

<div>
<header>
HEADER
</header>
<aside>
SIDE A
</aside>
<article>
CONTENT
</article>
<aside>
SIDE B
</aside>
<footer>
FOOTER
</footer>
</div>
</div>

CSS3 Multi-Column Property

It is easy to create multi-column layouts using CSS3 multiple columns property. The document flow can create more columns inside a box than is visually pleasing, so change it to one, two, three or four columns, depending on the size of the screen. A good use of this would be in media queries, where small screens get one column, tablets get two and computer monitors get three or more columns.

Multi-Columns Interactive

CSS Code View

Live Demo

What is “Fun?”

“I’ll know it when I see it.”

As designers, we get a lot of similarly elusive adjectives from clients, as they tell us what they want their sites to be: “The site needs to be ‘cool,’” “It should be ‘exciting,’” “I want it to ‘pop.’” When we ask them to clarify, the answer we get back sounds a lot like “I can’t tell you what it is but I’ll know it when I see it.”

“Fun” is a particularly difficult concept to define. And we’re starting to hear it a lot more from clients as we design for different contexts of use.

So what’s a designer to do?

CSS3 FlexBox Property

The Flexible Box Layout Module is designed solve a layout problem where the extra space is automatically divided between flexed siblings. It can align its contents horizontally or vertically, can have the order of the columns swapped dynamically, and can automatically “flex” the size of each columns to fit the available space. Flexbox demo. CSS-Tricks guide to Flexbox.

CSS3 Grid

The CSS Grid defines a two-dimensional grid-based layout system optimized for user interface design. In the grid layout model, the children of a grid container are positioned into arbitrary slots in a predefined flexible or fixed-size layout grid. Grid demo. CSS-Tricks guide to grid.

04 Floating Layouts

float picture demo

Page Layouts in CSS are not as straight forward as one might expect, but then, tables were not exactly straight forward either.

As layouts became more complex, a mix between tables and CSS was used, and by about 2007, the bugs had been removed enough that the New York Times, a standard-bearer, could go to a table-less layout based on floats. That broke the ice and after that almost everyone migrated to an all CSS layout

CSS Tricks on Floats

A float is easy enough, and it was introduced by Netscape Navigator 1.1. There is also a clear, to clear the float. It was originally intended to float pictures. The code that floats this example is <img style="float: right; padding: 0 0 10px 10px;" src="http://b.parsons.edu/~dejongo/12-fall/stuff/images/mondrian2.jpg" alt="clear float picture demo">
float picture demo

The next paragraph has clear applied to it. That forces the next element to clear the float. The second paragraph above, for example, does not clear, and continues to flow to the side of the picture.

There are a number of methods to achieve the same goal, but most of these build on the ability to float elements to the right or the left of the containing box. The problem using this method is getting the parent containing element to expand to hold the floated children, as the children can become unruly, and stick out below the parent box (see below for an example).

To prevent that, all kinds of fixes were created, like floating the parent container or the .clearfix method to push the parent box below its floated children. There is a faux column solution that uses a background element to give the impression that all the columns are the same size, and a method called the one true layout that uses margins to push the content into columns, which is similar to one called the holy grail, but they have mostly been supplanted by the overflow: auto method detailed below. For more information and links to tutorials, you can go to CSS tricks or smashing magazine.

Floating Columns

width: 140px; height: 140px; border: 1px solid black; float: right; margin: 0 0 10px 10px; background-color: #bbb;
width: 140px; height: 140px; border: 1px solid black; float: right; margin: 0 0 10px 10px; padding: 5px; color: white; background-color: #999;
width: 140px; height: 140px; border: 1px solid black; float: right; margin: 0 0 10px 10px; padding: 5px; background-color: #ddd; clear: right;

When you apply float to an element, you make a box, take it out of the normal document flow, and shift it to the right or left of the containing box. The remaining content flows around the floated element. The floating elements always needs an explicit width. The #bbb and #999 boxes demonstrate what happens when you float boxes to the right, and they are handled as if they were inline elements so that the boxes float next to one another till there is no more space. To stop an element from flowing around the floated element, you have to clear it, as in clear: right;. That way the boxes can float under one another, as demonstrated by the #ddd box. The problem with building a complicated layout with floats lies in browser incompatibility, for it is possible that the page does not degrade properly. To not invite any more problems than necessary, make sure you reset the CSS.

Unruly Children

width: 140px; height: 140px; border: 1px solid black; float: left; margin: 0 0 10px 10px; background-color: #bbb;
width: 60px; height: 302px; border: 1px solid black; float: left; margin: 0 10px 10px 0; padding: 5px; color: white; back ground-color: #999;
width: 140px; height: 140px; border: 1px solid black; float: right; margin: 0 0 10px 10px; padding: 5px; background-color: #ddd; clear: right;

So floats can be used to create columns, but there is another issue to consider.

A containing box will not expand unless there is content. For some reason, when you float a child element, the containing element fails to keep track of it. This becomes unsightly when there is a border or background color on the containing box, and the floating box extends below the border like this.

As you can see, this is not acceptable. The W3 recommends that you put in additional markup and clear: both;, but that is a bit of a hack and requires additional markup introducing an unwanted element at bottom. All kinds of clever solutions were found to create a CSS only solution to that problem, which I need not go into as someone discovered that adding overflow: auto; to the containing box did the trick.

A 3 Column Layout that Works

width: 140px; height: 140px; border: 1px solid black; float: left; margin: 0 0 10px 10px; background-color: #bbb;
width: 60px; height: 302px; border: 1px solid black; float: left; margin: 0 10px 10px 0; padding: 5px; color: white; back ground-color: #999;
width: 140px; height: 140px; border: 1px solid black; float: right; margin: 0 0 10px 10px; padding: 5px; background-color: #ddd; clear: right;

It appears that all is well in CSS multiple column land. If you want more columns, you can make the floated child a parent to another floating child, so nesting floated children inside of floated children.

3 Column Float Demonstration

CSS Code View

HEADER

You will see that the columns fit the content, and that they do not all go to the bottom. This is a problem if you want to have columns with different backgrounds. The solution is to use an image that repeats vertically all the way to the bottom, which I have all ready for you to uncomment. You then have to comment-out the background colors of the columns themselves before you can see it.

FOOTER

HTML markup for the example

<div id="cd-wrap">
<div id="cd-header">
HEADER
</div>
<div id="cd-container">
<div id="cd-side-a">
SIDE A
</div>
<div id="cd-content">
CONTENT
</div>
<div id="cd-side-b">
SIDE B
</div>
</div>
<div id="cd-footer">
FOOTER
</div>
</div>
</div>

04 Beyond Floats

Sitepoint released a spot on article, Give Floats the Flick in CSS Layouts that goes over alternate strategies to lay out a page, mostly relying on the display property to change the display of an element from a list item to an inline-block, for example.

Possible display modes are: inline, block, list-item, run-in, inline-block, table, inline-table, table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, table-caption, none and inherit.

The markup for these examples look like this except as noted:

<nav>
	<ul>
		<li><a href="#">menu 1</a>
		<li><a href="#">menu 2</a>
		<li><a href="#">menu 3</a>
		<li><a href="#">menu 4</a>
		<li><a href="#">menu 5</a>
	</ul> 
</nav> 

Display Inline-Block

Inline-block displays block level elements into inline level elements with block attributes like margins, padding, width, height, and vertical-align, attributes that inline elements do not have. It’s incredibly useful in any situation where you want to align block elements horizontally in rows, as they can be aligned by the top, middle or bottom.

CSS Code View

Each line items can be more than just a menu item, which is what this property is often asked to do. The boxes can be aligned from the top, center or bottom, and can contain all kinds of objects to serve as a layout strategy. If your page were designed to contain a number of columns, this is one way to lay out that page.

Using Margins to Space Columns

By using a large margin to move the main body copy to the right, and using absolute positioning to place the content of the first column, you have a two columns page layout.

The markup for the 2 column layout looks like this:

<article>  
	<p>… main content here  
</article>  
<nav>  
	<ul>
		<li><a href="#">menu 1</a>
		<li><a href="#">menu 2</a>
		<li><a href="#">menu 3</a>
		<li><a href="#">menu 4</a>
		<li><a href="#">menu 5</a>
	</ul> 
<nav>  

CSS Code View

… main content here.

Display Tables

Without using tables, of course. Apply the layout behavior of tables, rows and cells to any HTML element. For alignment into columns or rows, these display values are a quick and easy solution, harkening back when tables were the ubiquitous layout strategy, but unlike tables, this is legal.

CSS Code View

This can be used to create multiple column layouts.

CSS Code View

  • Bubble bath

    A wet foam—such as that on a cappuccino—and a trough of plastic beads are both made up of nearly spherical, close-packed objects, but do these two types of materials, which are neither fully liquid or solid like, have anything in common? Experiments presented in Physical Review Letters suggest similarities between foams and granular matter that may lead to a more unified theory for describing the two materials.

  • In a tight spot, spin and charge separate

    Strange things happen when there is a shortage of space. The Pauli exclusion principle is well known for its effect on fermions, but bosons (for instance, photons) also behave interestingly when pressed for space. For this reason, researchers are very interested in schemes that create this kind of environment, in search of new physics and new technologies.

  • Reading a single spin in silicon

    The holy grail of research in quantum computing is to simultaneously meet the DiVincenzo criteria—five obstacles that must be overcome to transform a quantum system into a scalable quantum computer [1]. Overcoming the first two, namely to have well-characterized qubits and long decoherence times can be a simple matter: Nature provides a variety of long-lived quantum systems.

Vertically Centering a Box

It is almost impossible to vertically center an object unless you turn it into a table cell and assign it a vertical alignment of center. It could just as well be top or bottom, of course:

The markup for the centered example looks like this:

<div id="centered">
	<div>
<div>
	

Vertically and horizontally centered </div> </div> </div>

CSS Code View

Vertically and horizontally centered

These page layout solutions do not rely on the ubiquitous float. The time will come when the W3 Grid Layout module is adopted, and the landscape changes, but these techniques will not go away. Instead, use them where they fit, anywhere you need to layout out your document.

04 Layout Grids/Bootstrap

Week 4
2/26

CSS layout strategies. Block, inline, relative and absolute positioning, floats and floating layouts and CSS3 Flex property. Activity: Translate Photoshop Comp into HTML/CSS using multiple layout strategies.

Homework

Using different layout strategies build your portfolio following your Photoshop comp. Read chapter 11. Due: The following week. First Quarter Assessment: Have your landing page, first two assignments and portfolio up.

Materials

Additional materials for this unit can be found by following these links (52 pages):

Goals

The goals of this unit are to:

  • Understand how the native document flow works, and how to alter the normal flow for layout purposes.
  • Investigate several layout strategies beginning with floats, which are so ubiquitous that they often eclipse the other strategies that we present.
  • Know how to effectively use absolute positioning.
  • Be comfortable in applying these various options to solve the layout.
  • Use grids systems when appropriate.

Outcomes

At the end of this unit, students will have:

  • Come to understand how to position elements in CSS
  • Become familiar with how to use the ubiquitous float property to create multicolumn layouts.
  • Be familiar with the other layout properties used to create documents on the web.

Step-by-Step

15 Review homework and answer questions.
30 Box Model, Floats and Positioning
45 Floating Layouts, Layout Grids based on Floats and Beyond Floats
10 break
10 Demonstration: Layout Strategies
20 Demonstration: Learning to use Floats
10 Practice: non-float layout strategies
20 Demonstration: Layout Demonstration

Talking Points

Topics covered in the reading:

Chapter 11: Layout with Styles

  1. Considerations When Beginning a Layout 276
  2. Structuring Your Pages 279
  3. Styling HTML5 Elements in Older Browsers 286
  4. Resetting or Normalizing Default Styles 290
  5. The Box Model 292
  6. Changing the Background 294
  7. Setting the Height or Width for an Element 298
  8. Setting the Margins around an Element 302
  9. Adding Padding around an Element 304
  10. Making Elements Float 306
  11. Controlling Where Elements Float 308
  12. Setting the Border 311
  13. Offsetting Elements in the Natural Flow 314
  14. Positioning Elements Absolutely 316
  15. Positioning Elements in 3D 318
  16. Determining How to Treat Overflow 320
  17. Aligning Elements Vertically 322
  18. Changing the Cursor 323
  19. Displaying and Hiding Elements 324

Current Practices

Photography and Illustration portfolio sites to mull over:

  • Open Society
  • Brent Stirton – flash
  • John Stuart
  • Jill Greenberg
  • Paulo Boccardi
  • Don Friesen

    News and External Resources

    Cheat Sheets that list all of the different HTML5 and CSS3 tags you can use. Print them out, use them. Explore and get to know them. You can use these during the quiz next week:

    1. HTML5 Cheat Sheet all of the different tags and the attributes they can have.
    2. CSS3 Cheat Sheet all of the different properties and all possible values or value types they take.

    Install these Plug-ins if you use Firefox or Chrome. They will facilitate your web development. Do not forget to activate the Show Developer menu in menu bar under the Advanced tab in Safari’s Preferences. Detailed help pages are available for Safari Web Developer are available.

    1. Firebug Plug in for Firefox and Chrome.
    2. Web Developer Plug in for Firefox and Chrome.
    3. Safari Web Developer Help Pages.

    Resources that will aid your understanding of HTML and CSS.

    1. Google University: HTML, CSS and Javascript from the Ground Up.
    2. Can I use this CSS?Updated list of browser support.
    3. Dive Into HTML5Book on HTML5.
    4. The WebPlatform projectAttempt at universal reference on web development. Good idea but development stopped in 2015.
    5. W3.org Status of CSS level 3 specifications Keeper of the standards specifications used to create CSS support in the browsers.

    CSS Prefabs

    There are many frameworks that allow you to build your websites using preexisting CSS. They arose because layout in CSS is neither intuitive nor easy, and go from simple grids to complete font-end frameworks.

    Simple Grids

    1. Twitter Blueprint
    2. 960 Grid System
    3. UnSemantic
    4. Frameless and Golden Grid System

    Complete Front End Frameworks featuring HTML5, CSS3 and Javascript building blocks for rapid website production.

    1. Twitter Bootstrap
    2. Create JS
    3. Foundation
    4. HTML5 Boilerplate
    5. Skeleton
    6. KickStart

    CSS Authoring Frameworks

    1. Compass

    CSS Extention Languages

    1. Less
    2. Sass
    3. Stylus

    Modding Prefabs

    There are many services that allow you to build your own websites, and you can use the HTML and CSS skills you learn here to modify them. This can give you the best of both worlds, for you can use their platform and templates, but modified so that they look unique in ways that goes beyond template options.

    build your own

    1. WordPress Build your own with lots of templates to choose from.
    2. Joomla For more complicated websites.
    3. Drupal For more the most complicated websites.

    Or use a pre-made platform. Note that there are limitations imposed, like Wix depends on absolute positioning to give it flexibility in designing the site, but that end up curtailing the flexibility in other ways.

    1. Tumbler Customize the experience with HTML and CSS.
    2. Cargo Collective
    3. Coroflot
    4. Indexhibit
    5. Wix
    6. Square Space

    Lynda.com is a resource for instructional videos. She has been at it for a long time, and there are a lot of videos on HTML (34) and CSS (36). They can be a great resource, and in addition to my performance in class, the class notes and portal, the good and the web itself, there are no reason for not knowing. That said, there are too many titles to intuitively know what to do, and this section will appear whenever there are supporting videos at Lynda.com

    Signing on to lynda.com

    • Click on the library button in my newschool.edu.
    • Select databases and search for Lynda.com or go to the L tab and it is the last entry. You will see a link to Lynda.com.
    • Create a profile or enter your name and password.

    Lynda.com Web Video Tutorials

    As of 9/13.

    Definitions

    These are the terms that participants should be familiar with during this unit:

    box model

    CSS (Cascading Style Sheets) describes the rendering of documents on various media. When textual documents (e.g., HTML) are laid out on visual media (e.g., screen or print), CSS models the document as a hierarchy of boxes containing words, lines, paragraphs, tables, etc. each with properties such as size, color and font.

    This module describes the basic types of boxes, with their padding and margin, and the normal “flow” (i.e., the sequence of blocks of text with margins in-between). It also defines “floating” boxes, but other kinds of layout, such as tables, absolute positioning, ruby annotations, grid layouts, columns and numbered pages, are described by other modules. Also, the layout of text inside each line (including the handling of left-to-right and right-to-left scripts) is defined elsewhere.

    Boxes may contain either horizontal or vertical lines of text. Boxes of different orientations may be mixed in one flow. (This is a level 3 feature.)

    Inline Text Effects

    This CSS3 module defines properties for text manipulation and specifies their processing model. It covers line breaking, justification and alignment, white space handling, text decoration and text transformation.

    Positioning Schemes

    In CSS 2.1, a box may be laid out according to three positioning
    schemes:

    1. Normal flow. In CSS 2.1, normal flow includes block formatting of block-level boxes, inline formatting of inline-level boxes, and relative positioning of block-level and inline-level boxes.
    2. Floats. In the float model, a box is first laid out according to the normal flow, then taken out of the flow and shifted to the left or right as far as possible. Content may flow along the side of a float.
    3. Absolute positioning. In the absolute positioning model, a box is removed from the normal flow entirely (it has no impact on later siblings) and assigned a position with respect to a containing block.
    CSS3 Floating Boxes

    A float is a box that is shifted to the left or right on the current line. The most interesting characteristic of a float (or “floating” box) is that content may flow along its side (or be prohibited from doing so by the ‘clear’ property). Content flows down the right side of a left-floated box and down the left side of a right-floated box. The following is a (non-normative) introduction to float positioning and content flow; the exact rules governing float positioning are given in the next section.

    A floated box is shifted to the left or right until its outer edge touches the containing block edge or the outer edge of another float. If there is a line box, the top of the floated box is aligned with the top of the current line box.

    If there isn’t enough horizontal room for the float, it is shifted downward until either it fits or there are no more floats present.

    Since a float is not in the flow, non-positioned block boxes created before and after the float box flow vertically as if the float didn’t exist. However, line boxes created next to the float are shortened to make room for the margin box of the float. If a shortened line box is too small to contain any further content, then it is shifted downward until either it fits or there are no more floats present. Any content in the current line before a floated box is re-flowed in the first available line on the other side of the float. In other words, if inline boxes are placed on the line before a left float is encountered that fits in the remaining line box space, the left float is placed on that line, aligned with the top of the line box, and then the inline boxes already on the line are moved accordingly to the right of the float (the right being the other side of the left float) and vice versa for rtl and right floats.

    Floats and Positioning Level 3

    (This is a more advanced development of floats to exploit their wide usage in layout. It is one of the layout strategies coming out of the W3.org) CSS Floats and Positioning Level 3 allows authors to have text and other inline content wrap around specified elements, thereby allowing for the creation of more intricate layouts than is currently possible with existing CSS floaters. Specifically, CSS 3 Floats, also known as “positioned floats”, can be absolutely positioned on a web document, while still affecting the document flow. Authors can individually specify whether intersected block elements surrounding a positioned float (e.g. paragraphs, divs, etc.) overlap with the positioned float, and if so how they overlap with it. Positioned float can also be styled with a wrap-shape property, which specifies both how text within the positioned float is laid out and how content outside the positioned float wraps around the positioned float. It is also possible to define a shape based on transparency values within an image.

    Grids

    A typographic grid is a two-dimensional structure made up of a series of intersecting vertical and horizontal axes used to structure content. The grid serves as an armature on which a designer can organize text and images in a rational, easy to absorb manner.
  • 03 Homework

    • Starting From Scratch, Part 2: CSS
    • Don’t Fear Specificity
    • Boxes, Floats, Position & Fluidity

    Quiz part 1

    1. Complete the Selection Worksheet (quiz 1)
    2. Open up the worksheet, right-click and show page source. Select all. Copy and paste into a blank Brackets document. Save as quiz-1.html and follow instructions. You will be writing CSS. Do not change the HTML.

    Marking Up the Midterm

    Designing for the web has 8 steps. The last step is a PhotoShop comp for desktops, tablets, and mobile devices. Write the content and mark up your portfolio site. Collect and prepare any pictures you plan on using, so you can be ready to apply the CSS layout covered next week.

    Finish up your previous assignments if you have not done so already.

    Grading Criteria

    I will be grading you on levels of confidence, consistency, creativity, innovation, precision, accuracy, efficiency and the ingenuity by which you are able to solve the problems.

    05 Information Architecture

    Information architecture for the web is the process for describing and classifying information used to help construct user experience paradigms. Just as a building is constructed by architects and finished by interior designers, so, the construction of a web site requires a taxonomy, that is, the science of classification and organization that makes the information work for the user experience, in addition to the design of the user experience, and the design of what it all looks like.

    Information Architecture — User Experience

    It sounds like they are intimately connected, and they are on the level in which you operate in this class. In the real world, for large sites, these are very separate skills. The Information architect comes to the web site from the side of the information, whereas the user experience designer looks at the information from the user point of view. The designer then cobbles together these two views into a coherent visual design that is marked up and styled using HTML, CSS and Javascript by the front end developer, who works in tandem with the back end developers that create the content management system (CMS), the databases and the server side scripts that make a modern web site work.

    There is overlap between information architect and the user experience designer. Information architecture involves planning the site, what information to include on what pages, how many levels in the hierarchy of pages, navigational menu design, what labels to use to name pages, sub-sections and headings, how information should be laid out on a page to make it easiest to find and understand. Much of this is often represented by a taxonomy that in the end results in a hierarchical site map.

    Taxonomies

    Taxonomy is the branch of science concerned with classification. I know what you are thinking. My portfolio site will only have a dozen pages. Isn’t thinking about a taxonomy overkill? Yes it is, but that does not preclude you from preparing yourself for more complicated projects.

    A web site, particularly when implemented on a content management system, where pages can be added with ease, can suffer because of a lack of information architectural planning. Other sites that would benefit from a carefully developed taxonomy are intranets, corporate web sites, e-commerce sites and the sites or large institutions like the New School web site.

    A few words on taxonomy. A taxonomy is usually thought of as the tree-type of hierarchy that classifies topics like the biological tree of life, for example, but it can also be an imposed order by type, like the Dewey Decimal System in use by libraries, which has a unique ontological classification that drills down to each particular manuscript in library science.

    The taxonomy terms are arranged so that more specific terms fall under more general categories. For your web site, for example, a specific print falls under the category prints, which falls under the category of illustration, which falls under the category of work.

    In more complicated sites, there are relationships types that may not be hierarchical, and can be based on location, products, services, membership, utilization or ownership and other relations that you probably have not yet thought about. In these cases, it’s important to clearly define the terms of the taxonomy that relates the types, for that will make for a more consistent user experience.

    Information Architecture

    In print, the information architecture is mostly linear, with a table of content and an index to provide access to the discrete parts, or in a newspaper, where articles start on the front page and continue on other pages.

    The hyperlinks on the web make for a much more hierarchical relationship, where the user can jump anywhere in the inverted tree-like hierarchies that make up most navigational systems. This makes overlapping taxonomies possible, as there can be a number of ways to approach the same information.

    The point to take away from this is that being clear about the taxonomy will help users find the information they are seeking.

    Whereas taxonomies focus on classifying the information beforehand, there is another movement that feels information should be classified by the people using it, called folksonomy

    The Information Architecture Process

    Information architecture works out the relation between the content and the navigation. It corresponds directly with the goal of the site, the objectives, the content and the needs of the user. The information architecture can be strictly hierarchical, more organic, or both, but the process starts by writing down and organizing the site objectives.

    The information architect lists the content requirements and determines the appropriate page hierarchy for the site, be it top down or bottoms up, and design the navigation to access this hierarchy. Note that the navigation does not need to mirror the hierarchy, and can take the form of a matrix, be organic, or even linear. A complete diagram of the information architecture is created by standardizing the navigation architecture with the organization of the content.

    Designing for the User’s Interaction

    The information architecture addresses all of the potential users whose interaction with the information is what the site is about. Knowing the target audience and what they need and are interested in can be made into scenarios that map out these ideal user interactions, through process flow charts, site-maps and wireframes can be constructed from that analysis that most represent the site’s objectives and strategy.

    You were required to develop a number of personas, and in the second assignment, to organize the website with a number of such personas in mind. Figuring out who the users are and addressing them is a common starting point when developing a website.

    Over a dozen distinctly targeted users with very different interests for a medical website has to be considered for which I did a user experience analyses. How to build an interface that meets the expectations of all of the users. The site objectives had to be applied to the different needs and interests of the multiple targeted users.

    To communicate this back to the client, a schematic for each user was created and superimposed to get a sense of how to best approach the information architecture. To accommodate everyone, a number of different strategies were implemented using both primary and secondary navigation.

    Process flow-charts not only allowed modeling an ideal user’s interaction to better comprehend their interests and needs, but combining all of the users allowed for a high-level overview of the web site’s requirements. This high-level approach, built up from the individual user assessments, is called the architectural approach, because it enables one to develop a comprehensive user interface for the system.

    Once a system architecture is completed, it is possible to establish a site-map from the process flows, and from there, a wireframe that is true to the site’s objectives and strategy.

    With the information architecture in place and user interactions determined, a complete user experience has been determined. That is when the structure of the information architecture, the layout of the information design, the interaction design concepts, and the desired brand identity come together in a responsive visual design.

    Implications

    Will you break out your first assignment into all of these steps? I would be surprised if you did, but they will be assumed nonetheless, so try to be as clear as possible in each of these activities, and write them down, insofar as you develop them behind the scenes, in your worksheet.

    02 Marking Up Content

    Week 2
    9/3

    User experience (UX) Design, Semantic HTML5, Developing Content for midterm website, preparing images, and understanding color on the web.. Learn to upload files using FTP client and organize server space. Activity: Create HTML page for website you analyzed with eye on making your own portfolio. Activity: Activate the account school provides and upload first assignment.

    Homework

    1) Create landing page with links to assignment and worksheet. 2) Watch XU videos. 3) Create Workpage for portfolio site (8 steps). 4) Create content and markup your portfolio site. Read chapters 4-6. Due: The following week.

    Questions from Last Weeks Class or Homework?

    Goals

    The goals of this unit are to:

    • Understand the user experience that drives web design.
    • HTML5 imposes semantic order with its tags.
    • Steps to take in designing your Portfolio.
    • Prepare images for use on the web
    • Understand how to use color.
    • Validate the HTML.

    Materials

    Additional materials for this unit can be found by following these links:

    Outcomes

    At the end of this unit, students will have:

    • Will consider the user’s experience when creating for the web.
    • Have gone through the process of creating a web page and uploading so the whole world can see it.
    • Transformed content into semantically correct markup.
    • Used their server space to upload work.
    • Created a valid HTML5 document.
    • Checked the validity of that document.
    • Prepare images for the web using the correct file format and resolution.
    • Understand the hexadecimal (base 16) notation for RGB color.
    • Basic styling of the document using inline CSS styles.

    Step-by-Step

    20 Review homework and answer questions.
    10 Discussion: What did you find out when you analyzed the website?.
    10 Lecture: User Experience (UX)
    10 Discussion: user experience.
    30 Demonstration: Designing a website from scratch
    10 Discussion: Designing a website from scratch
    10 Fetch and Text Wrangler Tips Is anyone is having problems uploading to their webspace? Let me know.
    10 Break
    10 Lecture: Semantic Markup
    40 Writing semantic HTML5
    20 Lecture: Preparing Images for the Web

    Current Practice UX Design

    Two newspapers, the Guardian and the NY Times have updated their websites. Actually, the Guardian is currently (Fall 2014) asking for feedback, as part of its XU testing cycle, asking for user feedback.

    1. NY Times A standard setting newspaper that helped move the web away from its addiction to tables in 2007 has just been redesigned. using jQuery: UX Design considerations lead to a more engaging web experience. Read about the reasons behind the XU Design.
    2. The Guardian tests its UXD for mobile.

      XU Case Study Club Best of (2018)

    Celebrating Designers Openly Sharing Their Process.

    More News and External Resources

    Links to help you explore you explore the visual development of your Portfolio Site.

    Atomic Design Book online

    Definitions

    These are the terms that participants should be familiar with during this unit:

    Semantic Web

    The Semantic Web is a “web of data” that enables machines to understand the semantics, or meaning, of information on the World Wide Web. It extends the network of hyperlinked human-readable web pages by inserting machine-readable metadata about pages and how they are related to each other, enabling automated agents to access the Web more intelligently and perform tasks on behalf of users. The term was coined by Tim Berners-Lee, the inventor of the World Wide Web and director of the World Wide Web Consortium, which oversees the development of proposed Semantic Web standards. He defines the Semantic Web as “a web of data that can be processed directly and indirectly by machines.”

    User Experience

    User experience (UX) is about how a person feels about using a product, system or service. User experience highlights the experiential, affective, meaningful and valuable aspects of human-computer interaction and product ownership but it also includes a person’s perceptions of the practical aspects such as utility, ease of use and efficiency of the system. User experience is subjective in nature, because it is about an individual’s feelings and thoughts about the system. User experience is dynamic, because it changes over time as the circumstances change.

    User Interface design

    User interface design or user interface engineering is the design of computers, appliances, machines, mobile communication devices, software applications, and websites with the focus on the user’s experience and interaction. The goal of user interface design is to make the user’s interaction as simple and efficient as possible, in terms of accomplishing user goals—what is often called user-centered design. Good user interface design facilitates finishing the task at hand without drawing unnecessary attention to itself. Graphic design may be utilized to support its usability. The design process must balance technical functionality and visual elements (e.g., mental model) to create a system that is not only operational but also usable and adaptable to changing user needs.

    Interface design is involved in a wide range of projects from computer systems, to cars, to commercial planes; all of these projects involve much of the same basic human interactions yet also require some unique skills and knowledge. As a result, designers tend to specialize in certain types of projects and have skills centered around their expertise, whether that be software design, user research, web design, or industrial design.

    Web design

    Web design is a broad term used to encompass the way that content (usually hypertext or hypermedia) is delivered to an end-user through the World Wide Web, using a web browser (e.g. Opera, Internet Explorer, Firefox, Google Chrome, Safari) or other web-enabled software to display the content. The intent of web design is to create a website—a collection of online content including documents and applications that reside on a web server/servers. A website may include text, images, sounds and other content, and may be interactive.

    Information Design

    Information design is the skill and practice of preparing information so people can use it with efficiency and effectiveness. Where the data is complex or unstructured, a visual representation can express its meaning more clearly to the viewer.

    Information Architecture

    Information architecture is defined by the Information Architecture Institute as:

    1. The structural design of shared information environments.
    2. The art and science of organizing and labeling web sites, intranets, online communities, and software to support findability and usability.
    3. An emerging community of practice focused on bringing principles of design and architecture to the digital landscape.

    02 Designing for the Web (8 steps)

    Parsons students have experience with the language of design as it pertains to graphic design, illustration, fashion, product design, architecture, or photography, and so on. Lang students have experience developing cerebral arguments of one sort or another. There will be two main projects this semester: a portfolio and a final project. Each project follows the process of research/concept/sketches/comps/final. These steps need to be documented in a worksheet.

    8 steps everyone needs to document in the worksheet before creating their website.

    You are required to document each of your creative decisions in a Worksheet. I will use them to evaluate your midterm and final.

    1) Develop Your Idea

    Define the problem you are to solve when developing a web site. It is hard to create a good end product if the problem is not very well defined at the beginning.

    Sometimes the problem is given to you by the client but the client does not alway know exactly what the problem is. It’s your job to figure that out.

    Either way, develop your idea.

    It’s hard to sell a bad idea.

    This time you are your own client. That’s difficult.

    Make sure that whatever you come up with will work and is worth the time spent making it real.

    2) Discovery and Research

    Discovery and research is the second step. You might have a good idea of what you want but test it by contrasting the idea with similar ideas that have already been executed.

    Using OpenAI text is a great tool expand awareness of what the options are.

    Google to see what others have done. The first assignment should have been a gigantic step in the right direction.

    Find competitor web sites that have a track record that you can learn from, or have developed novel ways to express things that you are also desiring to express.

    Tell me what you have learned and the conclusions you have reached from your research. I will be looking for that in the worksheets for both the midterm and the final projects.

    3) Target Your Audience

    Focus your energy by figuring out who your audience is, and target them.

    Develop your content with that audience in mind.

    Read the user experience article.

    Go further and read Designed For Use by Lukas Mathis and develop a killer user interface because this excellent book will give you a good understanding of how user interfaces work, and work well, and what to look out for, to make sure that they do work.

    Whatever you do, keep the user in mind.

    4) Inspiration and concepts

    Look for sites that inspired you. There are lots of examples out there and precedent to follow.

    Then experiment Mood boards are one way to proceed.

    Mood boards visually stimulate your design sense. You can test colors images, design elements, ideas, etc, as you develop your design intent. Print these out and place them on a board, or layer them in a Photoshop document. Playing with the visual hierarchy of like or contrasting elements can help gel the creative process.

    Mood boards are used to develop the overall feel of a project, putting together images and objects which inspire, target desires and facilitate creativity and innovation in establishing the aesthetic feel of a web site.

    Things to explore in a mood board include photography style, color palettes, typography, patterns, and the overall look and feel of the site. Soft or hard? Grungy or clean? Dark or light? A rough collage of colors, textures and pictures is all it takes to evoke a specific style or feeling. This process can act like a catalyst and save a lot of time and help focus in on your final design.

    Come up with a couple of different design concepts for the project. The concepts should be based on research and the target audience. Gather up content and make a compelling case for each concept. Minimum of two concepts but no more than five.

    5) Thumbnails and Sketches

    Illustrate and explain each of your concepts. Once you are clear as to what your problem is, have content, and direction, the next step is to explain the best concept and develop a responsive user centered design solution using pencil and paper.

    Sketches show how you arrived at the solution. They should start simple and remain small (thumbnails).

    Explore responsive possibilities, from watch to phone to tablet to computer desktop and back again. Each device needs to present the concept organized in a way that is coherent for the device.

    It takes many thumbnails to work through and develop a finished concept. You can’t tell ahead of time what will or will not work but you can separate out what doesn’t work ahead of time. Increase your success rate by staying with paper and pencil till you are clear about how to solve the problem.

    Circle or otherwise indicate the concept you will develop. Take a picture of or scan the drawings and upload them to the worksheet.

    6) Wireframes and Prototypes

    Wireframes are simplified designs devoid of any style, type, color, pictures, or meaning. They are fast to create and explore different elements of your design, and provide feedback on the general layout, are easy to manipulate and change, to get it right, before filling in the details. Wireframes allow you to explore user flows and the different ways to structure your website, without having to design any elements or design any content.

    devices example

    Translate the picked thumbnail into a wireframe for each device category. One each for the watch, the phone, the tablet and the desktop. If you are using FIGMA, pick out a frame for each page, and each device.

    The wireframe of a website is the skeleton of a web page assembled using boxes and lines. A wireframe is conducive to content placement making it easy to establish hierarchy, figure out functionality and navigation problems in a format that can be adjusted easily. Wireframes are lines or boxes with little text and few visual widgets that represent your website structure and help you establish hierarchy. It is a clean interpretation of the thumbnail that you selected to develop.

    Wireframes and prototypes help you understand the big picture. Rapid prototyping helps you explore more ideas, faster. Don’t let yourself get bogged down in unnecessary details too early. Create your wireframe/prototype in prototyping programs, illustrator, or hand draw them, but be ready to recreate them using CSS and HTML.

    7)Responsive Mockup

    Software like Adobe XD and Origami allow for quick and amazing prototypes, tools that facilitate and realize user experience design on different devices. The tools are slick, but don’t prototype something you can’t possibly code. It is easy to get lost when prototyping. Stay focused on what you need to communicate to your target audience. Some prototyping software allows you to export to HTML and CSS. Avoid them. We are here how to code, and shortcuts turn out to be longcuts. The code they produce is uneditable for beginners.

    Prototype tools are both web based and stand along products. These can all be used free. figma.com (you can also sign up to get their professional package for education free of charge), Invision, Mockplus, Facebook’s Origami, and Adobe’s XD. You can also use HTML and CSS. That’s probably the most useful way to develop your prototype as you will learn HTML and CSS. You’ll be required to transform your prototypes into an actual website in two weeks, after we’ve covered layout using CSS in Week 4. You have till then to perfect your prototype.

    wireframe example

    8) PhotoShop Comp

    The last step is to create Photoshop/Illustrator comp of what your website is to look like on a phone, a tablet, a desktop screen.

    “Responsive

    Putting It All Together

    The next step is to build the site using HTML and CSS. You have three weeks to accomplish that.

    Think of the photoshop comp as the end. It is a strategy game to figure out how to achieve that end using the HTML and CSS you will learn in the next three weeks.

    Break your design into the fundamental boxes that determine how your design moves through every iteration of your responsive design. It has to work on a smartphone where the finger-tip is huge and will quickly slide through the information vertically, to the large horizontal monitors with 50 inch diagonal screens.

    Your site is to look good every step of the way. Figure out how to make the HTML and CSS work. That is the strategy. Figure it out by creating a simple wireframe representing the elements as they move though each iteration of the responsive experience.

    02 Homework

    Watch the I love UX Design Videos

    Two video shorts made by ADDIKT for Adobe describing the roll of the UX designer.

    1. ILUVUXDESIGN part I from lyle on Vimeo.

    2. ILUVUXDESIGN part II from lyle on Vimeo.

    Design for the Web

    1. If you haven’t already done so, your first assignment needs to be finished and marked up with semantic HTML5.
    2. The first assignment is a preparation for step one and two of Designing for the Web (8 steps) . Make User eXperience the central concern as you work through the eight steps. Finish with a statement on how your final comps reflect UX principles.
    3. Read the first chapter Designing Systems, Create design systems, not pages in Atomic Design by Brad Frost. Companion to Designing for the Web.

    Document the Design Process

    1. The eight steps are the basis for a sketch-book equivalent I call the work-sheet that is to accompany each major assignment. You will end up with two such work-sheets for the course, one for the portfolio site and one for the final. Worksheet Example
    2. The purpose of the work-sheet is to organize all the behind-the-scenes creative-decision making. I give credit for good decisions even if they aren’t executed.
    3. Jot down notes, questions and anything that helps you track your creative process. I will be looking at these to monitor your progress.

    Instructions for creating the worksheet

    1. Use the HTML5 Template.
    2. Link to the assignment.
    3. Write in full sentences and use headers to explain what you are writing about. I like to see work that’s structured in a consistent in a logical way.
    4. Write down any questions, comments or observations that you may have in an ordered list <ol> at the top of the document.
    5. Assess problems and identify solutions.
    6. Include pictures of however many number of thumbnails it took (more is good) and at least one mood board to show the trail of ideas and colors that led you to your final product. Show the creative development, spatial exploration and how you’ve gone about solving the problems you’ve identified.
    7. You can photograph or scan in the thumbnails together or as individual pictures and comment them as you wish using <figcaption>
    8. Size any and all images to be no larger than the size you present them. Larger pictures take longer to download.

    Landing Page

    1. You are to create an index.html inside your parsons folder that contains
      1. Make the h1 your name and update the page title to your name.
      2. a picture of you (to help me associate the person with the name)
      3. your major
      4. your minor if you have one
      5. the paragraph you wrote on your learning goals for this semester
      6. links to all of your assignments
      7. and the OpenAI text dialogue.
    2. An example of a link to an assignment looks like this: <a href="first_assignment/index.html>Website Analysis</a> I would put the OpenAI discussion below the links to your assignments. This assignment, along with the learning goals paragraph, is new for this semester, and has no precedent in the previous examples. Here is an example from a few semesters ago (expect assignments to be slightly different).
    3. Copy and paste this table into a HTML5 Template at the location of the <p> (paragraph) tag, in the <article> tag. You will turn each homework into a link that leads to your assignment. The week 2 link is provided but only works if there is a folder first_assignment with an index.html for the first assignment.
    4. See Setting Up Your Server Space for more complete details on how to set up the landing page and the other assignments on the server. See how to create a Relative Address and Creating Tags if you need a reminder of how to do that.
    <table >
    <tr><th>Date Due</th><th><th style="text-align: right;">Percent</tr>
    <tr><td>Week 2<td><a href="first_assignment/index.html">Website Analysis</a> <td>5%</tr>
    <tr><td>Week 3<td>Midterm Worksheet  (8 Steps)<td>5%</tr>
    <tr><td>Week 3<td>Responsive Mockup<td>5%</tr>
    <tr><td>Week 3<td>CSS Selection Exercise  <td>5%</tr>
    <tr><td>Week 4<td>Grid Exersize <td>5%</tr>
    <tr><td><td><strong class=quartegrade >First Quarter Assessment</strong><td>25%</tr>
    <tr><td>Week 5<td>Responsive Wireframe<td>5%</tr>
    <tr><td>Week 5<td>Code Portfolio Front Page<td>5%</tr>
    <tr><td>Week 5<td>Quiz <td></tr>
    <tr><td>Week 6<td>Typography Poster <td>5%</tr>
    <tr><td>Week 7<td>Current Topic Website<td>5%</tr>
    <tr><td>Week 8<td>Portfolio: Class Presentation <td>5%</tr>
    <tr><td><td><strong class=quartegrade >Second Quarter Assessment </strong><td>25%</tr>
    <tr><td>Week 9<td>Final: Worksheet<td>5%</tr>
    <tr><td>Week 10<td>Final: CSS3 Collateral<td>5%</tr>
    <tr><td>Week 11<td>Final: CSS3 Animatic<td>5%</tr>
    <tr><td>Week 12<td>Final: HTML/CSS<td>5%</tr>
    <tr><td>Week 12<td>Final: Modular Navigation<td>5%</tr>
    <tr><td><td><strong class=quartegrade >Third Quarter Assessment</strong><td>25%</tr>
    <tr><td>Week 13<td>Final: Multimedia<td>5%</tr>
    <tr><td>Week 13<td>Final: Alternatives<td>5%</tr>
    <tr><td>Week 13<td>Final: Peer Review<td>5%</tr>
    <tr><td>Week 14<td>Final: Forms<td>5%</tr>
    <tr><td>Week 15<td>Alternative<td>5%</tr>
    <tr><td><td><strong class=quartegrade >Final Quarter Assessment</strong><td>25%</tr>
    <tr><td>Week 15<td><strong>Final: Presentation</strong><td>10%</tr>
    <tr><td><td><strong>Two assignments dropped:</strong><td>-10%</tr>
    <tr><td><td><strong>Total:</strong><td>100%</tr>
    <tr><td><td>List of sources and services used <td></tr>
    </table>
    

    Grading Criteria

    I am looking to see how your coding skill are progressing, in both the homework and the worksheet. The more you code, the better you get at it. Once again, using the validator will help you to deliver a technically perfect document. Use it often if you are having problems, every few lines of code, that way you can see the mistakes you make and correct them one by one.

    I want to see you explore your solution in the creative process from how you state the problem to possible answers, and to have you eliminate all that does not work as well as the answer you end up with. Have many thumbnails to document the process, not just the few that lock into the concept that you’ve gone with. While all of this documentation is overkill for the current assignment, you will get into the habit and develop the proper methods when it comes to creating a complete web site.

    I will be grading you on levels of confidence, consistency, creativity, innovation, precision, accuracy, efficiency and the ingenuity by which you are able to solve the problems.

    Grading Rubric

    I realize that English is not everyone’s first language. It is my second language. I am not going to ask the impossible, and I will take such difficulties into consideration. That said, persuasive content is crucial to a successful website.

    1. At bare minimum, I expect a couple of paragraphs marked up for each part of the assignment, pictures sized correctly and placed on the page using HTML5.
    2. Ideally, I expect the writing to be coherent and informative. This assignment will morph into your midterm portfolio, and I expect you to have some respect for your own work, and show that.
    3. I will be pleasantly surprised if you are able to create a story that is engaging and fun to read, and not just coherent and informative.