2013-09-24 34 views
2

我有一个自定义的CSS工具提示,当它出现时,它会推下其他内容。我知道,我需要添加position: absolute得到它的工作的权利,但我似乎无法找出其中...CSS/HTML:工具提示推送内容下载

HTML:

<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 

    <div class="outer"> 

    <a class="tippy" href=""> 
     ICON<img src="" class="icon"/> 
    </a> 

    <div class="tooltip"> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
    </div> 

    </div><!-- Container --> 

<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 

CSS:

.outer { 
    width: 350px; 
} 

.tippy { 
    text-decoration: none; 
} 

a.tippy:hover + div { 
    display:block; 
    float: right; 
} 

.tooltip { 
    margin-left: 5px; 
    margin-top: -15px; 
    padding: 10px; 
    width: 265px; 
    height: 110px; 
    background-color: #ccc; 
    position: relative; 
    border: 2px solid #333; 
    display: none; 
} 
.tooltip:after, .tooltip:before { 
    border: solid transparent; 
    content:' '; 
    height: 0; 
    right: 100%; 
    position: absolute; 
    width: 0; 
} 
.tooltip:after { 
    border-width: 11px; 
    border-right-color: #ccc; 
    top: 13px; 
} 
.tooltip:before { 
    border-width: 14px; 
    border-right-color: #333; 
    top: 10px; 
} 

Fiddle:

+0

无法从您的代码中知道什么是工具提示和什么是内容,而无需查看jsFiddle。 –

+0

我会将“demo”更改为“tooltip” – Keven

回答

1

您需要将position:relative更改为position:absolute.tooltip CSS块中。

由于此更改,您还需要修改用于定位工具提示的CSS。

如果修改.outerposition:relative这是因为设置.tooltip作为

left:55px; 
top:-15px; 

产生的CSS(仅显示块已更改)一样简单:

.outer { 
    width: 350px; 
    position:relative; 
} 
.tooltip { 
    left: 55px; 
    top: -15px; 
    padding: 10px; 
    width: 265px; 
    height: 110px; 
    background-color: #ccc; 
    position: absolute; 
    border: 2px solid #333; 
    display: none; 
} 

最后a jsFiddle表现它在行动中。

+0

您真棒。我其实接近这个。不过,我用'margin:-43px 0 5px 50px;'而不是'left'和'top'。为什么'left'和'top'会更好?我也没有在外部div中包含'position:relative;'并且它仍然有效。任何理由? – Keven

+0

边距基于元素的当前位置,因此无论是绝对位置,相对位置还是其他位置,它都会依据这些值进行偏移,并且是完全符合您需要的方法。除非它需要,否则它对于我来说建立绝对定位的元素具有更多的语义意义,其绝对值如'top'和'left'。最后,如果你知道如何达到预期的结果,你就知道两种方法。 –