2012-07-05 84 views
2

当我将鼠标悬停在imgdiv.hover-group之上时,div div.hover-toggle变得可见,并在鼠标离开图像时变为不可见。 的div.hover-toggleimg的它属于的区域内出现,以其底部边界并且每个相等宽度的button.btn小号的对准。鼠标悬停可让div出现在图像的边界内

举例说明:

没有鼠标悬停:

|-----------| 
|   | 
| img | 
|   | 
|   | 
|   | 
|-----------| 

是鼠标悬停:

|-----------| 
|   | 
| img | 
|   | 
|-----------| 
| 1 | 2 | 3 | 
|-----------| 

使用我已经完成了悬停来回切换的jQuery:

$(selector1).mouseover(function(){$(selector2).hide();}); 
$(selector1).mouseout(function(){$(selector2).show();}); 

Howeve r,如图所示,无法将div.hover-toggle与图像底部对齐,而是出现在图像下方。

这怎么办?

谢谢!


我正在操纵上面的DOM出现在下面。它使用twitter引导。

<ul class="thumbnails"> 
    <li class="span3"> 
     <div class="hover-group thumbnail"> 
      <img src="http://placehold.it/260x180" alt=""> 
      <div class="hover-toggle btn-group"> 
       <button class="btn">1</button> 
       <button class="btn">2</button> 
       <button class="btn">3</button> 
      </div> 
      <h5>Thumbnail label</h5> 
      <p>Thumbnail caption right here...</p> 
     </div> 
    </li> 
... 
</ul> 

回答

6

没有必要对JS在这里,你可以完成简单的CSS和一点点的标记变化(我包的图像,并在图像配,包装DIV的.hover拨动格)的一切:

<ul class="thumbnails"> 
    <li class="span3"> 
     <div class="hover-group thumbnail"> 
      <div class="image-wrapper"> 
       <img src="http://placehold.it/260x180" alt=""> 
       <div class="hover-toggle btn-group"> 
        <button class="btn">1</button> 
        <button class="btn">2</button> 
        <button class="btn">3</button> 
       </div> 
      </div> 
      <h5>Thumbnail label</h5> 
      <p>Thumbnail caption right here...</p> 
     </div> 
    </li> 
... 
</ul> 

现在它需要的造型很简单:

.hover-group .image-wrapper { 
    /* We need this to make the .hover-toggle div relative to .image-wrapper */ 
    position: relative; 
} 

.hover-group .image-wrapper .hover-toggle { 
    /* set it at the bottom of .image-wrapper */ 
    position: absolute;  
    bottom: 0; 
    /* and don't display it */ 
    display: none; 
} 

.hover-group .image-wrapper:hover .hover-toggle { 
    /* only display it when .image-wrapper is being hovered on */ 
    display: block; 
} 

如果你想让它显示,当你将鼠标悬停在整个.hover组,使用CSS,而不是最后一行:

.hover-group:hover .image-wrapper .hover-toggle { 
    display: block; 
} 
+2

打我吧,这里是一个演示中,我的答案我在写创建(这几乎是相同的):http://jsfiddle.net/W2uNA/ –

+0

@AndresIlich, @ yoavmatchulsky:几件事: 1)我想要有这些等宽的按钮,它们的总宽度等于图像的宽度。 2)您能否验证这种技术在Twitter Bootstrap中可以很好地发挥作用? (jsfiddle只说js,我认为这会遗漏TB的css) 我尝试了像你自己一样创建'div.image-wrapper',但是这会导致'ul.thumbnails'或'div.thumbnail'显得很奇怪。我假设,因为它的CSS选择器寻找'div',它是'.thumbnail'或类似的直接后裔。 – bguiz

+1

@bguiz只需将100分为三,然后将结果用作每个按钮的宽度。 –

2

如果你想让你的结构不变,您可以设置div.hover拨动的高度,然后将图像作为下面的保证金:

margin:0 0 -30px 0; 

其中30是一个合适的数目取决于div.hover-toggle的高度。

现场演示:http://jsfiddle.net/4geFu/

+0

@ Kasra:感谢您的回答,我喜欢它,但我觉得其他解决方案更加优雅,因为它避免了指定'div'的绝对像素大小 – bguiz