0

在你阅读这篇文章之前,请打开这个网站,看看我想要做什么:

https://www.kris-willis.com

如您所见,菜单下方有一个红色箭头,而我想要实现的是...当我将鼠标悬停在菜单按钮上时,箭头会移动到我悬停在同一按钮上而无需重新加载页。

理想情况下,我希望箭头移回默认按钮。如果单击不同的菜单按钮,默认按钮也可以更改。

如果您知道任何指向示例等的链接...我将不胜感激!

感谢您的时间,

克里x

4

5 回答 5

0

制作“按钮”锚。使用 css set 创建规则:hover以设置包含箭头的背景图像。

那里有很多 CSS 教程,NettutsWebdesigntuts有很多导航文章。或者,如果您对模仿他人感到满意,请找到您喜欢的网站并挑选来源,直到您弄清楚他们是如何做到的。

请记住,完成您正在做的事情根本不需要 javascript。除非你想要一些动画,即使这样 CSS 可以处理大部分工作,我认为纯 CSS 是更好的方法。

于 2012-12-28T15:47:27.347 回答
0

你可以这样做:

使用 span 在 HTML 中的 nav/menu 下方添加 bg 箭头:

<ul class="nav">
    <li>
        <a href="#">Menu 1</a>
        <span class="arrow">&nbsp;&nbsp;</span>
    </li>
    <li>
        <a href="#">Menu 2</a>
        <span class="arrow">&nbsp;&nbsp;</span>
    </li>
</ul>

CSS:

.nav {
    font-size: anypx;
    list-style: none outside none;
    margin: 0;
    padding: 0;
    position: relative;
}

.nav li {
    background: #whatev;
    display: block;
    float: left;
    height: anypx;
    line-height: anypx;
    padding: 0;
    text-align: center;
}

.nav li a {
    color: #any;
    display: block;
    padding: any;
    position: relative;
    text-decoration: none;
    width: auto;
}
.arrow {
    background: url("images/arrow.png") no-repeat scroll 0 9px transparent;
    display: none;
    height: anypx;
    text-indent: -9999px;
    width: whatevs;
    z-index: 9999;
}

最后是使它工作的 JS/Jquery:

$(document).ready(function(){     
    Your_menu();
});

function Your_menu(){

    $(".nav li").hover(function(){
            $(this).find('.arrow').css({visibility: "visible",display: "none"}).show();
        },function(){
            $(this).find('.arrow').css({visibility: "hidden"});
    });

}   

这是一个显示此内容的网站:)

http://www.drexelmedicine.org/

于 2012-12-28T16:08:38.003 回答
0

只需将箭头margin-left相对于td DEMO的左侧移动

$("#Arrow").css({"margin-left":$(this).position().left+($(this).width()/2)-2});

Tp 这样做将jQuery库添加到页面的 head 部分

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

将此代码添加到外部 js 文件中并将其添加到页面的 head 部分

$(function(){
  $("#MenuPosition").on("hover","td",function(){
    $("#Arrow").css({"margin-left":$(this).position().left+($(this).width()/2)-2});

  });

});

编辑:用于恢复箭头原始位置

$(function(){
  currentPos = $("#Arrow").css("margin-left");

  $("#MenuPosition").on("hover","td",function(){
    $("#Arrow").css({"margin-left":$(this).position().left});

  });


   $("#MenuPosition").on("mouseout","td",function(){

     $("#Arrow").css({"margin-left":currentPos});        
  });

});

注意:请查看计算部分并进行更正。

PS:不能纠正是因为它是我从办公室注销的时间;)。但我觉得你有逻辑去做

于 2012-12-28T15:51:44.440 回答
0

首先是你有一个错误的 DOCTYPE。

<!DOCTYPE html PUBLIC "">

这会导致您的页面以怪异模式加载。将其更改为

<!DOCTYPE html>

对于 HTML5 或使用包括 FSI 和 FPI 在内的完整版本。

其次是您正在使用<table>导航。没有什么严重的问题,但人们倾向于使用ul

对于:hover,您可以简单地使用

#MenuPosition table tbody tr td:hover
{
background-image: url("/images/Arrow.jpg");
}

您可能必须使用paddingsmargins使用display: blockordisplay: inline-block来正确定位箭头。

于 2012-12-28T15:52:56.223 回答
0

纯 CSS 解决方案

检查这个答案。

有没有办法将鼠标悬停在一个元素上并影响另一个元素?

所以它可能是:

#thething {
    margin: 0;
}
.classone:hover + #thething {
    margin-top: 10px;
    margin-left: 10px;
}

如果它们是父 div 中的相邻兄弟姐妹。

于 2012-12-28T16:37:18.053 回答