-
I'm laying out a webpage for hopper,
one of our avatars here on Khan Academy.
-
It's got an image, some cool links,
and a paragraph.
-
I think that this picture of Hopper
would look better next to the paragraph,
-
so I'm going to cut
-
and paste it down here.
-
Hm. Okay, that doesn't look
as good as I hoped it would.
-
The text starts
at the bottom of the image.
-
I was hoping that the text
would wrap around the image,
-
like in newspapers and magazines.
-
We'll need a new
CSS property for that: `float`.
-
It's a way of floating elements
in and around other elements,
-
and it's perfect
for wrapping text around images.
-
So we go up to our "pic" rule, and say:
`float: `.
-
And then for the value, we need to decide
if we want the picture to float
-
to the left-hand side
or the right-hand side.
-
Let's try left.
-
Great. Perfect.
-
Well, okay, not quite perfect,
-
because the text
is really close to the image.
-
Do you remember
what property we should use
-
to separate the text from the image?
-
It's part of the box model,
which we just learned.
-
Margin.
-
Let's add some `margin: right`
and `margin: bottom` to this image
-
to give it a little breathing room.
-
Ah, okay, that's much better.
-
We can also float elements
that aren't images.
-
Like if we want something like a sidebar.
-
Let's-- what about this list of links?
-
We can take this list of links
and float it to the right.
-
So let's add a rule for `#hopper-links`,
-
and float it to the right.
-
Okay, it's floating
but it's taking up a lot of width--
-
more than I was hoping it'd take up.
-
Let's restrict the width to 30 percent
-
so it'll always take up
30 percent of the page,
-
and the rest of the page will fill in
the remaining 70 percent.
-
Generally, whenever we float a `div`,
we have to give it a width.
-
Because otherwise,
`div`s try to take up all of the space,
-
and nothing can wrap around them.
-
Seems like it also needs a little bit
of a `margin: left`, too.
-
Ah, okay.
-
Now, notice the footer at the bottom
of the contact info for Hopper.
-
It's doing this weird thing where
it's overlapping the sidebar.
-
And that's because it's "wrapping".
-
We don't want our footer to wrap, though.
-
We want it to always be
on the bottom of everything,
-
because it's a footer.
-
To make it not wrap, we can use
the `clear` property,
-
-
and put `clear: both`.
-
Hah.
-
We could use
`clear: left` or `clear: right`
-
if we only wanted to not wrap around
-
right-floating elements
or left-floating elements.
-
But usually we want to not wrap around
any floating elements,
-
so we say `clear: both`.
-
This is starting to look like
a real webpage.
-
We have a main area, a sidebar, a footer.
-
In fact, you now know the CSS properties
that make most webpage layouts happen.
-
Put together some `div`s with width,
height, padding, margin, float, and clear,
-
and there are all sorts
of webpage layouts at your fingertips.