Css+;Jquery以实现这种重叠
我有3个父母,其中包含未定义数量的子女,(父母是浮动的)子女是相对的,方案如下:Css+;Jquery以实现这种重叠,jquery,html,css,styles,Jquery,Html,Css,Styles,我有3个父母,其中包含未定义数量的子女,(父母是浮动的)子女是相对的,方案如下: -----Parent----- ------Parent------ ----Parent---- | Child | | Child | | Child | | Child | | Child | | Child | | Child | | Child | | Chil
-----Parent----- ------Parent------ ----Parent----
| Child | | Child | | Child |
| Child | | Child | | Child |
| Child | | Child | | Child |
| Child | | Child | --------------
---------------- -------------------
.parent{
position:relative;
float:left;
width:296px;
background-color:pink;
margin-right:10px;
}
.child{
position:relative;
height:60px;
margin-bottom:10px;
background-image:url("../images/theme_test.png");
}
鼠标悬停时,子对象将调整到更大的高度,但我希望它们重叠,我不希望扩展父对象
我的css如下所示:
-----Parent----- ------Parent------ ----Parent----
| Child | | Child | | Child |
| Child | | Child | | Child |
| Child | | Child | | Child |
| Child | | Child | --------------
---------------- -------------------
.parent{
position:relative;
float:left;
width:296px;
background-color:pink;
margin-right:10px;
}
.child{
position:relative;
height:60px;
margin-bottom:10px;
background-image:url("../images/theme_test.png");
}
我尝试使用顶部,Y位置,但它不起作用,下面的孩子们的吼声将下降。好了:
我使用边距s更新了仓位,注意两件事:
我必须更改z-index
,以便悬停的元素位于顶部
我为最后一个孩子创造了一种特殊的治疗方法——让孩子长大而不是长大,这样就不会让父母变长
这是mouseenter
事件:
$('.child').mouseenter(function() {
$(this).css('z-index',5);
if($(this).is(':last-child')){ // check if this is the last child
$(this).animate({
height: "80px",
'margin-top': "-20px" // grow upwards..
}, 250 );
}else{
$(this).animate({
height: "80px",
'margin-bottom': "-10px" // grow down wards..
}, 250 );
}
})
mouseout
正好相反。我过去也做过类似的事情。您实际上不需要任何javascript或jquery
您需要的是在每个子对象上设置相对位置(您已经这样做了),并在每个子对象内创建另一个具有绝对位置的容器。然后只需添加一些css代码来更改悬停时容器的高度,并适当调整z索引
更新:
我已经更新了你之前发布的代码。只是使用了最后一个子css来向上移动最后一个子,而不是仅仅增加高度。结果和使用javascript是一样的,但我个人会在不需要的时候避免使用JS
此处已更新(添加了过渡和边框-看起来不错:))
CSS:
HTML:
我通过实现一对if
语句编辑了Yotam的小提琴,以防止父div的高度发生变化(如果您从一个快速移动到另一个,则其高度会发生变化),并防止有时如果鼠标从一个快速移动到另一个,则会反复设置孩子的动画。这是通过检查列中的另一个子项当前是否正在设置动画,并且在完成之前不允许设置动画来完成的:if(!animating)
。唯一的问题是,如果一个鼠标从一个快速移动到另一个,那么在另一个停止动画之前,mouseenter
就会出现。你可以决定你更喜欢哪个
使用CSS会很棒,就像Majky说的那个样很棒,我个人就是这么做的请创建一个包含CSS和HTML标记的JSFIDLE,不是这样。尝试将边框添加到父类中,并确保不会发生任何事情。是的。对不起,我的意思是孩子们超过了父母的身高。。我想他想让孩子们呆在父母家里我不好,那样的话,jquery将是唯一的办法。我想他只想让其他孩子留在原处:)现在它和你的JS.NICE JOB一样:)我已经用过渡和边框更新了你的帖子-看看新的jsFiddle请不要完全依赖到第三方网站的链接,即使是像jsFiddle一样可靠的网站。最好在这里发布代码并使用fiddle作为支持。updated-添加了mouseenter事件和一些注释来解释