www.webdeveloper.com
Results 1 to 5 of 5

Thread: Nested unordered lists compatibility issues in IE

  1. #1
    Join Date
    May 2003
    Location
    Bulgaria
    Posts
    187

    Nested unordered lists compatibility issues in IE

    I am trying to style some nested unordered lists with CSS. When I use the IE7 standards or Quirks mode, the nested <li> elements get the background properties of their parents, the borders also don't show correctly. I think that nesting the ul's is causing the problem, and since I have a very good reason to do that, can anybody show me a CSS solution?

    HTML Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Nested ul's</title>
    <style type="text/css">
    #div_menu {
    	margin: 0px;
    	padding: 0px;
    	width: 200px;
    	font-weight: normal;
    	position: absolute;
    	left: 10px;
    	top: 10px;
    	visibility: visible;
    	z-index: 10;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 14px;
    	border: 4px double #000;
    }
    #div_menu ul {
    	list-style: none;
    	padding: 0;
    	border: none;
    	margin: 0;
    }
    #div_menu li {
    	border-bottom: 1px solid #000;
    	margin: 0;
    }
    #div_menu li a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #000;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #CCC;
    }
    #div_menu li a:hover {
    	background-color: #fff;
    	color: #017397;
    }
    #div_menu li.heading1 a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #e5e5e5;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #000f19;
    }
    #div_menu li.heading1 a:hover {
    	background-color: #39769b;
    	color: #2f2401;
    }
    #div_menu li.heading2 a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #e5e5e5;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #1186ac;
    }
    #div_menu li.heading2 a:hover {
    	background-color: #74ceeb;
    	color: #017397;
    }
    #div_menu li.heading3 a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #e5e5e5;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #1d9ea0;
    }
    #div_menu li.heading3 a:hover {
    	background-color: #10dbdd;
    	color: #017397;
    }
    </style>
    </head>
    
    <body>
    <div id="div_menu">
      <ul>
        <li class="heading1"><a href="#">Heading 1</a></li>
        <ul>
          <li><a href="#">item 1.1</a></li>
          <li><a href="#">item 1.2</a></li>
          <li><a href="#">item 1.3</a></li>
          <li><a href="#">item 1.4</a></li>
          <li><a href="#">item 1.5</a></li>
          <li><a href="#">item 1.6</a></li>
          <li><a href="#">item 1.7</a></li>
          <li><a href="#">item 1.8</a></li>
          <li class="heading2"><a href="#">Heading 2</a></li>
          <ul>
            <li><a href="#">item 2.1</a></li>
          </ul>
          <li class="heading2"><a href="#">Heading 2</a></li>
          <ul>
            <li><a href="#">item 2.1</a></li>
            <li><a href="#">item 2.2</a></li>
            <li class="heading3"><a href="#">Heading 3</a></li>
            <ul>
              <li><a href="#">item 3.1</a></li>
            </ul>
          </ul>
        </ul>
        <li class="heading1"><a href="#">Heading 1</a></li>
        <ul>
          <li class="heading2"><a href="#">Heading 2</a></li>
          <ul>
            <li><a href="#">item 2.1</a></li>
            <li><a href="#">item 2.2</a></li>
          </ul>
          <li class="heading2"><a href="#">Heading 2</a></li>
          <ul>
            <li><a href="#">item 2.1</a></li>
            <li><a href="#">item 2.2</a></li>
            <li><a href="#">item 2.3</a></li>
          </ul>
        </ul>
      </ul>
    </div>
    </body>
    </html>

  2. #2
    Join Date
    Dec 2011
    Location
    Centurion, South Africa
    Posts
    795
    Hi,

    Your child <ul> tags seemed illegally nested without <li> wrappers, so your markup has been changed here.
    Some redundant CSS rules were commented out as well as quirks mode being activated using zoom on the main <ul>.

    HTML Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Nested ul's</title>
    <style type="text/css">
    #div_menu {
    	margin: 0px;
    	padding: 0px;
    	width: 200px;
    	font-weight: normal;
    	position: absolute;
    	left: 10px;
    	top: 10px;
    	visibility: visible;
    	z-index: 10;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 14px;
    	border: 4px double #000;
    }
    #div_menu ul {
    	list-style: none;
    	padding: 0;
    	border: none;
    	margin: 0;
    	zoom: 1;
    }
    #div_menu li {
    	border-bottom: 1px solid #000;
    	margin: 0;
    }
    #div_menu li a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #000;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #CCC;
    }
    #div_menu li a:hover {
    	background-color: #fff;
    	color: #017397;
    }
    #div_menu li.heading1 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #000f19;
    }
    #div_menu li.heading1 a:hover {
    	background-color: #39769b;
    	color: #2f2401;
    }
    #div_menu li.heading2 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #1186ac;
    }
    #div_menu li.heading2 a:hover {
    	background-color: #74ceeb;
    	color: #017397;
    }
    #div_menu li.heading3 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #1d9ea0;
    }
    #div_menu li.heading3 a:hover {
    	background-color: #10dbdd;
    	color: #017397;
    }
    </style>
    </head>
    
    <body>
    <div id="div_menu">
    	<ul>
    
        	<li class="heading1"><a href="#">Heading 1</a></li>
    
    		<li>
    			<ul>
    				<li><a href="#">item 1.1</a></li>
    				<li><a href="#">item 1.2</a></li>
    				<li><a href="#">item 1.3</a></li>
    				<li><a href="#">item 1.4</a></li>
    				<li><a href="#">item 1.5</a></li>
    				<li><a href="#">item 1.6</a></li>
    				<li><a href="#">item 1.7</a></li>
    				<li><a href="#">item 1.8</a></li>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    				<li>
    					<ul>
    						<li><a href="#">item 2.1</a></li>
    					</ul>
    				</li>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    				<li>
    					<ul>
    						<li><a href="#">item 2.1</a></li>
    						<li><a href="#">item 2.2</a></li>
    						<li class="heading3"><a href="#">Heading 3</a></li>
    						<li>
    							<ul>
    								<li><a href="#">item 3.1</a></li>
    							</ul>
    						</li>
    					</ul>
    				</li>
    			</ul>
    		</li>
    
    		<li class="heading1"><a href="#">Heading 1</a></li>
    
    		<li>
    			<ul>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    			</ul>
    		</li>
    
    		<li><a href="#">item 2.1</a></li>
    		<li><a href="#">item 2.2</a></li>
    
    		<li class="heading2"><a href="#">Heading 2</a></li>
    
    		<li>
    			<ul>
    				<li><a href="#">item 2.1</a></li>
    				<li><a href="#">item 2.2</a></li>
    				<li><a href="#">item 2.3</a></li>
    			</ul>
    		</li>
    	</ul>
    
    </div>
    
    </body>
    </html>
    JavaScript: Learn | Validate | Compact | bionoid

  3. #3
    Join Date
    May 2003
    Location
    Bulgaria
    Posts
    187
    bionoid,
    Thank you for pointing out the need for the <li> wrappers around my nested ul's. In your example the lower border of the newly added <li> tags sums up and becomes unequally thick - can be best seen on mouse hovering over Heading 1, immediately following item 3.1. Do you know how can I resolve that problem with css only? What I did was to apply a new class with border: none to the newly added <li> tags. And what do you mean by "quirks mode being activated using zoom on the main <ul>"?
    Last edited by Vassil Catsarov; 01-22-2013 at 07:39 AM.

  4. #4
    Join Date
    Dec 2011
    Location
    Centurion, South Africa
    Posts
    795
    Hi,

    I moved your bordering away from the <li> tags and placed it on the <a> tags instead, that way you would only get a double line at the bottom the the list.

    HTML Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Nested ul's</title>
    <style type="text/css">
    #div_menu {
    	margin: 0px;
    	padding: 0px;
    	width: 200px;
    	font-weight: normal;
    	position: absolute;
    	left: 10px;
    	top: 10px;
    	visibility: visible;
    	z-index: 10;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 14px;
    	border: 4px double #000;
    }
    #div_menu ul {
    	list-style: none;
    	padding: 0;
    	border: none;
    	margin: 0;
    	zoom: 1;
    }
    #div_menu li {
    	margin: 0;
    }
    #div_menu li a {
    	display: block;
    	padding: 4px 5px 4px 5px;
    	color: #000;
    	text-decoration: none;
    	font-weight: bold;
    	background-color: #CCC;
    	border-bottom: 1px solid #000;
    }
    #div_menu li a:hover {
    	background-color: #fff;
    	color: #017397;
    }
    #div_menu li.heading1 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #000f19;
    }
    #div_menu li.heading1 a:hover {
    	background-color: #39769b;
    	color: #2f2401;
    }
    #div_menu li.heading2 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #1186ac;
    }
    #div_menu li.heading2 a:hover {
    	background-color: #74ceeb;
    	color: #017397;
    }
    #div_menu li.heading3 a {
    /*	display: block;*/
    /*	padding: 4px 5px 4px 5px;*/
    	color: #e5e5e5;
    /*	text-decoration: none;*/
    /*	font-weight: bold;*/
    	background-color: #1d9ea0;
    }
    #div_menu li.heading3 a:hover {
    	background-color: #10dbdd;
    	color: #017397;
    }
    </style>
    </head>
    
    <body>
    <div id="div_menu">
    	<ul>
    
        	<li class="heading1"><a href="#">Heading 1</a></li>
    
    		<li>
    			<ul>
    				<li><a href="#">item 1.1</a></li>
    				<li><a href="#">item 1.2</a></li>
    				<li><a href="#">item 1.3</a></li>
    				<li><a href="#">item 1.4</a></li>
    				<li><a href="#">item 1.5</a></li>
    				<li><a href="#">item 1.6</a></li>
    				<li><a href="#">item 1.7</a></li>
    				<li><a href="#">item 1.8</a></li>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    				<li>
    					<ul>
    						<li><a href="#">item 2.1</a></li>
    					</ul>
    				</li>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    				<li>
    					<ul>
    						<li><a href="#">item 2.1</a></li>
    						<li><a href="#">item 2.2</a></li>
    						<li class="heading3"><a href="#">Heading 3</a></li>
    						<li>
    							<ul>
    								<li><a href="#">item 3.1</a></li>
    							</ul>
    						</li>
    					</ul>
    				</li>
    			</ul>
    		</li>
    
    		<li class="heading1"><a href="#">Heading 1</a></li>
    
    		<li>
    			<ul>
    				<li class="heading2"><a href="#">Heading 2</a></li>
    			</ul>
    		</li>
    
    		<li><a href="#">item 2.1</a></li>
    		<li><a href="#">item 2.2</a></li>
    
    		<li class="heading2"><a href="#">Heading 2</a></li>
    
    		<li>
    			<ul>
    				<li><a href="#">item 2.1</a></li>
    				<li><a href="#">item 2.2</a></li>
    				<li><a href="#">item 2.3</a></li>
    			</ul>
    		</li>
    	</ul>
    
    </div>
    
    </body>
    </html>
    You will see I used a zoom css rule on the "#div_menu ul" selector. I might have termed it wrong, could also be called hasLayout. If you remove that rule you will understand why I placed it there. Was only to keep IE7 happy, the more modern browsers don't require it.

    http://www.bennadel.com/blog/1354-Th...t-Explorer.htm
    JavaScript: Learn | Validate | Compact | bionoid

  5. #5
    Join Date
    May 2003
    Location
    Bulgaria
    Posts
    187
    Yes, I was going to inspect the css because your example was doing the job while mine actual project was expanding the empty <li> tags containing the nested <ul>'s.
    I have never heard of the zoom css property, so without your help I could have never have made it. So thanks a lot, bionoid. As a conclusion, I don't think anymore that using a styled unordered list is a great idea to create a menu.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.28604 seconds
  • Memory Usage 2,943KB
  • Queries Executed 15 (?)
More Information
Template Usage (33):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (3)bbcode_html
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (5)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (72):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates