Javascript 当我将鼠标悬停在缩略图上时,如何为不同的视频进行视频交换?
我正在为一个项目制作一个视频和图像库。我希望能够有一个更大的img/视频,然后是一系列缩略图,当你悬停在它们上面时,这些缩略图将切换到更大的img/视频。试图复制这样的东西 我已经能够使用图像进行交换,但还无法找到如何使用视频进行交换。有什么办法可以帮你吗?我对jquery有点陌生,所以我还没有完全理解 这就是我到目前为止所做的: JavascriptJavascript 当我将鼠标悬停在缩略图上时,如何为不同的视频进行视频交换?,javascript,jquery,html,video,Javascript,Jquery,Html,Video,我正在为一个项目制作一个视频和图像库。我希望能够有一个更大的img/视频,然后是一系列缩略图,当你悬停在它们上面时,这些缩略图将切换到更大的img/视频。试图复制这样的东西 我已经能够使用图像进行交换,但还无法找到如何使用视频进行交换。有什么办法可以帮你吗?我对jquery有点陌生,所以我还没有完全理解 这就是我到目前为止所做的: Javascript $('#imgDetail li img').hover(function(){ $('#bigImg').attr('src'
$('#imgDetail li img').hover(function(){
$('#bigImg').attr('src',$(this).attr('src'));
});
HTML
提前谢谢 更改视频标记的源(
src
)后,需要再次加载视频对象。大概是这样的:
$("#divVideo video")[0].load();
同样为了更改源,您应该更改视频标记内的源标记的src
$('#divVideo video source').attr('src', videoFile);
DOM:
<div id="divVideo">
<video controls>
<source src="test1.mp4" type="video/mp4" />
</video>
我会更新您的HTML,将图像包装在视频URL的链接中。类似于
<div id="imgDetail">
<img src="assets/img/ebuzzing1.png" alt="" id="bigImg" class="img-responsive"/>
<ul>
<li>
<a href="/url/to/video1.mp4><img src="assets/img/ebuzzing1.png" class="thumb" /></a>
</li>
<li>
<a href="/url/to/video2.mp4><img src="assets/img/ebuzzing2.png" class="thumb" /></a>
</li>
<li>
<a href="/url/to/video3.mp4><img src="assets/img/ebuzzing3.png" class="thumb" /></a>
</li>
<!--- Etc--->
</ul>
</div>
我并没有测试过这个,但从一个
更新
因此,我们希望用视频替换图像,而不是更改视频源。这是非常不同的。您需要一个图像元素和一个视频元素。此外,您还需要确定哪个项目是视频thumnail。我用了一个视频类来做这个。在下面的示例中,我将最后一个列表项设置为视频缩略图
HTML
现在使用以下内容更新javascript:
$('#imgDetail li img').not(".video").hover(function(){
$('#imgDetail video').hide(); //Hide the video if it's showing;
$('#bigImg').show(); //Show the image if it's hidden
$('#bigImg').attr('src',$(this).attr('src')); //Update the image source
});
$('#imgDetail li img.video').hover(function(){
$('#bigImg').hide();//Hide the image if its showing
$('#imgDetail video').show(); //Show The video
//$('#imgDetail video').get(0).play(); //Optional, Play The video
});
在这里看到它的实际效果:你有个人视频播放吗?如果是这样的话,你是如何把它放在你的页面上的?看看如何使用类似FlowPlayer()的附加库。我已经使用了flowplyer,它有一个相当全面的API可以使用。我已经能够用我现在的格式播放单个视频,但是当我悬停在其余的图像上时,没有任何变化。当我只做图像时,一切都很好。有什么想法吗?我也在调查Flowplayer。谢谢你的建议。你能在播放视频的地方添加代码吗?当然。这就是我编辑它的目的。我将第一行替换为:,然后img列表与上面相同。我还删除了div id=“imgDetail”,并将其更改为div id=divvideo。在$('bigImg').attr('src',$(this.attr('src'))之后,我应该在哪里包括它;?为了让我更了解,为什么每次都需要重新加载视频对象?首先,这不是视频对象的正确dom。请参阅我共享的dom。您需要更正src更改并加载到鼠标上。是的,我更改了dom。我不确定js如何工作。这对图像也有效吗?是的但是你不必对图像使用load。它们会加载到src change tooI上。我测试了它,它会使图像/视频“闪烁”“变成白色,但实际上并没有改变它。你知道我能做些什么使项成为bigImg吗?这是我正在处理的页面。当我在视频中使用html时,它会将视频添加到顶部,而不是替换较大的img。有什么想法吗?这段视频是用来代替图像的吗?视频和图像不能直接交换。它们是完全不同的元素。如果是这样的话,那就是隐藏一个,展示另一个。从你的页面很难知道你想要什么。我希望视频是列表中的一个缩略图,你可以悬停在上面。它应该是视频的缩略图,这样就不会有不同的元素。
var myVideo = $("#divVideo video");
$('#imgDetail li a').hover(function(){
var vidURL = $(this).attr('href');
myVideo.src = vidURL;
myVideo.load();
myVideo.play();
}).click(function(){
//Disable nav if link clicked
return false;
});
<div id="imgDetail">
<video width="320" height="240" controls>
<source src="http://theinfluence.co/assets/img/Traackr.mp4" type="video/mp4" />
</video>
<img src="http://theinfluence.co/assets/img/traackr2.png" id="bigImg" />
<ul>
<li>
<img src="http://theinfluence.co/assets/img/ebuzzing1.png" class="thumb" />
</li>
<li>
<img src="http://theinfluence.co/assets/img/ebuzzing2.png" class="thumb" />
</li>
<li>
<img src="http://theinfluence.co/assets/img/ebuzzing3.png" class="thumb" />
</li>
<!-- Note the addition of the video class on the image -->
<li ><img src="http://theinfluence.co/assets/img/ebuzzing4.png" class="thumb video" /></li>
<!--- Etc--->
</ul>
</div>
#imgDetail video
{
display:none;
}
$('#imgDetail li img').not(".video").hover(function(){
$('#imgDetail video').hide(); //Hide the video if it's showing;
$('#bigImg').show(); //Show the image if it's hidden
$('#bigImg').attr('src',$(this).attr('src')); //Update the image source
});
$('#imgDetail li img.video').hover(function(){
$('#bigImg').hide();//Hide the image if its showing
$('#imgDetail video').show(); //Show The video
//$('#imgDetail video').get(0).play(); //Optional, Play The video
});