jQuery實(shí)現(xiàn)視頻展示效果
本文實(shí)例為大家分享了jQuery實(shí)現(xiàn)視頻展示的具體代碼,供大家參考,具體內(nèi)容如下
效果:
用戶可以單擊左上角的左右箭頭,來控制視頻展示的左右滾動(dòng)。當(dāng)單擊向右箭頭時(shí),下面的展示視頻會(huì)向左滾動(dòng),同時(shí)新的視頻展示會(huì)以滾動(dòng)方式顯示出來。

思路:
- 當(dāng)視頻展示內(nèi)容處于最后一個(gè)版面時(shí),如果再向后,則應(yīng)該跳轉(zhuǎn)到第一個(gè)版面
- 當(dāng)視頻展示內(nèi)容處于第一個(gè)版面時(shí),如果再向前,就應(yīng)該跳轉(zhuǎn)到最后一個(gè)版面
- 左上角的箭頭旁邊的藍(lán)色圓點(diǎn)與動(dòng)畫一起切換,它代表當(dāng)前所處的版面
一、HTML結(jié)構(gòu)
<div class="v_show"> <div class="v_caption"> <h2 class="cartoon" title="卡通動(dòng)漫">卡通動(dòng)漫</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事件。因?yàn)椤跋蛴壹^”和“視頻展示區(qū)域”在同一個(gè)祖先元素下,所以可以通過“向右箭頭”來找到“視頻展示區(qū)域”。首先獲取向右箭頭“的祖先元素,然后再祖先元素下尋找”視頻展示區(qū)域“。
jQuery代碼如下
$("span.next").click(function(){ //綁定click事件
var $parent = $(this).parents("div.v_show");//根據(jù)當(dāng)前點(diǎn)擊元素獲取到父元素
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)的元素添加動(dòng)畫效果了,可以通過animate()方法控制”視頻展示區(qū)域“的left樣式屬性的值來達(dá)到動(dòng)畫效果。left的值就等于每個(gè)版面的寬度
可以用width()方法來獲取每個(gè)版面的寬度
var v_width = $v_content.width();
完成這一步之后,此時(shí)的代碼如下:
$(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)動(dòng)畫到最后一版面) {
$v_show.animate({left:'0px'},"slow");
} else {
$v_show.animate({left:'-='+v_width},"slow");
}
});
});
(2)現(xiàn)在的問題是如何知道動(dòng)畫已經(jīng)到達(dá)最后一版面?”視頻展示區(qū)域“每個(gè)版面擺放了4張視頻圖片,如果能夠獲取到視頻圖片的總數(shù),然后用總數(shù)除以4就可以得到總的版面數(shù)。在還沒有到達(dá)最后一個(gè)版面之前,需要在當(dāng)前版面數(shù)的基礎(chǔ)上加1,當(dāng)?shù)竭_(dá)最后一個(gè)版面時(shí)(即當(dāng)前的版面數(shù)等于總的版面數(shù)),則需要當(dāng)前的版面數(shù)設(shè)置為1,使之重新開始動(dòng)畫。
$(function() {
var page = 1; //初始化當(dāng)前版面數(shù),即第一個(gè)版面
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)色圓點(diǎn)跟隨動(dòng)畫一起切換,來標(biāo)識(shí)當(dāng)前所處的版面。只需要把樣式”current”添加到代表當(dāng)前版面的“藍(lán)色圓點(diǎn)”上就可以
如果想知道當(dāng)前的版面數(shù),方法很簡(jiǎn)單,變量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)運(yùn)行當(dāng)前代碼,并沒有發(fā)現(xiàn)任何問題,但是如果快速地單擊“向右”按鈕,就會(huì)出現(xiàn)問題:放開光標(biāo),圖片還在滾動(dòng)。
這里的問題是有動(dòng)畫隊(duì)列引起的。當(dāng)快速地單擊向右按鈕時(shí),單擊產(chǎn)生的動(dòng)畫會(huì)追加到動(dòng)畫隊(duì)列中,從而出現(xiàn)上述問題,解決如下:
if( !$v_show.is(":animated") ){ } //判斷“視頻內(nèi)容展示區(qū)域”是否正在處于動(dòng)畫
最終的jQquery代碼如下
$(function(){
var page = 1;
var i = 4; //每版放4個(gè)圖片
//向后 按鈕
$("span.next").click(function(){ //綁定click事件
var $parent = $(this).parents("div.v_show");//根據(jù)當(dāng)前點(diǎn)擊元素獲取到父元素
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ū)域”是否正在處于動(dòng)畫
if( page == page_count ){ //已經(jīng)到最后一個(gè)版面了,如果再向后,必須跳轉(zhuǎn)到第一個(gè)版面。
$v_show.animate({ left : '0px'}, "slow"); //通過改變left值,跳轉(zhuǎn)到第一個(gè)版面
page = 1;
}else{
$v_show.animate({ left : '-='+v_width }, "slow"); //通過改變left值,達(dá)到每次換一個(gè)版面
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)前點(diǎn)擊元素獲取到父元素
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ū)域”是否正在處于動(dòng)畫
if( page == 1 ){ //已經(jīng)到第一個(gè)版面了,如果再向前,必須跳轉(zhuǎn)到最后一個(gè)版面。
$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視頻展示
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
hovertree插件實(shí)現(xiàn)二級(jí)樹形菜單(簡(jiǎn)單實(shí)用)
hovertree是一個(gè)仿京東的樹形菜單jquery插件,暫時(shí)有銀色和綠色兩種。本文將對(duì)此進(jìn)行介紹。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2016-12-12
jQuery在ul中顯示某個(gè)li索引號(hào)的方法
這篇文章主要介紹了jQuery在ul中顯示某個(gè)li索引號(hào)的方法,涉及jQuery遍歷元素的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03
詳解jQuery中關(guān)于Ajax的幾個(gè)常用的函數(shù)
AJAX 是一種在無需重新加載整個(gè)網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù)。下面通過本文給大家分享jQuery中關(guān)于Ajax的幾個(gè)常用的函數(shù),需要的的朋友參考下2017-07-07
jQuery實(shí)現(xiàn)打開網(wǎng)頁自動(dòng)彈出遮罩層或點(diǎn)擊彈出遮罩層功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)打開網(wǎng)頁自動(dòng)彈出遮罩層或點(diǎn)擊彈出遮罩層功能,涉及jQuery事件響應(yīng)及窗口元素屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
jQuery Easyui使用(二)之可折疊面板動(dòng)態(tài)加載無效果的解決方法
這篇文章主要介紹了jQuery Easyui使用之可折疊面板動(dòng)態(tài)加載無效果的解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-08-08
JQuery 簡(jiǎn)便實(shí)現(xiàn)頁面元素?cái)?shù)據(jù)驗(yàn)證功能
JQuery 簡(jiǎn)便實(shí)現(xiàn)頁面元素?cái)?shù)據(jù)驗(yàn)證功能...2007-03-03

