jQuery实现视频展示效果


Posted in jQuery onMay 30, 2020

本文实例为大家分享了jQuery实现视频展示的具体代码,供大家参考,具体内容如下

效果:

用户可以单击左上角的左右箭头,来控制视频展示的左右滚动。当单击向右箭头时,下面的展示视频会向左滚动,同时新的视频展示会以滚动方式显示出来。

jQuery实现视频展示效果

思路:

  • 当视频展示内容处于最后一个版面时,如果再向后,则应该跳转到第一个版面
  • 当视频展示内容处于第一个版面时,如果再向前,就应该跳转到最后一个版面
  • 左上角的箭头旁边的蓝色圆点与动画一起切换,它代表当前所处的版面

一、HTML结构

<div class="v_show">
 <div class="v_caption">
 <h2 class="cartoon" title="卡通动漫">卡通动漫</h2>
 <div class="highlight_tip">
  <span class="current">1</span><span>2</span><span>3</span><span>4</span>
 </div>
 <div class="change_btn">
  <span class="prev" >上一页</span>
  <span class="next">下一页</span>
 </div>
 <em><a href="#" >更多>></a></em>
 </div>
 <div class="v_content">
 <div class="v_content_list">
  <ul>
  <li><a href="#" ><img src="img/01.jpg" alt="海贼王" /></a><h4><a href="#" >海贼王</a></h4><span>播放:<em>28,276</em></span></li>
  <!--中间省略-->
  <li><a href="#" ><img src="img/04.jpg" alt="龙珠" /></a><h4><a href="#" >龙珠</a></h4><span>播放 <em>57,865</em></span></li>
  </ul>
 </div>
 </div>
</div>

二、jQuery

(1)首先通过jQuery选择器获取向右的箭头的元素,然后为它绑定click事件。因为“向右箭头”和“视频展示区域”在同一个祖先元素下,所以可以通过“向右箭头”来找到“视频展示区域”。首先获取向右箭头“的祖先元素,然后再祖先元素下寻找”视频展示区域“。

jQuery代码如下

$("span.next").click(function(){ //绑定click事件
  var $parent = $(this).parents("div.v_show");//根据当前点击元素获取到父元素
  var $v_show = $parent.find("div.v_content_list"); //寻找到“视频内容展示区域”
  var $v_content = $parent.find("div.v_content"); //寻找到“视频内容展示区域”外围的DIV元素
})

找到相应的元素后,就可以给相应的元素添加动画效果了,可以通过animate()方法控制”视频展示区域“的left样式属性的值来达到动画效果。left的值就等于每个版面的宽度

可以用width()方法来获取每个版面的宽度

var v_width = $v_content.width();

完成这一步之后,此时的代码如下:

$(function() {
 $("span.next").click(function() {
 var $parent = $(this).parents("div.v_show");
 var $v_show = $parent.find("div.v_content_list"); //找到视屏内容展示区域
 var $v_content = $parent.find('div.v_content'); //找到视频展示区域的外围div
 var v_width = $v_content.width(); //获取区域内容的宽度,带单位

 if (当动画到最后一版面) {
  $v_show.animate({left:'0px'},"slow");
 } else {
  $v_show.animate({left:'-='+v_width},"slow");
 }
 });
});

(2)现在的问题是如何知道动画已经到达最后一版面?”视频展示区域“每个版面摆放了4张视频图片,如果能够获取到视频图片的总数,然后用总数除以4就可以得到总的版面数。在还没有到达最后一个版面之前,需要在当前版面数的基础上加1,当到达最后一个版面时(即当前的版面数等于总的版面数),则需要当前的版面数设置为1,使之重新开始动画。

$(function() {
 var page = 1; //初始化当前版面数,即第一个版面
 var i = 4;
 $("span.next").click(function() {
 var $parent = $(this).parents("div.v_show");
 var $v_show = $parent.find("div.v_content_list"); //找到视屏内容展示区域
 var $v_content = $parent.find('div.v_content'); //找到视频展示区域的外围div
 var v_width = $v_content.width(); //获取区域内容的宽度,带单位
 var len = $v_show.find('li').length; //总的图片数
 var page_count = Math.ceil(len / i); //只要不是整数,就往大的方向取最小的整数
 if (page==page_count) {
  $v_show.animate({left:'0px'},"slow");
 } else {
  $v_show.animate({left:'-='+v_width},"slow");
 }
 });
});

