[英]How to create sliding images on hover with Bootstrap 3?
当我将光标移到图像上方时,我希望图像滑动。 假设我有3张照片。 仅当我在DIV上时,图像才会滑动。 我很确定可以通过轮播实现此目的,但是我不确定这是否是最好的方法。
我的密码
<div class="container products">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-4">
<!-- Reveal Up Full -->
<div class="image revealUpFull">
<img src="http://lorempixel.com/360/180/technics/1" class="img-responsive"/>
<span class="title">Caption <br / ><br / > with some more info</span>
</div>
</div>
<div class="col-md-4">
<!-- Reveal Up Full -->
<div class="image revealUpFull">
<img src="http://lorempixel.com/360/180/technics/2" class="img-responsive"/>
<span class="title">Caption <br / ><br / > with some more info</span>
</div>
</div>
<div class="col-md-4">
<!-- Reveal Up Full -->
<div class="image revealUpFull">
<img src="http://lorempixel.com/360/180/technics/3" class="img-responsive"/>
<span class="title">Caption <br / ><br / > with some more info</span>
</div>
</div>
</div>
</div>
</div>
</div>
演示: http : //codepen.io/anon/pen/xbbNPM
另外,我希望鼠标悬停时可以单击div。
我很确定可以通过轮播实现此目的,但是我不确定这是否是最好的方法。
为什么不? 因为您已经在使用Bootstrap,所以应该首先使用它的功能。
另请阅读http://getbootstrap.com/javascript/#carousel,并发现您可以在同一页面上使用多个轮播:
轮播需要在最外面的容器(.carousel)上使用id,以使轮播控件正常运行。 添加多个轮播时,或更改轮播ID时,请确保更新相关控件。
因为您要在mouseover(hover)上滑动旋转木马,所以不需要任何控件,所以每个旋转木马都可以如下所示进行编码:
<div class="col-md-4">
<!-- Reveal Up Full -->
<div id="carouse1" class="carousel slide" data-ride="carousel" data-interval="false">
<div class=" carousel-inner" role="listbox">
<div class="item active image revealUpFull">
<a href="#"><img src="http://lorempixel.com/360/180/technics/1"></a>
<div class="carousel-caption">>Caption <br / ><br / > with some more info</div>
</div>
<div class="item image revealUpFull">
<a href="#"><img src="http://lorempixel.com/360/180/technics/2"></a>
<div class="carousel-caption">>Caption <br / ><br / > with some more info</div>
</div>
<div class="item image revealUpFull">
<a href="#"><img src="http://lorempixel.com/360/180/technics/3"></a>
<div class="carousel-caption">>Caption <br / ><br / > with some more info</div>
</div>
</div>
</div>
</div>
请注意,我不确定为什么将3个md-4
列包装在md-12
列中,所以您的轮播图片不需要img-responsive
类。
创建HTML之后,您应该为鼠标悬停创建一个JavaScript触发器(我在这里使用鼠标输入):
<script>
$('.carousel').on('mouseenter',function(){ $( this ).carousel('next');})
</script>
另外,我希望鼠标悬停时可以单击div。
正如你可以在上面看到我已经包裹在一个图像a
标签。 剩下的唯一可能的问题是.carousel-caption
不可单击并覆盖图像。 使用以下CSS代码使.carousel-caption
可点击:
<style>
.carousel-caption {
pointer-events: none;
}
</style>
演示: http : //www.bootply.com/bmLVbymbhj
更新
- 标题不再滑动。 实际上,代码已发生了巨大变化。 我想我>需要将其集成到您的代码中。
是的,您应该集成revealUpFull
类。 如果您这样做有任何麻烦,请让我知道,或者对SO提出新的问题。
您应该使用如下所示的内容:
.carousel-caption {
width: 100%;
height: 100%;
position: absolute;
background: rgb(0, 0, 0); /* fallback color */
background: rgba(0, 0, 0, 0.7);
text-align: center;
padding: 5px 0 4px;
font-size: 14px;
color: white;
-webkit-transition: all .3s ease-out;
-moz-transition: all .3s ease-out;
-ms-transition: all .3s ease-out;
-o-transition: all .3s ease-out;
transition: all .3s ease-out;
/* make image clickable */
pointer-events: none;
/* override bootstrap */
left: 0;
right: 0;
}
/* REVEAL UP FULL */
div.image.revealUpFull .carousel-caption {
height: 100%;
width: 100%;
bottom: -150px;
}
div.image.revealUpFull:hover img {
top: 0;
}
div.image.revealUpFull:hover .carousel-caption {
bottom: 0;
}
.carousel-caption {
pointer-events: none;
}
- 有助于滑动的左右箭头被删除。 这就是我想要的,但他们的障碍仍然存在。 所以左右都有一个空间。
我希望上述问题与删除的箭头无关,而是由于图像的大小。 您正在使用宽度为360px的图像。 如前所述,默认情况下,轮播的图像是响应的。 CSS代码为这些图像设置了max-width:100%
,这意味着它们的显示尺寸不得超过其原始尺寸。 您可以通过使用较大的图像来解决此问题,或者为图像设置100%的分辨率(大多数情况下,放大图像会出现质量问题)。 您可以使用下面显示的代码:
.carousel-inner> .item> img,.carousel-inner> .item> a> img {max-width:none; 宽度:100%; }
- 我想要的是当鼠标悬停在DIV上时,3张图片将无限循环地自动滑动。 他们每个人之间将有2秒
实际上,您应该可以使用以下内容:
$('.carousel').on('mouseenter',function(){ $( this ).carousel('cycle',{interval:2000});}); $('.carousel').on('mouseleave',function(){ $( this ).carousel('pauze')});});
但是旋转木马已经停在mouseenter上。
我将在稍后发布解决方案。
轮播api具有pause
选项(默认为悬停),您可以将此选项设置为空字符串,以防止轮播在悬停时停止循环。 您应该在HTML中删除轮播数据属性以启用显式的JavaScript初始化:
data-ride =“ carousel”属性用于将轮播标记为动画,该动画从页面> load开始。 它不能与(冗余和不必要的)显式JavaScript初始化同一轮播结合使用。
之后,您可以使用:
$('.carousel').on('mouseenter',function(){ $( this ).carousel({interval:2000,pause:''}); });
$('.carousel').on('mouseleave',function(){ $( this ).carousel('pause'); });
将以上三点放在一起时,您将获得以下演示中所示的内容: http : //www.bootply.com/acGNORR3it
看起来我们不需要轮播功能来实现此简单功能。 JavaScript方式将是最简单,最快的。
<script language="JavaScript">
var i = 0; var path = new Array();
// LIST OF IMAGES
path[0] = "http://lorempixel.com/750/375/sports/1/";
path[1] = "http://lorempixel.com/750/375/sports/2/";
path[2] = "http://lorempixel.com/750/375/sports/3/";
function swapImage() { document.slide.src = path[i];
if(i < path.length - 1) i++;
else i = 0; setTimeout("swapImage()",3000);
} window.onload=swapImage;
</script>
<img height="200" name="slide" src="" width="400" />
演示: http : //codepen.io/anon/pen/emmqYJ
让我知道是否存在任何更简单的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.