2012-01-27 168 views
0

好吧,我认为我可以做到这一点没有问题,但由于某种原因,我无法弄清楚。jQuery添加/删除类

我想拥有三个盒子,堆叠起来就像卡片一样。中间的盒子显示负载,另外两个在后面。然后,当用户悬停在一个,它的Z指数增加,箱子在前面。这些框会保持与页面加载完全相同的位置,我只想让它们完全显示在悬停上,我假设可以通过切换它们的z-index来完成。

这是据我已经得到了:http://jsfiddle.net/q8nYz/(我只是在做上点击现在)

<div id="#container"> 

    <div id="box-1" class="box"></div> 
    <div id="box-2" class="box active"></div> 
    <div id="box-3" class="box"></div> 

</div> 


#container { 
    margin: 0 auto; 
    position: relative; 
    width: 960px; 
} 

.box { 
    background: gray; 
    border: 2px solid black; 
    float: left; 
    height: 300px; 
    position: absolute; 
    width: 300px; 
    -webkit-border-radius: 10px; 
} 

#box-1 { 

} 

#box-2 { 
    left: 200px; 
} 

#box-3 { 
    left: 400px; 
} 

.active { 
    z-index: 1; 
} 


$(".box").click(function() { 

    if ($(".box").hasClass("active")) { 
     $(".box").removeClass("active"); 
    } 

}); 
+0

看一看这里的一些想法:http://usejquery.com/posts/create-a-unique-gallery-by-using-z-index-和-jquery – 2012-01-27 20:05:11

+0

@罗伯特哈维感谢您的链接! – ansarob 2012-01-27 20:15:41

回答

1

你只需要将active类添加到cl的框中即可icked,使用:

$(this).addClass("active"); 

updated your fiddle

编辑我喜欢this idea更好。它“将他们移回”而不是将其移动到前面。这样感觉更自然(尝试改变他们很多)。

$(".box").click(function() { 
    $(".box").css("z-index", function() {return $(this).css("z-index") - 1;}); 
    $(this).css("z-index", 3); 
}); 
+1

确保你在这里发布你的代码。小提琴链接不算作发布代码。 – 2012-01-27 20:10:09

+0

感谢您的意见。唯一的问题是,当你点击左侧,然后右侧的框(或反之亦然)时,它们都会出现在前面,并将中间框留在后面,而且看起来很有趣:) – ansarob 2012-01-27 20:18:25

0

有两件事,z-index需要大于1(默认值为1)。当引用被点击的项目时,你需要使用$(this)而不是.box来停止添加和删除它们中的类。

我想这是你想要的东西:http://jsfiddle.net/q8nYz/15/

+0

确保你在这里发布你的代码。小提琴链接不算作发布代码。 – 2012-01-27 20:10:01

+0

啊,'z-index'上的好点。 @AndrewMilson用CSS':hover'选择器覆盖了这个。 – ansarob 2012-01-27 20:20:16