Now that we have covered creating your first website, let's get into making it look appealing to users. This is a compilation of what I believe to be the most essential CSS properties to get you started on making a beautiful website.

Sizing Properties

Margin/Padding

Margin controls how much the distance your element and adjacent elements and padding controls how much spacing is between your element's border and its content. Padding and margin can create what is known as negative space (space around and between a subject such as an image or text), which promotes readability to the user by guiding their eyes.

Margin Padding & Border Illustration

There are multiple ways for you to write the value for margin and padding--the easiest way to remember is that all 4 values spin in the direction of a clock with only 4 values on it (12, 3, 6, and 9). With each numbers representing the way the arrow is facing on the clock.

.myElement {
    /* Top Right Bottom Left */
    margin: 25px 15px 25px 15px;

    /* Top Right Bottom Left */
    padding: 25px 15px 25px 15px;

    /* Top/Bottom Right/Left */
    margin: 55px 15px;

    /* Top/Bottom/Right/Left */
    padding: 25px;
}

Property Values

Value Description
length Value in px, pt, em, cm
% Specify a margin in a percentage of the parent element
initial Default value
inherit Inherit the value from the parent element
auto Let the browser decide

Here is a JSFiddle that demonstrates the relationship between margin, padding, and border:

Width/Height

The width and height properties are fairly self explanatory. It's the width and height of your element!

Example:

.myElement {
    width: 100px;
    height: 100px;
}

.halfWidthElement {
    width: 50%;
}

Property Values

Value Description
length Value in px, pt, em, cm, etc.
% Percent of width of the parent
initial Default value
inherit Inherit the value from the parent element
auto Let the browser decide

Here is a widget to show you width, height, padding, margin, and how border affects elements.

Positioning Properties

Position

The position element is one of the most important CSS properties out there for deciding how your website will be laid out.

Example:

.myElement {
    position: absolute;
    position: relative;
    position: sticky;
    position: fixed;
}

Property Values

Value Description
initial Default value
inherit Inherit value from the parent element
relative Whether absolutely positioned child elements should be positioned RELATIVE to this element
absolute Absolutely positioned elements looks for the a parent descendant that has a relative, absolute, or fixed, position to position itself on.
static This is the default position for DIV elements. Static is the default way of laying elements out
fixed Fixed elements are positioned relative to the viewport
sticky A sticky position is both like a relative and fixed position. The elemt will attempt to make itself always visible and stick to the top when the parent element is scrolled downward.

Top/Right/Bottom/Left

The top, right, bottom, left CSS properties control fixed, and absolutely positioned elements.

.myElement {
    top: 15px;
    left: 25%;
    top: 1em;
    right: 5cm;
}

Property Values

Value Description
length px, cm, em, etc.
% Percent value of relative/fixed parent

Here is a widget I've made to showcase some of the positions and how to use them.

Transform

Transform allows you do to all sorts of things to an element such as scaling, rotation, and skewing.

Property Values

Value Description
none Default value
matrix Transform the element by a matrix
translate(x, y) Move the element from the left and top by x and y followed by any measurement (px, %, etc)
translateX(x) Move the element from the left by x
translateY(y) Move the element from the top by y
rotate(x) Rotate the element by the given measurement (deg, turn, rad, etc.) of x
scale(x) Scale the element by the given measurement of x
scale(x, y) Scale the element by the given measurements of x and y
skew(x) Skew the element by the given measurements (deg, turn, rad, etc.) of x
skew(x, y) Skew the element by the given measurements (deg, turn, rad, etc.) of x and y

It is also possible to chain the transform functions in one CSS property like this:

.myElement {
    transform: translate(-15px, -25px) rotate(45deg);
}

To learn more about the transform CSS property, Mozilla has an excellent explanation here.

Miscellaneous Properties

Box Shadow

Box shadows can add some really nice depth to your site.

Example:

.myElement {
/*Format: <horizontal offset> <vertical offset> <blur radius> <spread (optional)> <color> */
    box-shadow: 3px 3px 5px 5px #ccc;
}

I've created this CSS generator tool for you to try it out. Try adding this to one of your elements CSS rules and see what you can do with it.