图像滑块,屏幕大小调整时边距动画中断(不使用滑块插件)
image slider with margin animation breaking on screen resize (NO slider plugin used)
我正在尝试创建一个流畅的JQuery滑块,而不使用任何类型的滑块插件和媒体查询(只是CSS和jquery)。大多数解决方案涉及滑块插件和媒体查询。出于教育目的,我试图不这样做。
我正在使用边距动画来移动幻灯片(我不知道这是否是实现响应能力的最佳方法)。不幸的是,这是没有响应的,因为幻灯片宽度在 css 中是固定的。
请参阅下面的代码以获取可能的修复。 对于图片,我刚刚在油漆上创建了一个 650px x 350px 的矩形作为占位符。
<!DOCTYPE html>
<html>
<head>
<title>Slider</title>
<style>
*{
margin: 0;padding: 0;
}
html{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*, *:before, *:after {
-webkit-box-sizing: inherit;
-moz-box-sizing: inherit;
box-sizing: inherit;
}
.carousel{
border: 2px solid #000;
max-width: 650px;
margin: 0 auto;
overflow: hidden;
}
.carousel__canvas{
width: 3900px;
}
.carousel__item{
float: left;
list-style-type: none;
}
.carousel__item img{
width: 100%
}
</style>
</head>
<body>
<div class="carousel">
<ul class="carousel__canvas">
<li class="carousel__item"><img src="p1.png" alt="First Image"></li>
<li class="carousel__item"><img src="p2.png" alt="Second Image"></li>
<li class="carousel__item"><img src="p3.png" alt="Third Image"></li>
<li class="carousel__item"><img src="p4.png" alt="Fourth Image"></li>
<li class="carousel__item"><img src="p5.png" alt="Fifth Image"></li>
<li class="carousel__item"><img src="p1.png" alt="First Image"></li>
</ul>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var currentSlide = 1;
var $carousel__item = $('.carousel__item');
var numSlides = $carousel__item.length;
var slideWidth = $carousel__item.width();
var $viewport = $('.carousel');
var $slideContainer = $viewport.find('.carousel__canvas');
var $slide = $slideContainer.find('.carousel__item');
var trasitionTime = 500;
var slideViewTime = 3500;
var interval;
slideContainerWidth = slideWidth * numSlides;
function startCarousel(){
interval = setInterval(function(){
if(numSlides>1){
$slideContainer.animate({'margin-left':'-='+slideWidth+'px'}, trasitionTime,function(){
if(++currentSlide === numSlides){
$slideContainer.animate({'margin-left':'0'},0);
currentSlide = 1;
}
});
}
},slideViewTime);
}
function stopCarousel(){
clearInterval(interval);
}
$viewport.on('mouseover',stopCarousel).on('mouseleave', startCarousel);
startCarousel();
});
</script>
</body>
</html>
为什么要使用静态宽度。您可以始终使用百分比和 css 中的"height:auto"来使其响应!!
相关文章:
- 如何在Angular2中使用jQuery插件
- 可以前端maven插件使用节点,npm已经安装
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- TableExport jquery插件:文件名和扩展名问题
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- jQuery插件-从插件中调用公共方法
- 压缩phonegap中ios的图像插件
- jQuery粘性插件可变顶部间距
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Wordpress插件根据需要加载js和css
- jQuery显示/隐藏返回未定义的、中断的插件
- ExtJS 5.1 - 网格与网格过滤器插件在网格重新配置后中断
- 图像滑块,屏幕大小调整时边距动画中断(不使用滑块插件)
- 如何在不中断同一插件的其他实例的情况下取消订阅事件
- atom美化插件中断函数参数