单击(打开和关闭)菜单按钮时更改图像

时间:2012-11-06 12:57:52

标签: html menu onclick menuitem

我有一套菜单可见

http://carbonyzed.co.uk/menu/2/

现在,当您单击 MENU 按钮时,UL eliment会打开,但我还需要menu.png项目(按钮)更改为全宽版本,我们将调用menu_open.png。< / p>

这是HTML代码

<div class="sidebar">
<a href="#" onclick="return showOrHide('menulink');"><div class="logo">TEST IMAGE</div></a>
<ul id="menulink">
    <li>
        <a href="#">Campaigns </a>
        <ul class="submenu">
            <li><a href="#">Sub Menu1</a></li>
            <li><a href="#">Sub Menu2</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Links </a>
        <ul class="submenu">
            <li><a href="#">Sub Menu1</a></li>
            <li><a href="#">Sub Menu2</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Media </a>
        <ul class="submenu">
            <li><a href="#">Sub Menu1</a></li>
            <li><a href="#">Sub Menu2</a></li>
        </ul>
    </li>
    <li><a href="#">History</a></li>
    <li>
        <a href="#">Messages </a>           
        <ul class="submenu">
            <li><a href="#">Sub Menu1</a></li>
            <li><a href="#">Sub Menu2</a></li>
        </ul>
    </li>
    <li>
        <a href="#">Maintenance </a>            
        <ul class="submenu">
            <li><a href="#">Sub Menu1</a></li>
            <li><a href="#">Sub Menu2</a></li>
        </ul>
    </li>
</ul>
</div>

这里是相关的CSS部分(或者我相信)

.logo {
display: block;
text-indent: -9999px;
text-transform: capitalize;
background: url(../images/menu.png) no-repeat;
height: 120px;
}
#menulink {
 display: none;
}
.sidebar {
height: 100%;
min-height: 100%;
width: 213px;
/**CODE - background: url(../images/sidebarBg.png); - here**/

float: left;
position: absolute;
top: 0;
}

/**  MENU  **/



ul {
margin: 0;
padding: 0;
 display: none;
list-style: none;
background: url(../images/sidebarBg.png);
}

ul li {
background: url(../images/listBg.png) bottom no-repeat;
text-indent: 50px;
}

ul li a {
color: white;
display: block;
text-decoration: none;
padding: 21px;
width: 170px;
text-shadow: 1px 1px 0 #191b20;
position:relative;
}
ul li:hover {
background: url(../images/listBgGreen.png) no-repeat;
}

ul li a:hover, ul li:hover a {
color: #FFF;
text-shadow: 1px 1px 0 #547829;
}

ul li a.dashboard {
background: url(../images/iconDashboard.png) 25px 50% no-repeat;
}

ul li a.pages {
background: url(../images/iconPages.png) 25px 50% no-repeat;
}

ul li a.media {
background: url(../images/iconMedia.png) 25px 50% no-repeat;
}

ul li a.history {
background: url(../images/iconHistory.png) 25px 50% no-repeat;
}

ul li a.messages {
background: url(../images/iconMessages.png) 25px 50% no-repeat;
}

ul li a.settings {
background: url(../images/iconSettings.png) 25px 50% no-repeat;
}

/**  SUB MENU  **/

ul li ul.submenu {
display: block;
z-index: 500;
top: 0;
}

ul li ul.submenu li {
background: url(../images/subMenuBg.png) bottom no-repeat;
}

ul li ul.submenu li a {
background: none;
padding: 13px;
width: 189px;
}

ul li ul.submenu li.last {
border-bottom: 1px solid #54575b;
background: url(../images/subMenuBg.png) top no-repeat;
}

ul li ul.submenu li.last a {
padding: 12px;
}

ul li:hover ul.submenu li a {
text-shadow: 1px 1px 0 black;
}

ul li ul.submenu li:hover {
background: url(../images/subMenuBgHover.png) bottom no-repeat;
}

/**  PIPS  **/

.pip {
display: block;
background: url(../images/pipBg.png);
padding: 3px 12px;
position: absolute;
top: 20px;
right: 25px;
color: white;
text-align: center;
text-indent: 0;
font-size: 10px;
border-top: 1px solid #1c1f23;
border-bottom: 1px solid #4c4f56;
border-radius: 30px;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
}

ul li:hover .pip {
background: url(../images/pipBgHover.png);
border-top: 1px solid #547829;
border-bottom: 1px solid #a4ce6b;

}

如果您还有其他问题或需要更多信息,请随时询问。一如既往,非常感谢你的帮助。

亨利

JavaScript Eliment

<script language="JavaScript">
function showOrHide(zap) {
 if (document.getElementById) {
  var abra = document.getElementById(zap).style;
  if (abra.display == "block") {
   abra.display = "none";
   } else {
   abra.display = "block";
  } 
  return false;
  } else {
  return true;
 }
}
</script>

我在哪里将宽度部分放入此代码?谢谢:D

1 个答案:

答案 0 :(得分:1)

您可以通过以编程方式更改徽标&lt; div&gt;的背景图片来实现此目的。首先,将一个id添加到&lt; div&gt;元素:

<a href="#" onclick="return showOrHide('menulink');">
    <div class="logo" id="menuImg">TEST IMAGE</div>
</a>

然后您可以在菜单按钮的点击处理程序中更改背景图像:

document.getElementById("menuImg").style.backgroundImage = 
    "url(images/menu_open.png)";    // set this when the menu is opened
document.getElementById("menuImg").style.backgroundImage = 
    "url(images/menu.png)";    // set this when the menu is closed

请注意,图像的URL必须相对于html文档的路径(与样式表中设置的路径相反)。

在菜单链接上设置了一个 onclick 事件处理程序,调用javascript函数 showOrHide 。此函数在html文档的标题中定义为:

function showOrHide(zap) {
 if (document.getElementById) {
  var abra = document.getElementById(zap).style;
  if (abra.display == "block") {
   abra.display = "none";
   } else {
   abra.display = "block";
  } 
  return false;
  } else {
  return true;
 }
}

目前此功能仅用于打开和关闭菜单,因此您可以直接在此功能中更改背景图像:

function showOrHide(zap) {
 if (document.getElementById) {
  var abra = document.getElementById(zap).style;
  if (abra.display == "block") {   // menu is currently visible
   abra.display = "none";          // hide the menu
   document.getElementById("menuImg").style.backgroundImage = 
        "url(images/menu.png)";    // set this when the menu is closed
   } else {                        // menu is currently hidden
   abra.display = "block";         // show the menu
   document.getElementById("menuImg").style.backgroundImage = 
        "url(images/menu_open.png)";    // set this when the menu is opened
  } 
  return false;
  } else {
  return true;
 }
}

如果您打算使用 showOrHide 来关闭和打开页面的其他元素,则必须重新设计代码。


当您单击菜单图像右侧时,菜单也会打开。发生这种情况是因为侧边栏&lt; div&gt;的宽度设置为213px,但图像宽度仅为40px。您可以通过在更改背景图像时更改&lt; div&gt;的宽度来解决此问题。 将初始样式表值更改为40px:

.sidebar {
    ...
    width: 40px;
    ...
}

侧栏中添加ID:

<div class="sidebar" id="sidebar">

并通过脚本代码更改宽度:

document.getElementById("sidebar").style.width = 
    "213px";    // set this when menu is opened
document.getElementById("sidebar").style.width = 
    "40px";    // set this when menu is closed

将这些陈述插入相应背景图像代码正下方的 showOrHide 中。