views:

849

answers:

4

Hello,

I am having a nightmare, been trying all day with this, and searched google with no success. I have a little navigation that is floated to left and I wanted to make it work for RTL language. It worked fine in FireFox but IE6 does not display it at all.

Can someone tell me why?

The HTML is the default markup.. nothing fancy

<div id="topnav">
<ul>
<li><a href="#"><?php print NAV_HOME; ?></a></li>
<?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>
</ul>
</div>

#topnav ul {
    float: left;
    margin: 0 0 0 30px;
}

#topnav li {
    float: right;
    padding: 0;margin:0;
    margin-left: 10px;
    padding-left: 10px;
    background: url(img/topnav_br.png) no-repeat left center;
}

The point is that it will be floated to left, but LI items will start from right to left because its RTL lanuage.. but this code above shows nothing in IE6 but works in FF.

Somebody please tell me what I am doing wrong here.

Thanks!

+1  A: 

You may have been bitten by the "hasLayout" bug. Try this:

#topnav ul {
    float: left;
    margin: 0 0 0 30px;
    zoom:1;
}
Darko Z
I tested this but with no success. The menu content is still hidden.. as if it does not exist there.. weird
Ahmad Fouad
hmm i'll check it out when i get home - don't have ie6 here at work.
Darko Z
Thanks for your try at least, appreciated
Ahmad Fouad
A: 

The one thing I can see here that will cause a layout issue in IE6 is the left margin and float on the topnav ul. This will make IE6 double the margin. Add "display:inline" to topnav ul

topnav ul {

float: left;
margin: 0 0 0 30px;
display: inline;

}

Dhana
I agree with you, but the menu content is still hidden completely.
Ahmad Fouad
Could you create a sample test page on a server somewhere I could take a look at?
Dhana
+1  A: 

You haven't provided enough information. If you did not specify a width, IE will default to 100% of the available room (within its parent).

The following code (with background colors) clearly displays (in IE6) with the list items floated all the way to the right within the ul (and actually 30px off the display window with a double margin on the left). We do not know what your containers are (if any) or what doctype (if any) you are using. We do not know what else is being floated.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt; 
<head>
<title>Float right li test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
body { margin: 0;
    padding: 0;
}
#topnav ul {
    float: left;
    margin: 0 0 0 30px;
background-color: yellow;
}

#topnav li {
    float: right;
    padding: 0;margin:0;
    margin-left: 10px;
    padding-left: 10px;
background-color: pink;

}
</style>
</head>
<body>
<div id="topnav">
<ul>
<li><a href="#">Selection 1</a></li>
<li><a href="#">Selection 2</a></li>
</ul>
</div>
<p>This is where the page content will go.</p>
</body>
</html>
Traingamer
thank you so much
Ahmad Fouad
A: 

I also have same problem. It is not showing in the IE6. In other browsers it is working well...

a:focus {
outline:none;}

.menu {
width:1000px;
height:32px;
position:relative;
z-index:100;
font-family:arial, sans-serif;
}

/* hack to correct IE5.5 faulty box model */
* html .menu {
width:1000px;

}

/* remove all the bullets, borders and padding from the default list styling */
.menu ul {
padding:0;
margin:0;
list-style-type:none;
}

.menu ul ul {
width:149px;
}

/* float the list to make it horizontal and a relative positon so that you can control the dropdown menu positon */
.menu li {
float:left;
width:149px;
position:relative;
border-top: #999 1px solid;
margin-right:10px;
}

.menu li:hover {
float:left;
border-top: #ff0 1px solid;
}

.nav-selected {
font-weight: bold;
}

.menu li li:hover {
float:left;
border-top: none;
color: #999;
}

.menu li li {
float:left;
width:149px;
position:relative;
border-top: none;
}


/* style the links for the top level */
.menu a, .menu a:visited {
display:block;
font-size:12px;
text-decoration:none;
color:#999;
width:149px;
height:26px;
line-height:29px;
}

/* a hack so that IE5.5 faulty box model is corrected */
* html .menu a, * html .menu a:visited {
width:149px;
w\idth:149px;
}

/* style the second level background */
.menu ul ul a.drop, .menu ul ul a.drop:visited {}
/* style the second level hover */
.menu ul ul a.drop:hover{}
.menu ul ul :hover > a.drop {}
/* style the third level background */
.menu ul ul ul a, .menu ul ul ul a:visited {}
/* style the third level hover */
.menu ul ul ul a:hover {}

/* hide the sub levels and give them a positon absolute so that they take up no room */
.menu ul ul {

visibility: hidden;
position:absolute;
height:0;
top:26px;
left:0;
width:150px;

}

/* another hack for IE5.5 */
* html .menu ul ul {
top:26px;
t\op:27px;
}

/* position the third level flyout menu */
.menu ul ul ul{
left:149px;
top:-1px;
width:149px;
}

/* position the third level flyout menu for a left flyout */
.menu ul ul ul.left {
left:-149px;
}



/* style the table so that it takes no ppart in the layout - required for IE to work */
.menu table {
position:absolute;
top:0;
left:0;
border-collapse:collapse;
}

/* style the second level links */
.menu ul ul a, .menu ul ul a:visited {
color:#999;
height:auto;
line-height:15px;
padding-bottom:4px;
width:149px;
}

/* yet another hack for IE5.5 */
* html .menu ul ul a, * html .menu ul ul a:visited {
width:149px;
w\idth:149px;
}

/* style the top level hover */
.menu a:hover {color:#ff0;}
.menu ul ul a:hover {color:#ccc;}
.menu :hover > a {color:#ff0;}
.menu ul ul :hover > a {color:#ccc;}

/* make the second level visible when hover on first level list OR link */
.menu ul li:hover ul, .menu ul a:hover ul{
visibility:visible;
width: auto;
}
/* keep the third level hidden when you hover on first level list OR link */
.menu ul :hover ul ul{
visibility:hidden;
}
/* make the third level visible when you hover over second level list OR link */
.menu ul :hover ul :hover ul{
visibility:visible;
}

Can anybody help with it....Please, i need it ASAP

neerz