jQuery實現(xiàn)視頻展示效果
本文實例為大家分享了jQuery實現(xiàn)視頻展示的具體代碼,供大家參考,具體內(nèi)容如下
效果:
用戶可以單擊左上角的左右箭頭,來控制視頻展示的左右滾動。當(dāng)單擊向右箭頭時,下面的展示視頻會向左滾動,同時新的視頻展示會以滾動方式顯示出來。
思路:
- 當(dāng)視頻展示內(nèi)容處于最后一個版面時,如果再向后,則應(yīng)該跳轉(zhuǎn)到第一個版面
- 當(dāng)視頻展示內(nèi)容處于第一個版面時,如果再向前,就應(yīng)該跳轉(zhuǎn)到最后一個版面
- 左上角的箭頭旁邊的藍(lán)色圓點與動畫一起切換,它代表當(dāng)前所處的版面
一、HTML結(jié)構(gòu)
<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事件。因為“向右箭頭”和“視頻展示區(qū)域”在同一個祖先元素下,所以可以通過“向右箭頭”來找到“視頻展示區(qū)域”。首先獲取向右箭頭“的祖先元素,然后再祖先元素下尋找”視頻展示區(qū)域“。
jQuery代碼如下
$("span.next").click(function(){ //綁定click事件 var $parent = $(this).parents("div.v_show");//根據(jù)當(dāng)前點擊元素獲取到父元素 var $v_show = $parent.find("div.v_content_list"); //尋找到“視頻內(nèi)容展示區(qū)域” var $v_content = $parent.find("div.v_content"); //尋找到“視頻內(nèi)容展示區(qū)域”外圍的DIV元素 })
找到相應(yīng)的元素后,就可以給相應(yīng)的元素添加動畫效果了,可以通過animate()方法控制”視頻展示區(qū)域“的left樣式屬性的值來達(dá)到動畫效果。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"); //找到視屏內(nèi)容展示區(qū)域 var $v_content = $parent.find('div.v_content'); //找到視頻展示區(qū)域的外圍div var v_width = $v_content.width(); //獲取區(qū)域內(nèi)容的寬度,帶單位 if (當(dāng)動畫到最后一版面) { $v_show.animate({left:'0px'},"slow"); } else { $v_show.animate({left:'-='+v_width},"slow"); } }); });
(2)現(xiàn)在的問題是如何知道動畫已經(jīng)到達(dá)最后一版面?”視頻展示區(qū)域“每個版面擺放了4張視頻圖片,如果能夠獲取到視頻圖片的總數(shù),然后用總數(shù)除以4就可以得到總的版面數(shù)。在還沒有到達(dá)最后一個版面之前,需要在當(dāng)前版面數(shù)的基礎(chǔ)上加1,當(dāng)?shù)竭_(dá)最后一個版面時(即當(dāng)前的版面數(shù)等于總的版面數(shù)),則需要當(dāng)前的版面數(shù)設(shè)置為1,使之重新開始動畫。
$(function() { var page = 1; //初始化當(dāng)前版面數(shù),即第一個版面 var i = 4; $("span.next").click(function() { var $parent = $(this).parents("div.v_show"); var $v_show = $parent.find("div.v_content_list"); //找到視屏內(nèi)容展示區(qū)域 var $v_content = $parent.find('div.v_content'); //找到視頻展示區(qū)域的外圍div var v_width = $v_content.width(); //獲取區(qū)域內(nèi)容的寬度,帶單位 var len = $v_show.find('li').length; //總的圖片數(shù) var page_count = Math.ceil(len / i); //只要不是整數(shù),就往大的方向取最小的整數(shù) if (page==page_count) { $v_show.animate({left:'0px'},"slow"); } else { $v_show.animate({left:'-='+v_width},"slow"); } }); });
(3)這一步完成,還需要是左上角的箭頭旁邊的藍(lán)色圓點跟隨動畫一起切換,來標(biāo)識當(dāng)前所處的版面。只需要把樣式”current”添加到代表當(dāng)前版面的“藍(lán)色圓點”上就可以
如果想知道當(dāng)前的版面數(shù),方法很簡單,變量page的值就是版面數(shù)。由于eq()是方法的下標(biāo)是從0開始,因此只要把page減去1就可得到當(dāng)前的版面數(shù),然后使用下面的代碼來表示當(dāng)前版面:
$parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
(4)運行當(dāng)前代碼,并沒有發(fā)現(xiàn)任何問題,但是如果快速地單擊“向右”按鈕,就會出現(xiàn)問題:放開光標(biāo),圖片還在滾動。
這里的問題是有動畫隊列引起的。當(dāng)快速地單擊向右按鈕時,單擊產(chǎn)生的動畫會追加到動畫隊列中,從而出現(xiàn)上述問題,解決如下:
if( !$v_show.is(":animated") ){ } //判斷“視頻內(nèi)容展示區(qū)域”是否正在處于動畫
最終的jQquery代碼如下
$(function(){ var page = 1; var i = 4; //每版放4個圖片 //向后 按鈕 $("span.next").click(function(){ //綁定click事件 var $parent = $(this).parents("div.v_show");//根據(jù)當(dāng)前點擊元素獲取到父元素 var $v_show = $parent.find("div.v_content_list"); //尋找到“視頻內(nèi)容展示區(qū)域” var $v_content = $parent.find("div.v_content"); //尋找到“視頻內(nèi)容展示區(qū)域”外圍的DIV元素 var v_width = $v_content.width() ; var len = $v_show.find("li").length; var page_count = Math.ceil(len / i) ; //只要不是整數(shù),就往大的方向取最小的整數(shù) if( !$v_show.is(":animated") ){ //判斷“視頻內(nèi)容展示區(qū)域”是否正在處于動畫 if( page == page_count ){ //已經(jīng)到最后一個版面了,如果再向后,必須跳轉(zhuǎn)到第一個版面。 $v_show.animate({ left : '0px'}, "slow"); //通過改變left值,跳轉(zhuǎn)到第一個版面 page = 1; }else{ $v_show.animate({ left : '-='+v_width }, "slow"); //通過改變left值,達(dá)到每次換一個版面 page++; } } $parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current"); }); //往前 按鈕 $("span.prev").click(function(){ var $parent = $(this).parents("div.v_show");//根據(jù)當(dāng)前點擊元素獲取到父元素 var $v_show = $parent.find("div.v_content_list"); //尋找到“視頻內(nèi)容展示區(qū)域” var $v_content = $parent.find("div.v_content"); //尋找到“視頻內(nèi)容展示區(qū)域”外圍的DIV元素 var v_width = $v_content.width(); var len = $v_show.find("li").length; var page_count = Math.ceil(len / i) ; //只要不是整數(shù),就往大的方向取最小的整數(shù) if( !$v_show.is(":animated") ){ //判斷“視頻內(nèi)容展示區(qū)域”是否正在處于動畫 if( page == 1 ){ //已經(jīng)到第一個版面了,如果再向前,必須跳轉(zhuǎn)到最后一個版面。 $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視頻展示
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery的Cookie封裝,與PHP交互的簡單實現(xiàn)
下面小編就為大家?guī)硪黄猨Query的Cookie封裝,與PHP交互的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10jQuery Attributes(屬性)的使用(一、屬性篇)
本系列文章主要講述jQuery框架的屬性(Attributes)使用方法,文章分為:屬性篇、類篇、Html代碼篇&文本篇、值篇共4篇文章。2009-12-12jquery輕量級數(shù)字動畫插件countUp.js使用詳解
這篇文章主要為大家詳細(xì)介紹了jquery鼠標(biāo)滾動數(shù)字增加插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10ztree實現(xiàn)左邊動態(tài)生成樹右邊為內(nèi)容詳情功能
zTree 是利用 JQuery 的核心代碼,實現(xiàn)一套能完成大部分常用功能的 Tree 插件。接下來通過本文給大家分享ztree實現(xiàn)左邊動態(tài)生成樹右邊為內(nèi)容詳情功能,需要的朋友參考下吧2017-11-11jQuery EasyUI Tab 選項卡問題小結(jié)
這篇文章主要介紹了jQuery EasyUI Tab 選項卡問題小結(jié),在項目開發(fā)階段很多朋友都遇到過此問題,其實解決辦法很簡單的,下面小編給大家分享下問題原因及解決辦法,需要的朋友可以參考下2016-08-08