gpt4 book ai didi

javascript - PhotoSwipe 视频

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:05 26 4
gpt4 key购买 nike

我想将视频添加到我的 PhotoSwipe 图库。

我在这里阅读了文档: http://photoswipe.com/documentation/custom-html-in-slides.html

不幸的是,我不明白这是什么意思:“如果你真的需要在 PhotoSwipe 中有视频,你可以将它添加为模态当用户点击当前幻灯片时出现,您可以动态创建DOM 中的模态并将其附加在 .pswp__scroll-wrap 元素之后。”

有没有人成功地使用 PhotoSwipe 制作可靠的视频?

编辑:我试过了(最后一张幻灯片是视频):http://pixelkrams.de/2015/artspin在桌面上工作但在移动设备上中断(视频无法启动且大小错误)。相关编码:http://pixelkrams.de/js/main.js

PhotoSwipe 初始化的片段:

    // Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, dataLarge, options);
gallery.init();
gallery.listen('afterChange', function() {
detectVideo(gallery);
});

gallery.listen('beforeChange', function() {
removeVideo();
});
gallery.listen('resize', function() {
if ($('.videoHolder').length > 0) updateVideoPosition(gallery);
});
gallery.listen('close', function() {
removeVideo();
});

detectVideo(gallery);

以及视频的相关函数:

function removeVideo() {
if ($('.videoHolder').length > 0) {
if ($('#video').length > 0) {
$('video')[0].pause();
$('video')[0].src = "";
$('.videoHolder').remove();
$('.pswp__img').css('visibility','visible');
} else {
$('.videoHolder').remove();
}
}
}

function detectVideo(gallery) {
var src = gallery.currItem.src;
if (src.indexOf('video')>= 0) {
addVideo(gallery.currItem);
updateVideoPosition(gallery);
}
}
function addVideo(item, vp) {
var videofile = item.src.split(".");
var v = $('<div />', {
class:'videoHolder',
css : ({'position': 'absolute','width':item.w, 'height':item.h})

});
v.one('click touchstart', (function() {
var playerCode = '<video id="video" width="'+item.w+'" height="'+item.h+'" autoplay controls>' +
'<source src="'+videofile[0]+'.mp4" type="video/mp4"></source>' +
'<source src="'+videofile[0]+'.webm" type="video/webm"></source>' +
'</video>';
$(this).html(playerCode);
$('.pswp__img').css('visibility','hidden');

}));
v.appendTo('.pswp__scroll-wrap');
}

function updateVideoPosition(o) {
var item = o.currItem;
var vp = o.viewportSize;
var top = (vp.y - item.h)/2;
var left = (vp.x - item.w)/2;
$('.videoHolder').css({position:'absolute',top:top, left:left});

}

最佳答案

对于移动尺寸问题,我使用了一个额外的函数来计算基于 gallery.viewportSize 和视频纵横比的视频尺寸。

function setVideoSize(item, vp) {
var w = item.w,
h = item.h,
vw = vp.x,
r,
vh;
if (vw < w) {
r = w/h;
vh = vw/r;
w = vw;
h = vh;
}
return {
w: w,
h: h
};
}

然后将detectVideo()中的addVideo调用改成

addVideo(gallery.currItem, gallery.viewportSize);

在已有的addVideo(item, vp)函数中使用

var vsize = setVideoSize(item, vp);
var v = $('<div />', {
class:'.videoHolder',
css : ({'position': 'absolute','width':vsize.w, 'height':vsize.h})

还有updateVideoPosition(o)

var item = o.currItem;
var vp = o.viewportSize;
var vsize = setVideoSize(item, vp);
var top = (vp.y - vsize.h)/2;
var left = (vp.x - vsize.w)/2;
$('.videoHolder').css({position:'absolute',top:top, left:left});

关于javascript - PhotoSwipe 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com