我有以下标记:
我有以下标记:
$('.box').hover(
function(e) {
var $this = $(this);
$('.box').not($this).addClass('filter');
$('.card').show();
},
function(e) {
var $this = $(this);
$('.box').not($this).removeClass('filter');
$('.card').hide();
}
);
.card {
display: none;
width: 250px;
height: auto;
border: thin red solid;
border-radius: 2em;
padding: 1em 0;
}
.box {
transition: all .5s linear;
}
.filter {
-webkit-filter: opacity(.1);
-moz-filter: opacity(.1);
-ms-filter: opacity(.1);
-o-filter: opacity(.1);
filter: opacity(.1);
}
html,
body {
background-color: aquamarine;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="text-center col-xs-3">
<img class="box" data-direction="right" src="https://placehold.it/100x300" />
</div>
<div class="text-center col-xs-3">
<img class="box" data-direction="right" src="https://placehold.it/100x300" />
</div>
<div class="text-center col-xs-3">
<img class="box" data-direction="left" src="https://placehold.it/100x300" />
</div>
<div class="text-center col-xs-3">
<img class="box" data-direction="left" src="https://placehold.it/100x300" />
</div>
</div>
<div class="card">
<h1 class="text-uppercase">card here</h1>
</div>
从代码片段中可以看出,当鼠标移开 .box
图像时,.card
元素会隐藏。我还尝试使用以下代码:
$('.card').removeClass('hidden').delay(2000).queue(
function() {
$(this).addClass('hidden').dequeue();
}
);
这里使用了Bootstrap提供的.hidden
,虽然可以起到作用,但并不符合我的意图。
概念
我想要实现的是,.card
盒子会显示在.box
图片的左侧或右侧(取决于[data-direction]
属性),并垂直居中。使用JS进行定位部分不是问题(我认为)。
问题
只要鼠标悬停在img.box
元素上,就应该能看到这个卡片,如果鼠标离开.box
并且用户试图选择/点击.card
容器中的链接,则此卡片应该保持可见状态。一旦用户离开.card
,它应该在短时间后淡出。