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

    思路:

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

一、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'); //找到视频展示区域的外围divvar 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'); //找到视频展示区域的外围divvar 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");});
});

完整代码下载地址:
https://download.csdn.net/download/chenyonken/10530632

jQuery视频展示效果实例相关推荐

  1. 15款JQuery图片展示效果插件

    在图片展示的效果中,滑动门和幻灯片放映在这几年的web页面中越来越流行了,随着jQuery的流行趋势渐增,更多的开发者都致力于创建惊人的,多用途的,时髦的jquery图片展示效果.真的要感谢jQuer ...

  2. jQuery实例:图片展示效果

    原文地址为: jQuery实例:图片展示效果 开始之前,我就喜欢先看一下效果: 张娜拉,韩国的 My Digital Story 不知道是什么图来的 我的Logo,Studio拼错了都不知道,汗一个. ...

  3. jQuery+PHP动态数字展示效果

    我们在一些应用中需要动态展示数据,比如当前在线人数,当前交易总额,当前汇率等等,前端页面需要实时刷新获取最新数据.本文将结合实例给大家介绍使用jQuery和PHP来实现动态数字展示效果. 查看演示 下 ...

  4. 分类图片展示php源码,HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)...

    本文讲述了HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果.分享给大家供大家参考,具体如下: 因为本人是星际争霸系列游戏的忠实拥簇,所以在今天的jQuery教程中,我 ...

  5. 如何用Jquery做图片展示效果

    一. 前言 到底用JQuery做出怎样的展示效果? 让我们先来看一下!网页加载时,如图所示: 二.本人思路 这个效果初学者看起来好像有点复杂,其实不太难,关键是理清思路,从后端的数据库中找出我们要展示 ...

  6. jquery练习——简单的图片结果展示效果

    今天看到google图片搜索结果页面,感觉简洁实用,于是用jquery粗略的模仿了一下 再次感觉到jquery的强大和易用,基本思路初步实现了,再整合ajax和json,应该可以做一个简单的应用了 : ...

  7. Revealing图片展示效果(jQuery)

    Revealing图片展示效果(jQuery),单击"更多信息"按钮,图片的缩略图将展现为全尺寸图片和附加信息,兼容主流浏览器,懒人图库推荐下载! 使用方法: 1.head区域引用 ...

  8. 小猿圈用jQuery实现手风琴图片展示效果

    对web前端了解的同学会知道jQuery是现在前端中使用的框架之一,但是你知道jQuery可以做到一些你意想不到的效果吗?下面小猿圈web前端老师用jQuery实现手风琴图片展示效果,希望对你有所帮助 ...

  9. 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果

    为什么80%的码农都做不了架构师?>>>    日期:2011/11/01 来源:GBin1.com 因为本人是星际争霸系列游戏的忠实拥簇,所以在今天的jQuery教程中,我们将使用 ...

  10. 16x16x16 4096个RGB LED的光立方是一种怎样的神奇效果?视频展示制作全过程

    学嵌入式,关注@我要学嵌入式,嵌入式男人的加油站. 作者:Dave Rowntree,文案:晓宇 微信公众号:芯片之家(ID:chiphome-dy) LED光立方真不是什么新鲜事了,学校时期就有不少 ...

最新文章

  1. 【百度地图API】——如何用label制作简易的房产标签
  2. 配置 L2 Population - 每天5分钟玩转 OpenStack(114)
  3. Matlab中常用希腊字母表查询
  4. [特征工程系列二]显性特征的基本处理方法
  5. Android Studio 运行模拟器时提示 “/dev/kvm device: permission denied”
  6. 设置路由器端口转发功能如何操作
  7. mysql有nvarchar类型_mysql如何处理varchar与nvarchar类型中的特殊字符
  8. Nature封面:城里人为什么容易路痴?
  9. java项目没有bin_WebAPI项目似乎没有将转换后的web.config发布到bin文件夹?
  10. vspy如何在图形面板显示报文_Vspy工程之C Code Interface的使用(Vspy系列其三)
  11. MySQL Explain命令详解--表的读取顺序,数据读取操作的类型等
  12. 会做饭的机器人曰记_做饭机器人作文作文300字
  13. 关于合格工程师素养的一些思考
  14. Python练习题(三)
  15. 处理UNICODE下【中文乱码】异常
  16. 资产初探:理财直接融资工具
  17. 如何下载腾讯课堂网页版的历史回放(电脑端)大多网页上的视频均可下载
  18. 解构金蝶EAS 开发工具
  19. JS中定义函数的几种方法
  20. 世界上最震撼的屏幕保护程序

热门文章

  1. C语言--求质数(详解)(筛选求质数)
  2. PSP-DDR跳舞机模拟器制谱教程
  3. jxls对比_JXLS 2.4.0学习
  4. 25B无人直升机调试(Tuning)
  5. 自动控制原理思维导图
  6. 微信商家收款码和个人收款码有什么区别?
  7. Xftp6+Xshell6+XmanagerPowerSuite安装教程
  8. java换行输出的几种方式
  9. JS核心之封装继承多态(一)
  10. 破解app 在so层的密钥key