我有两个div,每个div的宽度为50%。我想做到这一点,以便悬停的div扩大到70%,另一个减少到30%。当鼠标移出时,它们各自返回50%。我写了一个脚本,但它没有给出正确的结果。宽度是流动的,因此需要调整到所有窗口大小。我该如何才能正常工作?
我没有编写mouseout功能,因为鼠标悬停功能无法正常工作。
现在它是如何运作的: http://jsfiddle.net/kYZyp/
这是我的代码:
<div id="left" class="content_left"></div>
<div id="right" class="content_right"></div>
这是我的css for the div's
.content_left {
width:50%;
top:0px;
left:0px;
bottom:0px;
background:url(wedding.jpg) left center no-repeat;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: alpha(opacity=90);
-moz-opacity:0.9;
-khtml-opacity: 0.9;
opacity: 0.9;
}
.content_right {
width:50%;
top:0px;
right:0px;
bottom:0px;
background:url(events.jpg) right center no-repeat;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: alpha(opacity=90);
-moz-opacity:0.9;
-khtml-opacity: 0.9;
opacity: 0.9;
}
我正在使用这个脚本:
<script>
$("#left").mouseover(function(){
$("#left").animate({
width: "70%",
opacity: 1
}, 1500 );
$("#right").animate({
width: "30%"
}, 1500 );
});
$("#right").mouseover(function(){
$("#right").animate({
width: "70%",
opacity: 1
}, 1500 );
$("#left").animate({
width: "30%"
}, 1500 );
});
</script>
包括这个jQuery文件:
<script src="http://code.jquery.com/jquery-1.7rc2.js"></script>
答案 0 :(得分:7)
不知道这是否适合您:http://jsfiddle.net/yCY9y/3/
DOM:
<div id="wrapper">
<div id="left" class="content_left">LEFT</div><div id="right" class="content_right">RIGHT</div>
</div>
我使用包装器确保我们永远不会破坏下一行。
CSS:
#wrapper {
width:100%;
overflow:hidden;
white-space:nowrap;
}
#left, #right {
display:inline-block;
width: 50%;
}
#left {
background:red;
}
#right {
background:yellow;
}
我在#wrapper
white-space:nowrap; // Newer break whitespaces (break to the next line)
和
width:100%;
在#left, #right
我们使用:
display:inline-block;
女巫首先与&gt; IE6兼容。 (希望这不是问题)。
JS:
$("#left, #right").each(function() {
$(this).data("standardWidth", $(this).width());
});
$("#left, #right").hover(function() {
$(this).animate({
width: "70%"
}, 300 );
$(this).parent().children().not(this).animate({
width: "30%"
}, 300 );
}, function() {
$(this).parent().children().each(function() {
$(this).animate({
width: $(this).data("standardWidth")
}, 300 );
});
});
首先,我在mouseover
和mouseout
上绑定相同的#right
和#left
事件
$(selector).hover(mouseOverHandler, mouseOutHandler);
...
$(this).parent().children().not(this)
我们将事件触发的元素抛出并找到它的所有父元素(#wrapper
)childNodes:$(this).parent().children()
现在我们使用jQuery的this
方法过滤掉与not
匹配的所有内容。 (this
= #left
或#right
)女巫是元素。现在我们有#right -> #left
和#left -> #right
。
mouseOutHandler
将所有#wrapper
个子节点的宽度重置为50%
希望这能以正确的方式引导你......
修改强>
如果您的动画即将到期/链接使用,可以使用stop
方法停止所有活动动画并清除队列:
$(selector).stop().animate({
....
})
答案 1 :(得分:2)
这应该很适合你:
<script type="text/javascript">
$(function(){
$("#div1").hover(
function(){
$(this).css("width", "70%");
},
function(){
$(this).css("width", "50%");
}
);
});
</script>
编辑:添加动画
编辑:为动画添加了高度调整大小
<script type="text/javascript">
$(function(){
$("#div1").hover(
function(){
$(this).animate({ "width" : "70%", "height" : $("#container").height() + "px" });
},
function(){
$(this).animate({ "width" : "50%", "height" : "" });
}
);
});
</script>
<div id="container" style="height:400px;border:1px solid #000;padding:10px;">
<div id="div1" style="width:50%;border:1px solid #000;min-height:100px;">
Hello world!
</div>
</div>
编辑:如果您希望它填充窗口的高度,只需使用window.innerHeight
代替容器高度:
<script type="text/javascript">
$(function(){
$("#div1").hover(
function(){
$(this).animate({ "width" : "70%", "height" : window.innerHeight + "px" });
},
function(){
$(this).animate({ "width" : "50%", "height" : "" });
}
);
});
</script>
<div id="div1" style="width:50%;border:1px solid #000;min-height:100px;">
Hello world!
</div>
这是一个jsFiddle,证明它有效。
答案 2 :(得分:0)
要获取@James' answer(+1)并添加动画,只需使用.animate()
:
$(function(){
$("#div1").hover(
function(){
$(this).animate({width: '70%'});
},
function(){
$(this).animate({width: '50%'});
}
);
});