【问题标题】:How to dynamically position and scale iframe on browser zoom如何在浏览器缩放时动态定位和缩放 iframe
【发布时间】:2014-01-09 14:41:42
【问题描述】:

问题

用户可以选择通过粘贴 iframe 代码或网址来创建 iframe。当窗口重新调整大小时,iframe 需要保持在页面的中间和底部。我已经让 iframe 大部分时间停留在页面的中间和底部。但是当窗口重新调整大小(用户放大(150% 等)或缩小(50% 等))时,iframe 本身在用户放大时变大,当用户缩小时变小。由于我无法定位 iframe 中的内容,因此我一直在尝试找出一种将比例应用于 iframe 的方法,以便它看起来保持相同的大小和相同的位置。当窗口重新调整大小时,我无法动态确定 iframe 的比例。

Javascript

加载事件

                jQuery('#iframe_wrapper iframe').attr('id','iframe');
                jQuery( "#iframe" ).load(function() {
                    jQuery('#adhesion_iframe').css('-webkit-transform', 'scale(1)');
                });

位置

ratio = $('#iframe').width() / ($('#iframe').height() + ($('#close_btn')close.length>0 ? 0 : 20));


 if (window.innerWidth > window.innerHeight) {
                        var width = window.innerWidth / 1.5 / 1.5;
                        $('#iframe_wrapper').css({
                            width: width + "px",
                            height: window.innerWidth / ratio / 1.5 + "px",
                            left: parseInt((window.pageXOffset + window.innerWidth / 2) - (width / 2)) + "px",
                            top: parseInt(window.innerHeight + window.pageYOffset - window.innerWidth / ratio / 1.5 / 1.5) + "px"
                        });

iframe

if($('#iframe').length >0 ){

                    jQuery.fn.center = function(){
                        this.css("position","absolute");
                        this.css("top","60%");
                        this.css("left","50%");
                        this.css("margin-top","-"+(this.height()/2)+"px");
                        this.css("margin-left","-"+(this.width()/2)+"px");
                        return this;}

                    $('#iframe').center();

                $('iframe').css({
                    '-webkit-transform': 'scale('+(document.body.offsetWidth * scale / initial_width )
                });

                }

当页面加载时,初始比例将设置为 1。我正在考虑做这样的事情来动态改变窗口重新大小时的比例 '-webkit-transform': 'scale('+( document.body.offsetWidth * scale / initial_width)。因此,如果缩放级别达到 150%,则比例将类似于 0.something,如果缩放级别达到 50%,则比例可能为 2。诸如此类.....当然我可以对比例进行硬编码,但这仅适用于某些 iframe 尺寸(iframe 宽度和高度由用户动态设置)。因此它可能适用于 300 x 50 的 iframe,但不是 600 x 100 等。

【问题讨论】:

  • 缩放和调整大小是两个不同的东西。请编辑您的问题并将其限制为一个或另一个,除非两者都适用。
  • 只是针对这种特殊情况进行缩放.. 调整大小适用于移动设备@isherwood

标签: javascript html css iframe


【解决方案1】:

我认为你做得过火了。只需使用 css 将 iframe 的大小设置为像素值:

iframe {
   width: 400px;
   height: 300px; 
}

【讨论】:

  • 我不能这样做@Max,因为 iframe 的大小几乎每次都会不同,因为用户自己设置尺寸。因此,在 iframe 插入 dom 之前,宽度和高度由用户设置。我正在使用 javascript 获取宽度和高度,并尝试对其进行一些计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多