IF Internet Explorer 使用不同的 jQuery 函数
我正在构建一个功能与 www.chanel.com 类似的主页。当您第一次加载页面时,我会通过 HTML5 嵌入一个循环播放的视频。为了兼容性和易用性,我想要一个 jQuery 函数来控制其在除 IE 之外的所有浏览器中的可见性(当链接悬停时隐藏),以及仅适用于 IE 的替代 jQuery 函数,隐藏视频并使图像可见在它的地方。
感谢您抽出时间!
HTML
<div id="content">
<video id="vid_home" width="780px" height="520px" autoplay="autoplay" loop="loop">
<source src="Video/fernando.m4v" type="video/mp4" />
<source src="Video/fernando.ogg" type="video/ogg" />
</video>
<img id="img_home" src="Images/home.jpg" alt="Fernando Garibay />
</div>
Chrome/Safari/Firefox/Opera 的
// Navigation hover image preview
$('#img_home').css('display', 'none');
$('.nav').hover(function(){
$('#vid_home').fadeOut(600, function(){
$('#img_home').fadeIn(800);
});
});
$('#item1').hover(function(){
$('#img_home').attr('src', 'Images/music.jpg');
});
$('#item2').hover(function(){
$('#img_home').attr('src', 'Images/photos.jpg');
});
$('#item3').hover(function(){
$('#img_home').attr('src', 'Images/biography.jpg');
});
$('#item4').hover(function(){
$('#img_home').attr('src', 'Images/discography.jpg');
});
$('#item5').hover(function(){
$('#img_home').attr('src', 'Images/contact.jpg');
});
$('#item6').hover(function(){
$('#img_home').attr('src', 'Images/blog.png');
});
// Navigation hover image leave
$('#trigger').mouseleave(function(){
$('#img_home').fadeOut(600, function(){
$('#vid_home').fadeIn(800)
});
});
Javascript: IE 的 Javascript(任何版本):
// Navigation hover image preview
$('#img_vid').css('display', 'none');
$('#item1').hover(function(){
$('#img_home').attr('src', 'Images/music.jpg');
});
$('#item2').hover(function(){
$('#img_home').attr('src', 'Images/photos.jpg');
});
$('#item3').hover(function(){
$('#img_home').attr('src', 'Images/biography.jpg');
});
$('#item4').hover(function(){
$('#img_home').attr('src', 'Images/discography.jpg');
});
$('#item5').hover(function(){
$('#img_home').attr('src', 'Images/contact.jpg');
});
$('#item6').hover(function(){
$('#img_home').attr('src', 'Images/blog.png');
});
// Navigation hover image leave without selection
$('#trigger').mouseleave(function(){
var img = $('#img_home');
if (img.attr('src') != 'Images/home.jpg'){
img.fadeOut(600, function(){
img.attr('src','Images/home.jpg');
img.fadeIn(800);
});
}
});
I'm building a home page that is similar in function to www.chanel.com. When you first load the page, I've got a video embedded via HTML5 playing on loop. In the interest of compatibility and ease, I'd like a jQuery function controlling its visibility (hides when links are hovered over) in all browsers except for IE, and an alternative jQuery function for IE only, hiding the video and making an image visible in it's place.
Thanks for your time!
HTML
<div id="content">
<video id="vid_home" width="780px" height="520px" autoplay="autoplay" loop="loop">
<source src="Video/fernando.m4v" type="video/mp4" />
<source src="Video/fernando.ogg" type="video/ogg" />
</video>
<img id="img_home" src="Images/home.jpg" alt="Fernando Garibay />
</div>
Javascript for Chrome/Safari/Firefox/Opera:
// Navigation hover image preview
$('#img_home').css('display', 'none');
$('.nav').hover(function(){
$('#vid_home').fadeOut(600, function(){
$('#img_home').fadeIn(800);
});
});
$('#item1').hover(function(){
$('#img_home').attr('src', 'Images/music.jpg');
});
$('#item2').hover(function(){
$('#img_home').attr('src', 'Images/photos.jpg');
});
$('#item3').hover(function(){
$('#img_home').attr('src', 'Images/biography.jpg');
});
$('#item4').hover(function(){
$('#img_home').attr('src', 'Images/discography.jpg');
});
$('#item5').hover(function(){
$('#img_home').attr('src', 'Images/contact.jpg');
});
$('#item6').hover(function(){
$('#img_home').attr('src', 'Images/blog.png');
});
// Navigation hover image leave
$('#trigger').mouseleave(function(){
$('#img_home').fadeOut(600, function(){
$('#vid_home').fadeIn(800)
});
});
Javascript for IE (any version):
// Navigation hover image preview
$('#img_vid').css('display', 'none');
$('#item1').hover(function(){
$('#img_home').attr('src', 'Images/music.jpg');
});
$('#item2').hover(function(){
$('#img_home').attr('src', 'Images/photos.jpg');
});
$('#item3').hover(function(){
$('#img_home').attr('src', 'Images/biography.jpg');
});
$('#item4').hover(function(){
$('#img_home').attr('src', 'Images/discography.jpg');
});
$('#item5').hover(function(){
$('#img_home').attr('src', 'Images/contact.jpg');
});
$('#item6').hover(function(){
$('#img_home').attr('src', 'Images/blog.png');
});
// Navigation hover image leave without selection
$('#trigger').mouseleave(function(){
var img = $('#img_home');
if (img.attr('src') != 'Images/home.jpg'){
img.fadeOut(600, function(){
img.attr('src','Images/home.jpg');
img.fadeIn(800);
});
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该视频是一个转移注意力的视频,只不过您可能应该在看不到该视频时暂停并恢复播放以节省资源。我制作了一个简单的示例,表明您只需要一些 CSS 即可将它们分层。 http://jsfiddle.net/HJg6Q/1/
您更改图像源的代码是合理的,不过,如果您没有预先缓冲图像,您可能会遇到这样的情况:开始淡入最后加载的图像,然后弹出新图像。非常不专业。我个人建议为您要显示的每个图像使用唯一的
标签,并根据需要交叉淡入淡出它们。
The video is a red herring, except that you probably should pause and resume playback to conserve resources when it can't be seen. I've made a simple sample showing that all you need is some CSS to get them to be layered. http://jsfiddle.net/HJg6Q/1/
Your code to change the image source is reasonable, though if you have not pre-buffered the images you may get a case where you begin to fade-in the last-loaded image and then it pops to the new image. Very unprofessional. I'd personally suggest a unique
<img>
tag for each image you want to display, and cross-fade them as appropriate.