Mywebdunia's Blog

Archive for the ‘CSS’ Category

We all know how to align a table at the center. Just say <table cellspacing="0" cellpadding="0" align="center" wiidth="100%"> its gets the table aligned to the center of the page. In the same way how about aligning a div at the center of the page. There are a few different methods how to make it in the center.

Here are these methods

1. Using <center> tag
Ex:
<center>
<div class="xyz">Some content goes here…</div>
</center>

This will get the div aligned at the center along with this the content also gets aligned at the center. Well you might be knowing that the <center> tag is a deprecated tag[Read More]. So now is not receomended to use it. Still most of the browsers will allow you to use it. But this is not the feasible and recomended method.

2. Using align attribute
Ex:
<div class="xyz" align="center">Some content goes here…</div>

Also by using the above tag the div wount get aligned to center instead only the content gets aligned to the center. Align attribute is also a deprecated attribute, its no more recomended. So this is not the feasible and recomended method.

3. Using CSS attributes
Ex:

<div class="pqr">Some content goes here..</div>

<style type="text/css">
.pqr{
width:500px;
border:1px solid #666666;
margin: 0, auto;
}
</style>

By using the above style you can align the div at the center of the page. The margin=0 that is the top and bottom margin is 0 and the left and right margin is auto in the sense fill the gap automatically, by which the div gets aligned to the center, either of the whole page or within the block element. This is the best and recomended method to align a div at the center. This is tested in all the browsers.

Try this and test it on different browsers, if you find any issues let me know.

Aligning a footer at the bottom of the page, when you are creating a layout with tables is not a big issue. We can make it within no time. But if you want to align a footer at the bottom of the page always, even if there is no content and for different resolutions, there is a big constrain. We are not able to get the footer at the bottom of the page. Well if it would have been a table we would have given height=100% for the main table, which will of course will get the footer at the bottom of the page no matter how short the content is.

Well so how to get this working with div’s. I always have this problem in fixing this issue, in most of my websites. Either I used to use table or I used to say leave it why the hell I should worry. but I was thinking of it in the mean time how that could be done. Well I got a solution for this after a long research.

Well just try with the below code
HTML Code:
<div id=”wrapper”>
<div id=”header”></div>
<div id=”content”></div>
<div id=”footer”></div>
</div>

CSS Code:
<style type=”text/css”>
html,body {
margin:0;
padding:0;
height:100%;
}
#wrapper {
min-height:100%;
position:relative;
}
#header {
background:#5CAAC7;
height:100px;
}
#content {
padding:10px;
padding-bottom:60px; /* Height of the footer */
}
#footer {
position:absolute;
bottom:0;
width:100%;
height:60px; /* Height of the footer */
border-top:1px solid #484848;
background:#EAEAEA;
}
</style>

Well the above example is a simple layout, for the body tag remove the margin and padding so that there is no default padding and margins and set the height to 100% which will allow us to set the height of the main div to 100%.

Make the wrapper div min-height to 100% so that there is a 100% height always for the layout, but this may not work for the old out dated browsers. And set wrapper div’s position:relative which will allows us to absolutely position elements inside it later. Header div is your choice what ever height or color you can specify.

And about the content div there should be a padding bottom same as that of the footer height. The div should be positioned as absolute and bottom as 0 which will move it to the bottom of wrapper div. When there is little content on the page the wrapper div is exactly the height of the browser viewport (because of the min-height:100%;) and the footer sits neatly at the bottom of the screen. When there is more content in the page then there is no question it will automatically set the footer div to the bottom of the page.

For older browser min-height:100% doesnt work well, so for that you can use height:100%.

So there it is.. isn’t it simple. A simple and a valid way to get footer at the bottom of the page. So try it out if any issues let me know…

I hope you will find it useful….

Almost every developer uses list to create a navigation, even I uses ul li’s to create a navigation. I feel its easy to create navigation with ul li’s rather than using any other tag or method.

Below is just a sample code for navigation.
<ul>
<li><a href=”#”>Link 1</a></li>
<li><a href=”#”>Link 2</a></li>
<li><a href=”#”>Link 3</a></li>
</ul>

and the css code is as below

ul {
list-style: none;
}

ul li a {
display: block;
width: 130px;
height: 30px;
text-align: center;
color: #666666;
float: left;
background: #cccccc;
border: solid 1px #333333;
margin: 30px 5px;
}

Try this code and see, you will find different output in different browsers. In mozilla you get a clear aligned menu, but when you view it in IE 6 you will find somewhat a staircase effect is been generated. Very funny right.

So to get a clear navigation, we should fix this IE bug. The easiest solution for this bug is to use a float:left; for the li element.

Just add this and you are done,
ul li {
float: left;
}

Another solution would be to add display:inline; to the enclosing li element.

Just add this code and you are done

ul li {
display: inline
}

If any problem persists do contact me or comment on this.

If you are creating a layout, with some very small heights as custom borders for elements. Usually, what you will do is you’ll just have to add height: XXpx to the style’s declarations and think that it should be fine.but check your page once in IE and you’ll probably know what is the answer.

Check out with this example

HTML Code:
<div> id=”smallHeight”</div>

CSS Code:
#smallHeight{
background: #ccc;
border: solid 1px #333;
width: 400px;
height: 2px;
margin: 30px 0;
}

Surprised to see a block with around 22px height in IE.

Well you might be thinking now how to fix this issue. Thats very simple one, we have two fixes for such IE bugs.