(3)这一步完成,还需要是左上角的箭头旁边的蓝色圆点跟随动画一起切换,来标识当前所处的版面。只需要把样式”current”添加到代表当前版面的“蓝色圆点”上就可以

如果想知道当前的版面数,方法很简单,变量page的值就是版面数。由于eq()是方法的下标是从0开始,因此只要把page减去1就可得到当前的版面数,然后使用下面的代码来表示当前版面:

$parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");

(4)运行当前代码,并没有发现任何问题,但是如果快速地单击“向右”按钮,就会出现问题:放开光标,图片还在滚动。
这里的问题是有动画队列引起的。当快速地单击向右按钮时,单击产生的动画会追加到动画队列中,从而出现上述问题,解决如下:

if( !$v_show.is(":animated") ){ } //判断“视频内容展示区域”是否正在处于动画

最终的jQquery代码如下

$(function(){
 var page = 1;
 var i = 4; //每版放4个图片
 //向后 按钮
 $("span.next").click(function(){ //绑定click事件
  var $parent = $(this).parents("div.v_show");//根据当前点击元素获取到父元素
  var $v_show = $parent.find("div.v_content_list"); //寻找到“视频内容展示区域”
  var $v_content = $parent.find("div.v_content"); //寻找到“视频内容展示区域”外围的DIV元素
  var v_width = $v_content.width() ;
  var len = $v_show.find("li").length;
  var page_count = Math.ceil(len / i) ; //只要不是整数,就往大的方向取最小的整数
  if( !$v_show.is(":animated") ){ //判断“视频内容展示区域”是否正在处于动画
  if( page == page_count ){ //已经到最后一个版面了,如果再向后,必须跳转到第一个版面。
  $v_show.animate({ left : '0px'}, "slow"); //通过改变left值,跳转到第一个版面
  page = 1;
  }else{
  $v_show.animate({ left : '-='+v_width }, "slow"); //通过改变left值,达到每次换一个版面
  page++;
  }
  }
  $parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
 });
 //往前 按钮
 $("span.prev").click(function(){
  var $parent = $(this).parents("div.v_show");//根据当前点击元素获取到父元素
  var $v_show = $parent.find("div.v_content_list"); //寻找到“视频内容展示区域”
  var $v_content = $parent.find("div.v_content"); //寻找到“视频内容展示区域”外围的DIV元素
  var v_width = $v_content.width();
  var len = $v_show.find("li").length;
  var page_count = Math.ceil(len / i) ; //只要不是整数,就往大的方向取最小的整数
  if( !$v_show.is(":animated") ){ //判断“视频内容展示区域”是否正在处于动画
  if( page == 1 ){ //已经到第一个版面了,如果再向前,必须跳转到最后一个版面。
  $v_show.animate({ left : '-='+v_width*(page_count-1) }, "slow");
  page = page_count;
  }else{
  $v_show.animate({ left : '+='+v_width }, "slow");
  page--;
  }
 }
 $parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
 });
});

完整代码下载地址:jQuery视频展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
jquery获取transform里的值实现方法
Dec 12 jQuery
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jquery的$().each和$.each的区别
Jan 18 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
jQuery 实现扁平式小清新导航
Jul 07 jQuery
jQuery实现简单评论功能
Aug 19 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 #jQuery
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 #jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 #jQuery
Jquery高级应用Deferred对象原理及使用实例
May 28 #jQuery
JQuery插件tablesorter表格排序实现过程解析
May 28 #jQuery
jQuery实现鼠标滑动切换图片
May 27 #jQuery
jQuery弹框插件使用方法详解
May 26 #jQuery
You might like
PHP学习 运算符与运算符优先级
2008/06/15 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
50个比较实用jQuery代码段
2011/09/18 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
详解JavaScript树结构
2017/01/09 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python检测生僻字的实现方法
2016/10/23 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
python爬虫爬取网页表格数据
2018/03/07 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
opencv与numpy的图像基本操作
2019/03/08 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
关于环保的建议书400字
2014/03/12 职场文书
黄金搭档广告词
2014/03/21 职场文书
交通事故调解协议书
2014/04/16 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
介绍信样本
2015/01/31 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python