User:Ccsmith/sandbox?HTML and Wikitext - Lesson 4

Lesson 1 > Lesson 2 > Lesson 3 > > Lesson 5

What you will learn in this Lesson

 * Uses of    tags.
 * How div elements arrange themselves on a page.
 * How to create a gallery with div elements.
 * How to position div elements

Divisions
As we have seen, tables can help us put material on a page and have some control over how the data looks and where it is a the page, but there are better ways.
 * In this lesson we will look at  tags, the work horse of the internet and wiki.

Div Element
A  tag (stands for division) segregates a block of material that might include images, tables, text, etc. There is another element, the  that is simuliar which we will discuss later.


 * Think of a  tag as a container.  A box you can put many different items and move around.
 * Think of a  tag as a element that you can locate elsewhere on a page without having to settle for where your browser wants to put it.
 * Think of a  tag as a   without the need of row or table tags.
 * Think of a  tag as a layer that can be setting on top of other layers.
 * You should be able to guess that this element has a great number of uses which should open your creative juices.

Div Element as a Container
You can put these kinds of elements in a  element:


 * Text
 * Images
 * Tables
 * Other  elements
 * All the above at the same time!

Here is a div element using some of the attributes we used on tables: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
 * Notice that there is no wikitext equivalent to HTML div tag.

Arrangement of Div Elements
What happens when you put two or more div elements on a page? Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. How did the div elements arrange themselves on the page?
 * Here are three div containers of text and they will have a different background color so you can see how they arrange themselves on a page.
 * The text goes the full width of the page.
 * There is no space between the div elements.
 * The div elements begin in the upper left hand corner on a blank page or under what is already on the page.
 * They are arranged vertically in order of entry just as if you were adding new text.

These are the default positions of div tags by your browser. It always places the upper left corner of the div element to the next available place on your page in upper left corner.

Let's apply some attributes to the div tags like width, padding, and borders to see what happens next: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. They are still in the same order they were entered in spite of the attributes given to them.

Floating Div Elements
What if we want to put them side by side like in a gallery. How do we do that?
 * We do not have to create a table and place these boxes in a row of cells.
 * We use our float attribute in the div tag.
 * Install float:left into all three starting div tags. What do you see now?
 * They are now beside each other on the left side of the page.
 * Again we do not have to use tables to accomplish the gallery format.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
 * Here's what the code will look like in each other the three boxes.



The code should look something like this:  Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
 * Notice what happens to text that is outside our boxes.
 * Because the boxes are floating to the left side of the page, the text is wrapping around to the right.
 * This is rather annoying so how do we keep text from wrapping when using the float attribute?
 * Put the text in its own set of div tags.
 * Be sure to install a width attribute of 99% or less or an exact number of pixels.
 * Don't use 100% as it is the default anyway and will allow wrapping to take place.


 * If you should float one of the boxes to the right, then it looks like this:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
 * You have to watch the width of the individual div tags.
 * If they are collectively to wide for the page, one or both of them will be placed on a new line below the others like so:

Positioning Div Elements
Another neat thing we can do with div tags to be able to place objects exactly where we want them on the page, regardless of what is on the rest of the page even to overlap other objects.
 * Positioning attribute is a little tricky to understand but will make sense as you think about it.
 * There are four property values for positioning attributes:
 * Static - Default. Object appears as they normally would on a page.
 * Absolute - Stays in one spot regardless if on a page as a whole or inside another element.
 * Relative - Stays in one spot in relation to where the browser would normally put the object.
 * Fixed - Stays in one spot on your screen, regardless if you are scrolling up or down the page. If you place an image in the upper right hand corner of the page you see it always be there even if you scroll down to the bottom of the page.

Let's take the example of an image on a page.
 * If we were to put an image on a blank page, where would the browser put it?
 * In the upper left corner of the browser window.


 * Here is an illustration. The yellow box represents an image and the red box represents the browser window or what you see on your monitor.
 * The position of the yellow box (image) is in the default position. This is where the browser will put your image if you did not tell it otherwise.

How to Position Objects

 * PLEASE TAKE NOTE: All measurements are taken from the upper left corner of the object you are trying place. We're not measuring from the center or the edge or from any other part of the object, we are always measuring from the upper left corner.  This is critical to understand positioning.


 * For horizontal positioning, if you want to move the image 50px to the right, your attribute will be left:50px from the upper left corner. So if you want to move to the right you use the left attribute, or you can use right:-50px.
 * If you want to move the image 50px to the left, your attribute will be right:50px from the upper left corner. So if you want to move to the left you use the right attribute,  or you can use left:-50px.
 * For vertical positioning, if you want to move the image 70px down from the top, you attribute will be top:70px

The positioning attribute has two parts: the position value and the distance value like so: position:absolute; left:50px; top:70px
 * In this example, the object's upper left corner is to be 50px right from where the browser would normally put the object.
 * The object's upper left corner is to be 70px below the top from where the browser would normally put the object.
 * Notice that there is a semi-colon between the attributes.
 * You could use just the left attribute which will keep the object at the top of the page but still be 50px to the left of the normal position the browser would have put the object.


 * Let's put our yellow box (image) 50px from the left side of the red box and 70px down from the top:

Here is the coding: 
 * Notice a table was not necessary to place the yellow box.

Create gallery with positioning attributes

 * To place other boxes in a gallery, it could look like this:

Here is the code for all three boxes. Notice the positioning attribute: 






 * The first box was placed 50px to the right and 70px from the top of the red box.
 * Since the width of the boxes are 50 pixels and we want the second box to be just to the right of the first box, we will make use left:100px. This is the sum of the distance from the left edge to the first box plus the width of the second box.  The distance down from the top is the same as the first box.
 * The third box will be 150px from the left which is the sum of the distance to the left edge of the second box plus the width of the second box.

Let's talk about absolute and relative position some more.

Absolute Position

 * IMPORTANT - Absolute positioning should be used inside a relative positioning attribute.
 * Absolute positioning puts an object in a certain place regardless of else is on the page. In fact it completely ignores what is on the page.
 * The stuff on the page can't even see the absolute position object. You can literately change the stuff on the page and the absolute position object will not be effected.
 * Absolute positioning has its draw backs when use alone. It can appear in slightly different places depending on the browser and the monitor of the patron.
 * Best use of absolute positioning is inside relative positioning because it will move with the relative positioned object if you want to shift it to a different part of the article.

Relative Position

 * The stuff on the page can see a relative position object and makes room for it.
 * Here is where absolute position comes in. You can place object absolutely inside relative position boxes and they will stay in place regardless of the browser or monitor.
 * So if you absolute positioned an image in a relative position box it will stay in that location even if you move the relative position box to another location on the page.
 * This gives you a very powerful tool to place things on pages that will stay put.

Small Project using div tags

 * Notice how the boxes all keep their place even if the red box is moved 100px to the right.

Here's how to then make a gallery using positioning attributes:
 * Create a position:relative div element.
 * Place your object inside this div element.
 * Space them by using the width of the first box as the number of pixels to space the second box.
 * Space the third one the total number of pixels to the right of the width of the first and second boxes.

gallery with position attributes
one two three four