如何在悬停时使用网格设计将叠加div放在另一个div上?

sun*_*sun 4 html javascript css jquery css3

我尝试制作一个像设计的网格,我想在悬停到每个div时显示叠加.

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

我尝试下面的代码我相信逻辑是正确的但按钮和叠加的位置不是放在图像div的中心.

图像没有叠加

图像没有叠加

悬停时使用叠加层

悬停时使用叠加层

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>
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

JSfiddle.图像大小是可以改变的,所以我认为固定填充到中心按钮可能无济于事.任何人都可以帮我定位叠加层吗?

car*_*mba 8

用位置改变了一些东西,并且给了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;
}
Run Code Online (Sandbox Code Playgroud)


Unk*_*ser 5

这是另一个解决方案,其中我只使用了1个,div但您可以div's在同一个类中使用其他几个。小提琴