【发布时间】:2014-08-12 12:41:16
【问题描述】:
问题:当使用 JQuery 交换 DIV 标记内的元素(图像)时,DIV 会垂直移动。当没有实际交换图像并且只是将鼠标悬停在边框颜色更改时,DIV 不会移动。所以我知道它与 :hover CSS 问题无关。最终,图像将换出以包含嵌入视频预览。我通过使用可爱的小猫图像对其进行了简化,它们产生了同样的问题。
CSS:
.placecard {
margin:5px;
display:inline-block;
position:relative;
overflow:auto;
padding:0px;
border: 1px solid #12142E;
overflow:hidden;
}
@media (max-width: 1250px) {
.placecard {
max-width:23.64%;
height:auto;
}
}
@media (max-width: 1110px) {
.placecard {
max-width:31.64%;
height:auto;
}
}
@media (max-width: 900px) {
.placecard {
max-width:31.32%;
height:auto;
}
}
@media (max-width: 768px) {
.placecard {
max-width:47.52%;
height:auto;
}
}
@media (max-width: 552px) {
.placecard {
max-width:46.5%;
height:auto;
}
}
@media (max-width: 480px) {
.placecard {
max-width:44.5%;
height:auto;
}
}
Javascript:
$(".placecard").mouseenter(function() {
$(this).find(".modelimg").attr("id","object_container");
var model = $(this).attr("title");
var width = $(this).width();
var height = $(this).height();
console.log(model+":"+width+":"+height);
var container = document.getElementById('object_container'),
parent = container.parentNode,
newContainer = document.createElement('div'),
i = 0;
while( !!document.getElementById('object_container_' + i ) ) { i++; }
newContainer.id = 'object_container_' + i;
newContainer.className = 'npt-object-container';
newContainer.style.display = 'inline-block';
newContainer.innerHTML = "<img width="+width+" height="+height+" src=\"http://placekitten.com/300/200\" >"
parent.insertBefore(newContainer, container);
$(container).css("display","none");
console.log($(newContainer).height());
}).mouseleave(function() {
$("#object_container_0").remove()
$("#object_container").css("display","block");
$(this).find(".modelimg").removeAttr("id");
});
HTML:
<div class="placecard" data-profile="" title="Cat1">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat2">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat3">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat4">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat5">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat6">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
<div class="placecard" data-profile="" title="Cat7">
<img src="http://placekitten.com/g/300/200" class="modelimg" />
</div>
还有一个句柄 JSFiddle:http://jsfiddle.net/5snwxy6v/
JSFiddel 更新:http://jsfiddle.net/5snwxy6v/3/
【问题讨论】:
-
我将高度属性设置为“placecard”,这似乎解决了问题。问题是当您换出图像时,图像的容器变得越来越大。尝试放置背景颜色并注意当您交换图像时背景颜色是如何出现的。
标签: jquery css hover mouseenter