No replies
bjjobe
bjjobe's picture
User offline. Last seen 2 years 15 weeks ago. Offline
newbie
Joined: 2008-05-15
Posts: 1
Points: 0

I guess my problem is easy to solve, but I can't figure out how to make correct CSS for creating images as borders/shadows around a Spry drop down menu.

Spec:

Using CSS
4 px's wide shadows as transparent borders of the submenu containers in a horizontal Spry menu
The shadows should appear to the right side and to the bottom of the containers (left side should be without shadow)
To make a correct 3D effect to the shadows, the shadow/border of the bottom should not start at the very left corner of the container, but rather fade in, starting 4 px from this corner

My CSS code doesn't work properly. The shadow appears correct on the right side of the container, but at the bottom I only see some kind of empty space where shadow should have appeared.

Here's my CSS code:

/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
{
border-bottom: url(boxshadow_bottom.gif) repeat-x bottom;
border-right: url(boxshadow_right.gif) repeat-y right;
background: url(boxshadow_bottom.gif) repeat-x bottom;
background: url(boxshadow_right.gif) repeat-y right;
padding: 0px 4px 4px 0px;
position: relative;
list-style-type: none;
}

With other words: How do I change the CSS code, so that the shadow at the bottom of the container also appear properly?

Regarding fullfilling the 3D effect in the very left corner of the container: I guess I should add a singel .gif-image (4px high, 8px wide) with no repeat, overlapping the boxshadow_bottom.gif with 4*8 px's.

How can I insert an image that wil cover the very left corner of the container with 4*8 px's?

I enclose the whole CSS-code, in case there are somewhere else where parts of the changes should be made...:

@charset "UTF-8";

/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */

/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */

/*******************************************************************************

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: auto;
}
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
{
z-index: 1000;
}
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
{
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: 150px;

float: left;
}
/* Submenus should appear below their parent (top: Innocent 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: 160px;
position: absolute;
left: -1000em;
}
/* 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: 160px;
}
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
{
position: absolute;
margin: 0% 0 0 98%;
}
/* 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-bottom: url(boxshadow_bottom.gif) repeat-x bottom;
border-right: url(boxshadow_right.gif) repeat-y right;
background: url(boxshadow.gif) repeat-x bottom;
background: url(boxshadow_right.gif) repeat-y right;
padding: 0px 4px 4px 0px;
position: relative;
list-style-type: none;
}
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
{
display: block;
cursor: pointer;
background-color: #3d4351;
padding: 0.5em 0.75em;
color: #FFF;
text-decoration: none;
}
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover
{
background-color: #8c5a60;
color: #FFF;
}
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:focus
{
background-color: #3d4351;
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: #8c5a60;
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;
}
/* 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;
}