【问题标题】:jQuery tools tooltip, position with absolute & marginjQuery 工具提示,绝对位置和边距
【发布时间】:2011-12-02 11:09:31
【问题描述】:

我正在使用jquery插件:Tools.tooltip() 看来定位确实是个问题。

当工具提示用 position:absolute 包装在某个容器中时,您需要在 conf 字典中添加 relative:true 以便正确定位工具提示。

现在的问题是:如果您同时拥有 position:absolute 包装器以及带有边距的工具提示触发器,则位置将会混乱

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script src="http://cdn.jquerytools.org/1.2.6/all/jquery.tools.min.js"></script>
<style>
.trigger
{
    width:100px;
    height:40px;
    background-color:red;
    margin:5px;
    position:relative;
}
.tooltip 
{
    display:none;
    color:white;
    background-color:#333;
    padding:10px;
    border-radius:3px;
}
</style>
<div class='wrapper' style='position:absolute;left:100px;top:100px'>
    <div class='trigger' style='margin-top:100px;margin-left:100px'>
        hover to see the tooltip
    </div>
    <div class='tooltip'>
        The awesome tooltip
    </div>
</div>

<script type='text/javascript'>
    $('.trigger').tooltip({
        position:'bottom center',
        relative:true,
    });
</script>

在这种情况下,工具提示应该显示在触发器下方并居中。但是当鼠标悬停在触发器(红色框)上时,工具提示(灰色框)显示在这个位置:

好像边距被完全忽略了。另外,如果我根本不使用边距(只有 position:absolute 的包装并在 conf 中使用 relative:true),工具提示仍然显示在一个奇怪的位置:

与正确位置相比,工具提示有点偏左和顶部,我不知道。

我该如何解决这个问题?非常感谢! :)

【问题讨论】:

  • 位置怎么乱了?工具提示是相对于.trigger 还是.wrapper 定位的?您是否可以提供一个工作示例或其他内容来说明问题的扩展,那会很好。因为我在想,使用工具提示库的offset 属性可以解决一些问题。
  • 我只是稍微编辑了一下并放了一些图片,希望它看起来更清晰。如果使用偏移量,我需要为每个不同的边距指定它,这对我不利。

标签: jquery tooltip jquery-tools


【解决方案1】:

所以如果有人想使用 jQuery 工具提示:

  • 如果工具提示包含在“位置:绝对”或 'position:fixed' 容器,在 ini 中提供 'relative:true' 配置。
  • 在这种情况下,不要为工具提示的触发器添加任何边距

【讨论】:

    【解决方案2】:

    我给你做了一个小小提琴,“kindda”解决了你的问题。

    在这个小提琴中,工具提示位于触发器下方,但需要 x 次“悬停”才能使其 100% 正确放置。我认为这是由工具提示库中的某些(错误)功能引起的。

    这是小提琴:http://jsfiddle.net/Gjw74/1/

    以及修改后的javascript:

    $('.trigger').tooltip({
        position:'bottom center',
        relative:true,
        onShow: function(){
            var $trigger = this.getTrigger();
            this.getTip().css({
                'margin-top' : $trigger.css('margin-top'),
                'margin-left' : $trigger.css('margin-left') 
            });
        }
     });
    

    【讨论】:

    • 嗨,雷神!我刚刚发现,如果我从触发器的 css 中删除 'margin:5px' ,一切都会正确。不管怎么说,还是要谢谢你!似乎 jquery 工具提示在处理边距和定位方面非常糟糕。他们需要解决问题,或者至少以明显的方式记录这些限制
    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 2015-12-30
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多