Creating CSS Based Fixed Layout
Creating CSS Based Fixed Layout
If you search online on "How to create CSS based layout", you will hit lots of resources to teach
you how to use CSS to make your own layouts. So, in this article, I'll focus mainly on how to use
different Layout Panels bundled in Netbeans Visual Web along with some HTML elements. We
will be using
HTML <div> element - Used mainly to position the containers Top, Left, Right or bottom using
CSS
Layout Panel - This component renders a <div> element surrounding its children. You can
add components to this layout in Flow Layout Mode or Grid Layout model, depending
on its property panelLayout.
Grid Panel - This component renders a <table> element placing its children inside the <td>
element. It is a very convenient and useful layout components to arrange your components in
rows and columns. We will be using this panel mostly to create the Page layout.
Group Panel - This component renders a <span> components. So a good layout for placing
the components in natural grouping. The main difference between LayoutPanel and
GroupPanel is, while the former can define its own styles and apply the formatting to the
components it encloses, the latter inherits most of the styling and formatting from its parent. It
is nothing but <div> vs <span>.
In this article, I will cover only CSS based layout since it is easy to design and maintain. When
you design a CSS based page layout, you can think of two types of design.
Fixed width page layout - In this type the width of the page is fixed. The page is
always displayed centered in the browser.
Fluid width page layout - Unlike fixed width, the page width is fluid, in the sense,
when the width of the browser changes, the width of the page also changes. The components
are fluidly repositioned based on the width of its container.
Fixed width layout is easy to design while fluid layouts are complex and more care is needed
while designing to make sure the components gets rearranged elegantly when the browser width
changes. In this article I will cover the steps to create a Fixed Width Page Layout
Steps to create the CSS based fixed width page layout:
Let us start with a new Visual Web Application called "FixedPageLayoutEx"
1
Rename Page1 to PageLayout1
Add the following HTML to the JSP inside the <form> component. I wish we have the HTML
elements as components in the palette so that we can drag and drop it in to the designer.
Unfortunately we don't have them yet in the palette, so you need to type it in the JSP.
<div id="container">
<div id="header">
Header
</div>
<div id="leftBar">
Left Bar
</div>
<div id="content">
Main Content
</div>
<div id="rightBar">
Right Bar
</div>
<div id="footer">
Footer
</div>
</div>
Right click on the resources folder and select New -> Other. From the New File dialog select
Other -> Cacscading Style Sheet.
Provide the Style sheet name layout
Drag and drop Advanced -> Link component on to the designer
2
Select the link component in the outline and from the property sheet, set the URL as
layout.css
#container {
margin:auto;
width: 760px;
background: #ffffff;
}
#header {
background: #DDDDDD;
}
#leftBar {
float: left;
width: 150px;
background: #EBEBEB;
}
#content {
float:left;
width:450px;
background-color: #cdcde6;
}
#rightBar {
float:right;
width: 160px;
background: #EBEBEB;
}
#footer {
clear:both;
background:#DDDDDD;
}
Give attention to the CSS properties highlighted with blue. They are responsible for placing the
containers (<div>) at the correct place. The footer CSS rule has the property clear:both
which gives the hint to the browser that both of its ends should be cleared (does not allow
floating elements on both sides), so it is always placed beneath the other floating elements.
Deploy the application and it should look like the following
3
Now that we got the basic design in place, let us add our components to make the real page
layout.
Drag and drop a Layout Panel component on to the header div. The Layout Panel initially
has the size (128 x 128 pixels)
After dropping the Layout Panel go to JSP and remove the content "Header" from the header
<div>
Using the Style Builder (invoke it from the "..." button in the Layout Panel property sheet) and
set the height to 175px and width to 760px
(Note the width is same as width of the container <div> as specified in the layout.css
Set the background image of the Layout Panel using style builder. I used the header image from
one the Open Source Web Design Layout called andreas01.
If you set the Page Layout of the Layout Panel as GridLayout, then you can easily
place other components as you place in page with Grid Layout.
If you would rather wish to use Flow Layout then you must use other layout components to
format the component placement.
Drag and drop a Static Text on to the Layout Panel and set its text as Fixed Page
Layout 1 and style the text as you wish.
Let us assume we are going to have a Navigation Bar in the left hand side. Let us keep it
simple and consider the navigation bar is nothing but a list of hyperlinks.
4
Drag and drop a Grid Panel component on to the leftBar div. The Grid Panel initially has
the size (128 x 128 pixels). Once a component is added to the Grid Panel, the initial size is
discarded.
Remove the content Left Bar from the leftBar <div> in the JSP
Drag and drop couple of HyperLink components on to the Grid Panel. Look at the outline and
make sure all the hyperlinks are inside the Grid Panel, rearrange if needed.
Again like Left Bar, let us keep the contents of Right Bar also simple. Let us add some text and
some image.
Drag and drop a Group Panel component on to the rightBar <div>. Like other panels,
Group Panel also initially has the size (128 x 128 pixels). Once a component is added to the
Group Panel, the initial size is discarded.
Remove the content Right Bar from the rightBar <div> in the JSP
Drag and drop a StaticText component and add some text to it. Note, you can add some
HTML as text. Make sure to uncheck the escape property of the StaticText
Add an Image component to the Group panel and set some image
5
Step5: Add the footer contents
Let us add some links to the footer panel that are aligned centered.
6
Step 6: Add contents to Main Content menu
The last is the important step where we will be putting the main contents.
Note: If you want the main content panel to grow as per its content, then use Group Panel
instead of Layout Panel. Since Group Panel does not support Grid Layout mode,
you should use different Layout components to layout components in a flow layout mode.
Deploy and view how our final Page Layout would look.
7
We have step through few steps to create a very simple Fixed Page Layout. Remember CSS is
very powerful. With very few tweaks here and there you could create a pretty impressive Page
Layout.
My recommendation is to take a look at some of the Page Layouts at the Open Source Web
Design site and then create your own pretty looking web site.