Horizontal Spry Menu Bar

Discussion in 'Web Design and Development' started by landem4, Jul 20, 2010.

  1. landem4 macrumors newbie

    Joined:
    Jul 20, 2010
    #1
    Hi, I am working in Dreamweaver CS3 and making a simple horizontal spry navigation menu with no submenus. Each "button" is separated by a single vertical line (using a right border), and the rollover effect is bolded and underlined.

    Everything was going fine until I previewed it in Safari and noticed that when I mouse over a button and the text bolds, all of the buttons in the menu move to the right! How can this be stopped?

    Thanks
     
  2. angelwatt Moderator emeritus

    angelwatt

    Joined:
    Aug 16, 2005
    Location:
    USA
  3. landem4 thread starter macrumors newbie

    Joined:
    Jul 20, 2010
    #3
    Horizontal Spry Menu Bar : lots of code

    Code:
    LAYOUT INFORMATION: describes box model, positioning, z-order
    
     *******************************************************************************/
    
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
    {
    	margin: 0;
    	padding: 0;
    	list-style-type: none;
    	font-size: 100%;
    	cursor: default;
    	width: 669px;
    	position: absolute;
    	left: -7px;
    	top: 0px;
    }
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: [url]http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html[/url] */
    ul.MenuBarActive
    {
    	z-index: 1000;
    }
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
    {
    	list-style-type: none;
    	font-size: 100%;
    	position: relative;
    	text-align: center;
    	cursor: pointer;
    	width: auto;
    	float: left;
    	padding-right: 10px;
    	padding-left: 10px;
    	border-right-width: 1px;
    	border-right-style: solid;
    	border-right-color: #000;
    	height: 1px;
    	margin-right: 5px;
    	margin-left: 5px;
    	line-height: 3px;
    	white-space: normal;
    }
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
    {
    	margin: 0;
    	padding: 0;
    	list-style-type: none;
    	font-size: 100%;
    	z-index: 1020;
    	cursor: default;
    	width: 8.2em;
    	position: absolute;
    	left: -1000em;
    	border-right-width: 1px;
    	border-right-style: solid;
    	border-right-color: #000;
    }
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
    {
    	left: auto;
    }
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
    {
    	width: 12px;
    }
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
    {
    	position: absolute;
    	margin: -5% 0 0 95%;
    }
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
    {
    	left: auto;
    	top: 0;
    }
    
    /*******************************************************************************
    
     DESIGN INFORMATION: describes color scheme, borders, fonts
    
     *******************************************************************************/
    
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    {
    	border: 1px solid #CCC;
    }
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
    {
    	display: block;
    	cursor: pointer;
    	background-color: #FFF;
    	padding: 0.5em 0.75em;
    	color: #000;
    	text-decoration: none;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 10px;
    	font-style: normal;
    	text-align: center;
    	line-height: 10px;
    	border-right-width: 1px;
    	border-right-style: solid;
    	border-right-color: #000;
    	font-weight: bold;
    	font-variant: normal;
    }
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
    {
    	background-color: #33C;
    	color: #FFF;
    }
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    {
    	background-color: #FFF;
    	color: #FFF;
    }
    
    /*******************************************************************************
    
     SUBMENU INDICATION: styles if there is a submenu under a given menu item
    
     *******************************************************************************/
    
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
    {
    	background-image: url(SpryMenuBarDown.gif);
    	background-repeat: no-repeat;
    	background-position: 95% 50%;
    }
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
    {
    	background-image: url(SpryMenuBarRight.gif);
    	background-repeat: no-repeat;
    	background-position: 95% 50%;
    }
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    {
    	background-image: url(SpryMenuBarDownHover.gif);
    	background-repeat: no-repeat;
    	background-position: 95% 50%;
    }
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    {
    	background-image: url(SpryMenuBarRightHover.gif);
    	background-repeat: no-repeat;
    	background-position: 95% 50%;
    }
    
    /*******************************************************************************
    
     BROWSER HACKS: the hacks below should not be changed unless you are an expert
    
     *******************************************************************************/
    
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
    {
    	position: absolute;
    	z-index: 1010;
    	filter:alpha(opacity:0.1);
    }
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    {
    	ul.MenuBarHorizontal li.MenuBarItemIE
    	{
    		display: inline;
    		f\loat: left;
    		background: #FFF;
    	}
     
  4. eponym macrumors 6502

    Joined:
    Jul 2, 2010
    #4
    You're going to have a tough time doing this without making some significant changes.

    The reason why the text moves over is because the text is wider. Bold text is bigger than regular text. Plain and simple.

    So the only way for the button to not get any wider when the text does is to have the width of the container be greater than that of the text's at all times. That way when the link text "grows", the container (either the anchor or list item or both) stays the same size and the flow of the page is undisturbed.

    Right now the width of the container(s) are automatically set to the width of the text because you're floating.
     

Share This Page