SPACEBAR to move forward through slides.
SHIFT & SPACEBAR to move backwards through slides.
LEFT ARROW & RIGHT ARROW to move through sections.
ESC to see overview and ESC again to exit.
F to enter presentation mode and ESC to exit.
The top, right, bottom, and left properties allow authors to define the location of positioned elements.
The top property helps to specify the vertical position of a positioned element.
/* Top using length */
p {
position: absolute;
top: 20px;
}
The effect of top depends on how the element is positioned.
With absolute positioning, the top property specifies the distance between the element’s top edge and the top edge of its containing block.
If no ancestors have positioning, the element will be positioned in relation to the initial containing block.
For example, setting top: 20px will move an absolutely positioned element 20px down from the top edge of its containing block.
Setting top: -20px will move an absolutely positioned element 20px up from the top edge of its containing block.
Setting top: 50% will move an absolutely positioned element down 50% of the height of the containing block, from its top edge.
With fixed positioning, the top property specifies the distance between the element’s top edge and the top edge of the viewport.
For example, setting top: 20px will move a fixed positioned element 20px down from the top edge of the viewport.
With relative positioning, the top property specifies the distance the element’s top edge is moved away from its normal position.
For example, setting top: 20px will move a relatively positioned element 20px down from its normal position.
When position is set to sticky, the top property is ignored until the element is outside of the viewport.
However, the top property behaves as if it set to position: fixed when the element is outside the viewport.
For example, setting top: 20px will initially be ignored.
However, if the page is scrolled up and the element is outside the viewport, the element will sit 20px down from the top edge of the viewport.
When position is set to static, the top property has no effect.
There are times when three different properties are defined for a specific element: top, bottom and height.
There is a possibility that some of these properties may clash.
For example, top: 0 and bottom: 0 will stretch the element to the top and bottom of the containing block.
But what happens if there is also height: 200px? Which properties will be applied and which will be ignored?
In the following example, an absolutely-positioned element has been given top and bottom values, and either no height or height: auto.
/* Top, bottom */
.example1 {
position: absolute;
top: 0;
bottom: 0;
}
/* Top, bottom and height */
.example2 {
position: absolute;
top: 0;
bottom: 0;
height: auto;
}
In both of these cases, both top and bottom values will be respected so the element will stretch to the full height of the containing block.
In the following example, an absolutely-positioned element has been given top and bottom values as well as a height.
/* Height using a length */
.example3 {
position: absolute;
top: 0;
bottom: 0;
height: 100px;
}
In this cases, the element will be positioned at the top of the containing block with a height of 100px. The bottom value will be ignored.
In the following example, a fixed-positioned element has been given top and bottom values, and either no height or height: auto.
/* Top, bottom */
.example4 {
position: fixed;
top: 0;
bottom: 0;
}
/* Top, bottom and height */
.example5 {
position: fixed;
top: 0;
bottom: 0;
height: auto;
}
In both of these cases, both top and bottom values will be respected so the element will stretch to the full height of the viewport.
In the following example, a fixed-positioned element has been given top and bottom values as well as a height.
/* Height as a length */
.example6 {
position: fixed;
top: 0;
bottom: 0;
height: 100px;
}
In this cases, the element will be positioned at the top of the viewport with a height of 100px. The bottom value will be ignored.
In the following example, a relatively-positioned element has been given top and bottom values.
/* Top, bottom */
.example7 {
position: relative;
top: 0;
bottom: 0;
}
Regardless of whether a height has been specified, if top and bottom values have been specified, the bottom value is ignored.
Open this HTML file in an editor:
exercises-start/exercise-210-01.html
Write a CSS rule to set the element with a class of example1 to position: absolute.
Also set the element with top: 50px.
/* Add styles here */
.example1 {
position: absolute;
top: 50px;
}
Write a second CSS rule to set the element with a class of example2 to position: fixed.
Also set the element with top: 100px.
/* Add styles here */
.example2 {
position: fixed;
top: 100px;
}
Write a third CSS rule to set the element with a class of example3 to position: relative.
Also set the element with top: 20px.
/* Add styles here */
.example3 {
position: relative;
top: 20px;
}
Write a fourth CSS rule to set the element with a class of example4 to position: sticky.
Also set the element with position: -webkit-sticky for Webkit browsers that do not support position: sticky.
As with all browser-specific values, the -webkit-sticky value should be placed above the native sticky value.
Finally, set the element with top: 0.
/* Add styles here */
.example4 {
position: sticky;
position: -webkit-sticky;
top: 0;
}
Check your work against the finished HTML file:
exercises-finished/exercise-210-01.html
The right property helps to specify the horizontal position of a positioned element.
/* Right as a length */
p {
position: absolute;
right: 20px;
}
The effect of right depends on how the element is positioned.
With absolute positioning, the right property specifies the distance between the element’s right edge and the right edge of its containing block.
If no ancestors have positioning, the element will be positioned in relation to the initial containing block.
For example, setting right: 20px will move an absolutely positioned element 20px to the left of the right edge of its containing block.
Setting right: -20px will move an absolutely positioned element 20px to the right of the right edge of its containing block.
Setting right: 50% will move an absolutely positioned element to the left 50% of the width of the containing block, from its right edge.
With fixed positioning, the right property specifies the distance between the element’s right edge and the right edge of the viewport.
For example, setting right: 20px will move a fixed positioned element 20px to the left from the right edge of the viewport.
With relative positioning, the right property specifies the distance the element’s right edge is moved away from its normal position.
For example, setting right: 20px will move a relatively positioned element 20px to the left of its normal position.
When position is set to static, the right property has no effect.
There are times when three different properties are defined for a specific element: left, right and width.
There is a possibility that some of these properties may clash.
For example, left: 0 and right: 0 will stretch the element to the left and right of the containing block.
But what happens if there is also width: 200px? Which properties will be applied and which will be ignored?
In the following example, an absolutely-positioned element has been given left and right values, and either no width or width: auto.
/* Left, right */
.example1 {
position: absolute;
left: 0;
right: 0;
}
/* Left, right and width */
.example2 {
position: absolute;
left: 0;
right: 0;
width: auto;
}
In both of these cases, both left and right values will be respected so the element will stretch to the full width of the containing block.
In the following example, an absolutely-positioned element has been given left and right values as well as a width.
/* Width as a length */
.example3 {
position: absolute;
left: 0;
right: 0;
width: 100px;
}
In this cases, the right value will be ignored. The element will be positioned at the left of the containing block with a width of 100px.
In cases where the direction of the document, or section of the document has the dir set to rtl (right to left), the left value would be ignored instead.
<!-- HTML markup -->
<div class="content" dir="rtl">
...
</div>
In the following example, a fixed-positioned element has been given left and right values, and either no width or width: auto.
/* Left, right */
.example4 {
position: fixed;
left: 0;
right: 0;
}
/* Left, right and width */
.example5 {
position: fixed;
left: 0;
right: 0;
width: auto;
}
In both of these cases, both left and right values will be respected so the element will stretch to the full width of the viewport.
In the following example, a fixed-positioned element has been given left and right values as well as a width.
/* Width as a length */
.example6 {
position: fixed;
left: 0;
right: 0;
width: 100px;
}
In this cases, the element will be positioned at the left of the viewport with a width of 100px. The right value will be ignored.
In the following example, a relatively-positioned element has been given left and right values.
/* Left, right */
.example7 {
position: relative;
left: 0;
right: 0;
}
Regardless of whether a width has been specified, if left and right values have been specified, the right value is ignored.
In cases where the direction of the document, or section of the document has the dir set to rtl (right to left), the left value would be ignored instead.
<!-- HTML markup -->
<div class="content" dir="rtl">
...
</div>
Open this HTML file in an editor:
exercises-start/exercise-210-02.html
Write a CSS rule to set the element with a class of example1 to position: absolute.
Also set the element with right: 50px.
/* Add styles here */
.example1 {
position: absolute;
right: 50px;
}
Write a second CSS rule to set the element with a class of example2 to position: fixed.
Also set the element with right: 100px.
/* Add styles here */
.example2 {
position: fixed;
right: 100px;
}
Write a third CSS rule to set the element with a class of example3 to position: relative.
Also set the element with right: 20px.
/* Add styles here */
.example3 {
position: relative;
right: 20px;
}
Check your work against the finished HTML file:
exercises-finished/exercise-210-02.html
The bottom property helps to specify the vertical position of a positioned element.
/* Bottom */
p {
position: absolute;
bottom: 20px;
}
The effect of bottom depends on how the element is positioned.
With absolute positioning, the bottom property specifies the distance between the element’s bottom edge and the bottom edge of its containing block.
If no ancestors have positioning, the element will be positioned in relation to the initial containing block.
For example, setting bottom: 20px will move an absolutely positioned element 20px up from the bottom edge of its containing block.
Setting bottom: -20px will move an absolutely positioned element 20px down from the bottom edge of its containing block.
Setting bottom: 50% will move an absolutely positioned element up 50% of the height of the containing block, from its bottom edge.
With fixed positioning, the bottom property specifies the distance between the element’s bottom edge and the bottom edge of the viewport.
For example, setting bottom: 20px will move a fixed positioned element 20px up from the bottom edge of the viewport.
With relative positioning, the bottom property specifies the distance the element’s bottom edge is moved away from its normal position.
For example, setting bottom: 20px will move a relatively positioned element 20px up from its normal position.
When position is set to static, the bottom property has no effect.
There are times when three different properties are defined for a specific element: top, bottom and height.
There is a possibility that some of these properties may clash.
For example, top: 0 and bottom: 0 will stretch the element to the top and bottom of the containing block.
But what happens if there is also height: 200px? Which properties will be applied and which will be ignored?
In the following example, an absolutely-positioned element has been given top and bottom values, and either no height or height: auto.
/* Top, bottom */
.example1 {
position: absolute;
top: 0;
bottom: 0;
}
/* Top, bottom and height */
.example2 {
position: absolute;
top: 0;
bottom: 0;
height: auto;
}
In both of these cases, both top and bottom values will be respected so the element will stretch to the full height of the containing block.
In the following example, an absolutely-positioned element has been given top and bottom values as well as a height.
/* Height as a length */
.example3 {
position: absolute;
top: 0;
bottom: 0;
height: 100px;
}
In this cases, the element will be positioned at the top of the containing block with a height of 100px. The bottom value will be ignored.
In the following example, a fixed-positioned element has been given top and bottom values, and either no height or height: auto.
/* Top, bottom */
.example4 {
position: fixed;
top: 0;
bottom: 0;
}
/* Top, bottom and height */
.example5 {
position: fixed;
top: 0;
bottom: 0;
height: auto;
}
In both of these cases, both top and bottom values will be respected so the element will stretch to the full height of the viewport.
In the following example, a fixed-positioned element has been given top and bottom values as well as a height.
/* Height as a length */
.example6 {
position: fixed;
top: 0;
bottom: 0;
height: 100px;
}
In this cases, the element will be positioned at the top of the viewport with a height of 100px. The bottom value will be ignored.
In the following example, a relatively-positioned element has been given top and bottom values.
/* Top, bottom */
.example7 {
position: relative;
top: 0;
bottom: 0;
}
Regardless of whether a height has been specified, if top and bottom values have been specified, the bottom value is ignored.
Open this HTML file in an editor:
exercises-start/exercise-210-03.html
Write a CSS rule to set the element with a class of example1 to position: absolute.
Also set the element with bottom: 50px.
/* Add styles here */
.example1 {
position: absolute;
bottom: 50px;
}
Write a second CSS rule to set the element with a class of example2 to position: fixed.
Also set the element with bottom: 100px.
/* Add styles here */
.example2 {
position: fixed;
bottom: 100px;
}
Write a third CSS rule to set the element with a class of example3 to position: relative.
Also set the element with bottom: 20px.
/* Add styles here */
.example3 {
position: relative;
bottom: 20px;
}
Check your work against the finished HTML file:
exercises-finished/exercise-210-03.html
The left property helps to specify the horizontal position of a positioned element.
/* Left as a length */
p {
position: absolute;
left: 20px;
}
The effect of left depends on how the element is positioned.
With absolute positioning, the left property specifies the distance between the element’s left edge and the left edge of its containing block.
If no ancestors have positioning, the element will be positioned in relation to the initial containing block.
For example, setting left: 20px will move an absolutely positioned element 20px to the right of the left edge of its containing block.
Setting left: -20px will move an absolutely positioned element 20px to the left of the left edge of its containing block.
Setting left: 50% will move an absolutely positioned element to the right 50% of the width of the containing block, from its left edge.
With fixed positioning, the left property specifies the distance between the element’s left edge and the left edge of the viewport.
For example, setting left: 20px will move a fixed positioned element 20px to the right from the left edge of the viewport.
With relative positioning, the left property specifies the distance the element’s left edge is moved away from its normal position.
For example, setting left: 20px will move a relatively positioned element 20px to the right of its normal position.
When position is set to static, the left property has no effect.
There are times when three different properties are defined for a specific element: left, right and width.
There is a possibility that some of these properties may clash.
For example, left: 0 and right: 0 will stretch the element to the left and right of the containing block.
But what happens if there is also width: 200px? Which properties will be applied and which will be ignored?
In the following example, an absolutely-positioned element has been given left and right values, and either no width or width: auto.
/* Left, right */
.example1 {
position: absolute;
left: 0;
right: 0;
}
/* Left, right and width */
.example2 {
position: absolute;
left: 0;
right: 0;
width: auto;
}
In both of these cases, both left and right values will be respected so the element will stretch to the full width of the containing block.
In the following example, an absolutely-positioned element has been given left and right values as well as a width.
/* Width as a length */
.example3 {
position: absolute;
left: 0;
right: 0;
width: 100px;
}
In this cases, the right value will be ignored. The element will be positioned at the left of the containing block with a width of 100px.
In cases where the direction of the document, or section of the document has the dir set to rtl (right to left), the left value would be ignored instead.
<!-- HTML markup -->
<div class="content" dir="rtl">
...
</div>
In the following example, a fixed-positioned element has been given left and right values, and either no width or width: auto.
/* Left, right */
.example4 {
position: fixed;
left: 0;
right: 0;
}
/* Left, right and width */
.example5 {
position: fixed;
left: 0;
right: 0;
width: auto;
}
In both of these cases, both left and right values will be respected so the element will stretch to the full width of the viewport.
In the following example, a fixed-positioned element has been given left and right values as well as a width.
/* Width as a length */
.example6 {
position: fixed;
left: 0;
right: 0;
width: 100px;
}
In this cases, the element will be positioned at the left of the viewport with a width of 100px. The right value will be ignored.
In the following example, a relatively-positioned element has been given left and right values.
/* Left, right */
.example7 {
position: relative;
left: 0;
right: 0;
}
Regardless of whether a width has been specified, if left and right values have been specified, the right value is ignored.
In cases where the direction of the document, or section of the document has the dir set to rtl (right to left), the left value would be ignored instead.
<!-- HTML markup -->
<div class="content" dir="rtl">
...
</div>
Open this HTML file in an editor:
exercises-start/exercise-210-04.html
Write a CSS rule to set the element with a class of example1 to position: absolute.
Also set the element with left: 50px.
/* Add styles here */
.example1 {
position: absolute;
left: 50px;
}
Write a second CSS rule to set the element with a class of example2 to position: fixed.
Also set the element with left: 100px.
/* Add styles here */
.example2 {
position: fixed;
left: 100px;
}
Write a third CSS rule to set the element with a class of example3 to position: relative.
Also set the element with left: 20px.
/* Add styles here */
.example3 {
position: relative;
left: 20px;
}
Check your work against the finished HTML file:
exercises-finished/exercise-210-04.html
The top, right, bottom and left properties can be defined using length values, percentage values, the auto keyword or the inherit keyword.
Length values must be a positive or negative number.
/* length values */
p { top: 3px; }
p { right: -3px; }
Length values can include any of the following length types:
/* Font-relative lengths */
p { top: .7cap; }
p { top: 1.2ch; }
p { top: .9em; }
p { top: 1.8ex; }
p { top: .9ic; }
p { top: 1.1lh; }
p { top: 1.5rem; }
p { top: .9rlh; }
/* Viewport-percentage lengths */
p { top: 1vh; }
p { top: 2vw; }
p { top: 3vi; }
p { top: 4vb; }
p { top: 5vmin; }
p { top: 6vmax; }
/* Absolute length units */
p { top: 14px; }
p { top: 10mm; }
p { top: 12q; }
p { top: 1cm; }
p { top: .25in; }
p { top: 12pt; }
p { top: 14pc; }
For absolutely positioned elements, length defines the distance that the element is moved away from its containing block.
For relatively positioned elements, length defines the distance that the element is moved away from its normal position.
Percentage values must be a positive or negative percentage number followed by the percent "%" sign.
Percentages define a percentage of the containing block’s width or height.
/* percentage values */
p { top: 10%; }
p { right: -10%; }
top: auto means that the position of the element is based on the bottom property.
right: auto means that the position of the element is based on the left property.
bottom: auto means that the position of the element is based on the top property.
left: auto means that the position of the element is based on the right property.
For relatively-positioned elements, if any of the opposite edges are also set to auto, the element is not moved at all.
/* auto value */
p { top: auto; }
The inherit keyword specifies that the value is the same as the computed value from its parent element.
/* Keyword values */
p { top: inherit; }
Open this HTML file in an editor:
exercises-start/exercise-210-05.html
Write a CSS rule to set the element with a class of example1 to left: 2em.
/* Add styles here */
.example1 {
left: 2em;
}
Write a second CSS rule to set the element with a class of example2 to left: -1em.
/* Add styles here */
.example2 {
left: -1em;
}
Write a third CSS rule to set the element with a class of example3 to left: 15%.
/* Add styles here */
.example3 {
left: 15%;
}
Check your work against the finished HTML file:
exercises-finished/exercise-210-05.html
Site Twitter Github Slideshare Linkedin