【问题标题】:bootstrap tooltip on mouse move - tooltip appears far from the mouse?鼠标移动时的引导工具提示 - 工具提示出现在远离鼠标的地方?
【发布时间】:2017-03-07 18:21:44
【问题描述】:

我有一个图像列表,我希望在您悬停图像时显示工具提示并跟随鼠标。关注此answer。我已经修改了代码,所以我可以将它用于多个图像。但是工具提示有时会出现在离鼠标非常远的地方,有时还可以。为什么?

工具提示也会闪烁。为什么?

.grid-item {
  display: block;
  margin: 5px;
  border: 1px solid red;
}

.col-lg-1,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-md-1,
.col-md-10,
.col-md-11,
.col-md-12,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-sm-1,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-xs-1,
.col-xs-10,
.col-xs-11,
.col-xs-12,
.col-xs-2,
.col-xs-3,
.col-xs-4,
.col-xs-5,
.col-xs-6,
.col-xs-7,
.col-xs-8,
.col-xs-9 {
  padding-left: 0;
  padding-right: 0;
  padding: 0;
}

.flex-centre {
  display: flex;
  justify-content: center;
  flex-direction: column;
  align-items: center;
  text-align: center;
  /*height: 100%;
        width: 100%;*/
}

ul li {
  margin: 10px;
}

.img-tooltip {
  position: absolute;
}
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

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

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>


<div class="container">

  <div class="row">

    <div class="col-md-3">
      <div class="col-md-12">
        <a href="#" class="grid-item">
          <img class="img-responsive img" src="http://placehold.it/800x1240" alt="">
          <i class="img-tooltip" data-toggle="tooltip" data-placement="right" title="Tooltip 1" data-animation="false" data-trigger="manual"></i>
        </a>
      </div>
    </div>

    <div class="col-md-6">
      <div class="col-md-12">
        <a href="#" class="grid-item">
          <img class="img-responsive img" src="http://placehold.it/800x603" alt="">
          <i class="img-tooltip" data-toggle="tooltip" data-placement="right" title="Tooltip 2" data-animation="false" data-trigger="manual"></i>
        </a>
      </div>
    </div>

    <div class="col-md-3">
      <div class="col-md-12">
        <a href="#" class="grid-item">
          <img class="img-responsive" src="http://placehold.it/800x600" alt="">
          <i class="img-tooltip" data-toggle="tooltip" data-placement="right" title="Tooltip 3" data-animation="false" data-trigger="manual"></i>
        </a>
      </div>
      <div class="col-md-12">
        <a href="#" class="grid-item">
          <img class="img-responsive" src="http://placehold.it/800x600" alt="">
          <i class="img-tooltip" data-toggle="tooltip" data-placement="right" title="Tooltip 3" data-animation="false" data-trigger="manual"></i>
        </a>
      </div>
    </div>

  </div>

</div>


<script type="text/javascript">
  $(".img").on('mousemove', function(e) {
    var context = $(this).parent();
    $(".img-tooltip", context).css({
      top: e.pageY,
      left: e.pageX
    });
    $('[data-toggle="tooltip"]', context).tooltip('show')
  })

  $(".img").on('mouseleave', function(e) {
    var context = $(this).parent();
    $('[data-toggle="tooltip"]', context).tooltip('hide')
  })
</script>

有什么想法吗?如何修复以上这些错误?

注意:当你在“整页”上运行代码时,你会明白我的意思

【问题讨论】:

    标签: jquery twitter-bootstrap tooltip


    【解决方案1】:

    顺便说一句,你是第一个使用我的代码的人(你分享的链接)。

    试试这个。 https://jsfiddle.net/cexzj7mm/1/

    在 col-md-3、col-md-6 和 col-md-12 中添加了“静态”类,因为引导程序将位置更改为相对。通过将其更改为静态位置,您可以正确地将工具提示移动到图像上。 'static' 包含位置静态代码。

    CSS

    .static {
        position: static;
    }
    

    HTML

    <div class="col-md-3 static">
    <div class="col-md-12 static">
        ...
    

    我还对 JavaScript 做了一些改进。

    JavaScript

    $(".img").on('mousemove', function(e) {
      var tooltip_I_Tag = $(this).next();
      var position = (tooltip_I_Tag.attr("data-placement") != "") ? tooltip_I_Tag.attr("data-placement") : "right";
      var top = 0;
      var left = 0;
      if (position == "right") {
        top = +10;
        left = +10;
      } else if (position == "left") {
        top = +10;
        left = -10;
      } else if (position == "top") {
        top = 0;
        left = 0;
      } else if (position == "bottom") {
        top = 20;
        left = 0;
      }
      tooltip_I_Tag.css({
        top: (e.pageY + top),
        left: (e.pageX + left)
      });
      tooltip_I_Tag.tooltip('show');
    });
    
    $(".img").on('mouseleave', function(e) {
      $($(this).next()).tooltip('hide');
    });
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多