HTML5/CSS Layout
Written by David Conrad   
Thursday, 23 February 2017
Article Index
HTML5/CSS Layout
Float
In-line elements

 

For example if you take six blocks and float all of them to the left then you would end up with a line of six blocks with a possible wrap around to the "next line" if they didn't fit in the container.

 

loaftleft3

 

However if you now add a clear:both or a clear:left to the yellow block it will start a new line:

 

loaftleft4

 

The HTML is:

<div class="container">
 <div style="float:left;
             width:50px;
             height:50px;
             background-color:blue;">
 </div>
 <div style="float:left;
             width:50px;
             height:50px;
             background-color:red;">
 </div>
 <div style="float:left;
             width:50px;
             height:50px;
             background-color:green;">
 </div>
 <div style="clear:both;
             float:left;
             width:50px;
             height:50px;
             background-color:yellow;">
 </div>
 <div style="float:left;
             width:50px;
             height:50px;
             background-color:blue;">
 </div>
 <div style="float:left;
             width:50px;
             height:50px;
             background-color:red;">
 </div>
</div>

 

All of the above layout rules work if the blocks have different heights. In this case the tallest block is used to set the height of the space used by the blocks.

For example if you make the first red block much taller than the rest the result of the previous layout is:

 

loaftleft5

 

In-line elements

The above rules are about how block elements interact during layout. Most accounts of how layout works, floats in particular, tend to concentrate on how in-line elements interact with blocks, text in particular.

First recall that the rules for in-line elements and non-floated blocks specify that in-line elements start new layout lines, just like non-floated blocks. So if we have six non-floated blocks they form a stack and any text starts underneath the stack.

The rules for in-line elements and floated blocks are also fairly easy. They simply wrap around any block elements that are floated to the left or right. Any in-line element that has a clear set avoids all of the corresponding floated blocks and is position on a new layout line.

For example, if you place two paragraph blocks of text inside the container with the six floated blocks of the last example the result is:

 

text1

 

You can see that the two paragraphs justify around the blocks. If you want the second paragraph to avoid the floated blocks and start below the last row of floats you can set clear:

<p style="clear:both";>

This produces the result:

 

text2

 

There are more complicated examples that you can think up but once you have the idea of how the default vertical layout works, and how it can be changed using floated blocks, then you can generally understand what is going on.

Is this stuff useful?

Well obviously using floated blocks makes text layout more flexible and sophisticated but there is another use.

In the examples we simply used an empty div with a colored background to show where the block elements were. In most layouts the block elements would contain other child elements. What this means is that you can use floated block elements to create complex grid-like layouts - more of this in another article.

If you are thinking, why not use a table, then you are missing the whole point of HTML and CSS. Remember that HTML isn't about layout and HTML tables should be used for tabular data. If you want a grid layout then one option is to use CSS to create floated blocks with a regular pattern but there are other alternatives as we shall see.

 

cssicon

 

Related Articles

jQuery 3 - Selectors 

CSS For Programmers - Building a Custom CSS Button

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

 

Banner


C23 ISO Standard Is Here But You Probably Won't Read It
06/11/2024

At last ISO C23 has been published, but at $250 you probably aren't going to read it. Can we really tolerate this sort of profiteering on the work of others? This is worse than academic publishing!



The Feds Want Us To Move On From C/C++
13/11/2024

The clamour for safe programming languages seems to be growing and becoming official. We have known for a while that C and C++ are dangerous languages so why has it become such an issue now and is it  [ ... ]


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info



Last Updated ( Thursday, 23 February 2017 )