Javascript 如何在jquery中将if条件添加到$(窗口)。调整事件大小?
我试图使所有嵌入式视频响应,因为我找不到一个好的解决方案,使视频响应使用引导3。使用下面的代码,我可以使任何视频响应。但我想在下面的代码中添加If条件,以便在调整窗口大小时,代码仍能完成任务 我的jquery代码:Javascript 如何在jquery中将if条件添加到$(窗口)。调整事件大小?,javascript,jquery,html,responsive-design,Javascript,Jquery,Html,Responsive Design,我试图使所有嵌入式视频响应,因为我找不到一个好的解决方案,使视频响应使用引导3。使用下面的代码,我可以使任何视频响应。但我想在下面的代码中添加If条件,以便在调整窗口大小时,代码仍能完成任务 我的jquery代码: $(文档).ready(函数(){ 函数show(){ var containerWidth=$(“.col video”).width(); $('iframe')。每个(函数(){ var iframeWidth=$(this.attr(“宽度”); var iframehig
$(文档).ready(函数(){
函数show(){
var containerWidth=$(“.col video”).width();
$('iframe')。每个(函数(){
var iframeWidth=$(this.attr(“宽度”);
var iframehight=$(this.attr(“height”);
var标志=容器宽度/iframeWidth;
var newHeight=iframehight*标志;
$(此).attr(“宽度”,“100%”);
$(this.attr(“高度”,newHeight);
});
$('video')。每个(函数(){
var videoWidth=$(this.attr(“width”);
var videoHeight=$(this.attr(“height”);
var标志=集装箱宽度/视频宽度;
var newHeight=videoHeight*标志;
$(此).attr(“宽度”,“100%”);
$(this.attr(“高度”,newHeight);
});
}
show();
});代码>
引导101模板
你好,世界
您可以在“窗口大小调整”事件中运行代码,因为该事件会持续触发,因此您可以使用去盎司功能,例如:
var myEfficientFn = debounce(function() {
show();
}, 250);
$(window).on('resize', myEfficientFn);
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
演示:使用$(窗口)。在$(文档)中调整大小()
最终结果应为:
$(document).ready(function () {
$(window).resize(function () {
(function show() {
var containerWidth = $(".col-video").width();
$('iframe').each(function(){
var iframeWidth = $(this).attr("width");
var iframeHeight = $(this).attr("height");
var flag = containerWidth / iframeWidth;
var newHeight = iframeHeight * flag;
$(this).attr("width", "100%");
$(this).attr("height", newHeight);
});
$('video').each(function(){
var videoWidth = $(this).attr("width");
var videoHeight = $(this).attr("height");
var flag = containerWidth / videoWidth;
var newHeight = videoHeight * flag;
$(this).attr("width", "100%");
$(this).attr("height", newHeight);
});
})();
)};
});
一种更有效的方法是在每个视频周围添加一个包装,并添加高度:0
和填充底部:56.25%
根据纵横比创建响应div,然后将视频绝对定位在包装器中。填充底部可以是CSS中的任何百分比,因为JS将在下一步进行调整
然后在页面加载时,您可以计算每个视频基于百分比的纵横比,并将其应用于父包装的底部填充
$(文档).ready(函数(){
$('iframe,video')。每个(函数(){
var iframeWidth=$(this.attr(“宽度”);
var iframehight=$(this.attr(“height”);
//计算纵横比并转换为百分比
var输出=((数学圆整(iframehight)/数学圆整(iframeWidth))*100.toFixed(2);
//将基于视频百分比的纵横比应用于父包装的填充底部
$(this).parent().css(“填充底部”,输出+“%”);
});
});代码>
/*16:9比例的响应div*/
.视频包装器{
位置:相对位置;
垫底:56.25%;
身高:0;
宽度:100%;
保证金:0自动;
}
.videoWrapper视频,.videoWrapper iframe{
位置:绝对位置;
排名:0;
左:0;
宽度:100%;
身高:100%;
}
你好,世界