javascript - 如何使用类似网格的设计在悬停时将叠加 div 放置在另一个 div 上?

标签 javascript jquery html css

我尝试制作类似网格的设计,我想在悬停时显示每个 div 的叠加层。

overlay div 有两个按钮,应该放在中间。

我尝试了下面的代码,我相信逻辑是正确的,但是按钮和叠加层的位置没有放在图像 div 的中心。

没有覆盖的图像

Image Without overlay

悬停在叠加层上

On hover with overlay

HTML

<ul>
    <li>
        <div class="image"><img src="http://i.stack.imgur.com/rOVDt.jpg"/></div>
        <div class="overlay"><div class="bt1"></div><div class="bt2"></div></div>
    </li>
    <li>
<div class="image"><img src="http://i.stack.imgur.com/rOVDt.jpg"/></div>
         <div class="overlay"><div class="bt1"></div><div class="bt2"></div></div>
    </li>
    <li>
<div class="image"><img src="http://i.stack.imgur.com/rOVDt.jpg"/></div>
         <div class="overlay"><div class="bt1"></div><div class="bt2"></div></div>
    </li>
    <li>
<div class="image"><img src="http://i.stack.imgur.com/rOVDt.jpg"/></div>
        <div class="overlay"><div class="bt1"></div><div class="bt2"></div></div>
    </li>

</ul>

CSS

.image{
 width:100px;
 height:100px;

}
.overlay{
 width:100px;
 height:100px;
 display:none; 
}

ul { list-style: none; width: 100%; }
ul li { display:inline-block; width:150px;}
.image:hover +.overlay {
    display:block;
    background-color:black;
    top:0;
    opacity:0.75;

}
.bt1 {
    background-color:orange;
    position:absolute;
    width:50px;
    height:50px;
    margin:0 0 0 5%;
}
.bt2 {
    background-color:green;
    position:absolute;
    width:50px;
    height:50px;
    margin:0 5% 0 0;
}

JSfiddle .图像大小是可变的,所以我认为固定填充到中心按钮在这里可能无济于事。谁能帮我定位叠加层?

最佳答案

改变了位置的一些东西,也给了 li 元素一个高度,因为 img 更大了..

http://jsfiddle.net/4CqNK/8/

.image{
 width:100px;
 height:100px;

}
.overlay{
 width:100%;
 height:100%;
display:none;
    position:absolute;
    top:0px;
    left:0px;
}
.overlay div {
    position:relative;
    display:inline-block;
    top:50%;
    margin:-50% 5px 0 0;
}
ul { list-style: none; width: 100%; }
ul li { position:relative;display:inline-block; width:150px;height:150px;}
li:hover .overlay {
    display:block;
    background-color:black;
    opacity:0.75;
}
.bt1 {
    background-color:orange;
    width:50px;
    height:50px;
}
.bt2 {
    background-color:green;
    width:50px;
    height:50px;
}

关于javascript - 如何使用类似网格的设计在悬停时将叠加 div 放置在另一个 div 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20017952/

相关文章:

javascript - 如何使 nav-fixed-top 像非固定导航栏一样下推内容?

jquery - SlideUp 和 SlideDown 会导致 Firefox 12 中的文本跳转吗?

html - 谷歌在我的表单中自动完成

javascript - 符号扫描仪无法作为 IBM 手持式 USB 工作

javascript - 根据另一个选择的结果更改 HTML <select> 中的选项

jQuery:绑定(bind)生成的元素

jquery - TinyMCE 未在 jquery ui 模式对话框上初始化

javascript - 如何将图片高度和宽度传递给 html 灯箱

javascript - 如何限制 Bootstrap Datepicker 中的可选日期范围?

javascript - 在 HTML5 中构建音频混合器