1 Solution:
Simply add a font-size:0 for the div, this is because IE refuses to set the font-size less than the default one. So the height of the div is set to approx 22px.

#smallHeight{
background: #ccc;
border: solid 1px #333;
width: 400px;
height: 2px;
margin: 30px 0;
font-size:0;
}

This will solve your problem.

2 Solution:
Well second solution is to set overflow:hidden for the particular div block.

#smallHeight{
background: #ccc;
border: solid 1px #333;
width: 400px;
height: 2px;
margin: 30px 0;
overflow:hidden;
}

Thats quite a very handy and a simple solution. 🙂

As we all know that min-height doesn’t work in IE 6. Say for example if your site doesn’t have much content then you web page will end up till the content is there. So if you want to set some minimum height so that the page looks good. If you set some exact height for the webpage it will lead to a problem when the content is more. So to avoid this issue, there is a solution for this min-height works with mozilla, opera, chrome, safari,IE 7, IE 8 but doesn’t work with IE 6.

So to make it work with IE 6 we need to hack it. Below is the solution for such an issue

Ex:
<div id=”container”>
Some content goes here…..
</div>

<style type=”text/css” >
#container{
min-height:300px;
}
</style>
The above code works only with mozilla, safari, chrome, opera, IE7 & 8.

Solution for IE 6:
#container{
min-height:300px;
height:auto !important; //IE hack
height:300px;
}

Thats it, so simple solution no CSS 3 required, no external javascript required. Check it out.

As we all know aligning header at the top is as easy as saying it. Always the first div tag or a table td tag will appear at the top, so no question of aligning the header at the top. But how about aligning footer at the bottom always even when seen under different resolutions. Yes even that is easy. Follow these steps and make it working for you guys.

Here is how you can do it, check for the HTML/CSS code.

HTML Code:

<div id=”wrapper”>
<div id=”header”>
Some heading goes here…
</div>
<div id=”content”>
<p>Some Description goes here…</p>
<p>Some Description goes here…</p>
<p>Some Description goes here…</p>
<p>Some Description goes here…</p>
<p>Some Description goes here…</p>
</div>
</div>
<div id=”footer”>
Copyright content goes here
</div>

CSS Code:

<style type=”text/css” >
*{
margin:0;
padding:0;
}
html, body{
height:100%;
}

#wrapper{
border:0 none;
margin:0 auto;
min-height:100%;
width:900px;
}
#header{
border:1px solid #c0c0c0;
height:50px;
width:900px;
text-align:center;
background-color:#CCCCC2;
}
#content{
padding:10px;
width:880px;
border:1px solid #c0c0c0;
}
#footer{
background-color:#CCCCC2;
border:0 none;
height:35px;
margin:-45px auto 0;
padding:10px 0 0;
text-align:center;
width:900px;
}
</style>

Try this if you did not get it, let me know will work out for it.

Some browsers like IE are supporting the non-standard properties that is to customize your scrollbars accordingly, you write the css for that. These properties are illegal and not defined in any css specifications. The below is the code for the css just try this one.

body, html {
scrollbar-face-color: #666666 ;
scrollbar-shadow-color: #000000 ;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #000000 ;
scrollbar-darkshadow-color:#000000;
scrollbar-track-color: #000000 ;
scrollbar-arrow-color: #ffffff ;
}

You can find here some of the properties like scroll bar arrow color, shadow color. You can change this one according to your requirement. But make sure that this only works in IE.

Well all of us might be knowing how to align a text or an image at the bottom when you are using a table. Just say vertical-align:bottom; this will work out. But when you are working with div’s this woun’t work out. So for this to work we need to give the div’s some special treatment. The down below code will get you the this working in the div’s.

HTML code :
<div id=”outerLogo”>
<div id=”innerLogo”>
<div id=”logo”>
<a href=”index.htm” title=”Ideaken”><img src=”images/logo.gif” alt=”alt text” border=”0″ /></a>
</div>
</div>
</div>

CSS code :

<style type=”text/css”>
#outerLogo {
width:220px;
height:140px;
}
#innerLogo {
width:220px;
height:100%;
position:relative;
}
#logo {
position:absolute;
bottom:0;
left:0;
}
</style>

With this the logo div with position absolute and bottom as 0 makes it to get align at the bottom. The relative positioned div inherits its height from its parent.

This code is checked with the mozilla, IE – 6 and IE -7.

Related to this post:
Vertical align Div Center

Hanging Indents makes the first line start from its margin and the rest will get flushed towards right. To do this look for the below code, you will get a clear idea.

HTML code
<p class=”hangingindent”>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id enim eu mauris condimentum pharetra. Praesent hendrerit, odio non condimentum cursus, Lorem ipsum dolor sit amet, consectetur adipiscing elit.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id enim eu mauris condimentum pharetra. Praesent hendrerit, odio non condimentum cursus, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id enim eu mauris condimentum pharetra. Praesent hendrerit, odio non condimentum cursus, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>

CSS for the above goes here
<style>
.hangingindent {
padding-left: 22px ;
text-indent: -22px ;
}
</style>

Well I have found this serious problem when I need to make this inline styles override. I always thought that this could be impossible to override inline styles using style sheet. But later found one solution to do this, its very easy to do here is the sample code to override inline styles

<div class=”container”>
<span style=”font-weight: bold; color: red;”>Some text goes here…</span>
</div>

<style type=”text/css”>
.container span{
font-weight: normal !important;
color: #000000 !important;
}
</style>


Categories