使用鼠标悬停的工具提示效果 - 工具提示修复位置

时间:2014-06-04 07:47:13

标签: jquery html css

我在使用jQuery和CSS时出现了Tooltip效果问题。

我想概述一个房间和座位安排。在每个座位上都有一个人可以获得图片和一些信息。房间本身有大约60个座位。

我有一张放在背景中的照片

#sitzplatzverteilung {
width: 516px;
height: 360px;
position: relative;
margin: 20px 0px;
background: url("6x12x8_sitzplan.jpg") no-repeat;
border: 1px solid;}

接下来我坐了一个座位

.platz {
    width: 39px;
    height: 50px;
    position: absolute;
    cursor: pointer;
    font-size: 11px;
    font-family: arial;
    border: 1px solid;
}

我收到了要在mouseover

上显示的信息
.platz_info {
display: none;
background-color: #ffffff;
border: solid 1px #abaaac;
width: 250px;
padding: 3px 5px;
border: 1px solid;
}

每个座位都在图片上有自己的位置。我用

.platz放在每个座位上
#platz1 {
top: 73px; //next one got different top and left
left: 2px;}

我的html为座位(正文)

<div id="sitzplatzverteilung">

<div id="platz1" class="platz">
    <div class="platz_info">
        <img  src="person1.jpg" /><br>
        Test Text1
    </div>
</div>

<div id="platz2" class="platz">
    <div class="platz_info">
        <img  src="person1.jpg" /><br>
        Test Text2
    </div>
</div>  

</div>

我的脚本显示工具提示

    $(document).ready(function(){
    $(".platz").mouseenter(function(){
        $(".platz_info").hide();
        $(".platz_info", this).show(0);
    });

    $(".platz_info").click(function () {
        $(".platz_info").hide();
    })
});

现在我的问题是,如果我将鼠标悬停在其中一个座位(platz1 platz2)上,我的工具提示会显示出来。 但它所显示的位置是相对于座位的。因此,每个工具提示都会直接打开座位上/旁边的鼠标悬停。

我已经尝试过给它一个顶部和左边,只是把它放在距离每个座位一点点的位置。但我希望工具提示在固定位置打开。使用float:right / left时,它只会将工具提示放在座位的左边缘或右边缘。

有没有可能给工具提示(platz_info)一个固定的地方打开?

3 个答案:

答案 0 :(得分:1)

如果您希望工具提示始终显示在特定位置,则每个工具提示根本不需要多个元素。您可以将一个元素放置在所需位置,并根据悬停的座位更改其内容,如下所示:

 $(document).ready(function () {
  $(".platz").mouseenter(function () {
     $(".platz_info").text($(this).text()).show(0);
  });
  $(".platz").mouseleave(function () {
     $(".platz_info").hide();
  });
  $(".platz_info").click(function () {
     $(".platz_info").hide();
  })
});

JSFiddle

答案 1 :(得分:1)

就像一些额外的东西,你可以在没有任何Javascript / JQuery的情况下实现这一点,所以无论如何都可以。虽然在HTML和HTML中需要更多代码。 CSS。只需格式化您的HTML:

<div id="container">
   <div id="pic1">pic1</div>
   <div id="tip1">This is your info</div>  
</div>

使用这个CSS:

#container {
   position: relative;
    width: 80%;
    height: 300px;
    margin: 20px auto;
    background-color: burlywood;
}
#pic1 {
    position: absolute;
    top: 40px;
    left: 40px;
    width: 50px;
    height: 50px;
    border: 1px solid black;
}
#tip1 {
    position: absolute;
    z-index: 99999;
    top: 20px;
    left: 65px;
    height: 25px;
    padding: 6px;
    border-radius: 20px;
    border: 1px solid black;
    background-color: slateGrey;
    opacity: 0;
 }
#pic1:hover + #tip1 {
    opacity: 1;
 }

这是DEMO

注意:我的CSS有一些明显的额外样式规则,你必须为每个实例重复它,所以JQuery可能会更好,但这适用于任何浏览器,无论如何。

答案 2 :(得分:0)

是的,可以做到。它是.platz_info,需要position: absolute;

看看这个小提琴: http://jsfiddle.net/shodaburp/Rzmv6/