【问题标题】:Issue with iFrame Element not re-sizing within containeriFrame 元素无法在容器内重新调整大小的问题
【发布时间】:2015-12-18 12:21:38
【问题描述】:

我正在从事一个小型 VA 项目,并试图从另一个网站提取统计数据。我能够找出如何做到这一点的唯一方法是使用带有剪辑功能的 iFrame。

网址是:NWGlobalVA.com

现在我遇到的问题是,如果您转到主页并重新调整浏览器的大小,无论如何它都会推到地图元素后面。我已经尝试了我的知识和研究中的所有内容,以使其与容器一起重新调整大小。

下面是我使用 iFrame 和 CSS 进行剪辑的代码。任何帮助将不胜感激,然后您就会明白。我已经尝试了几天了。理想情况下,我宁愿每 15 分钟获取一次信息并将其传递到我的数据库。但是在网站上没有定义任何表格,我知道该怎么做。

<style>   
.iframeb {   
    position: absolute;   
    left:-384px;   
    right:0px;   
    top: -145px;   
    clip: rect(190px, 625px, 350px, 400px);   
}</style> 


<iframe width="890" height="1900" src="http://fscloud-infotool.de/index.php?page=vasystem&subpage=vadetails&id=10277" class="iframeb" scrolling="no" frameborder="0"></iframe>

【问题讨论】:

    标签: javascript php html css iframe


    【解决方案1】:

    我处理 iframe 大小的方式是使用 javascript (jquery):

    我通过获取宽度/高度来计算原始 iframe 纵横比。所以在你的情况下:890/1900。

    <script>
    function size_iFrame()
    {
        // If the width and height of the iframe are set 
        // as attributes (<iframe width='890' height='1900'>), 
        // you can have the js calculate it for you.
        // aspect= $('iframe').attr('width') / $('iframe').attr('height');
        aspect= 0.47; 
        $('iframe').css('width', '100%');
        $('iframe').css('height', $('iframe').width() / aspect);
    }
    $(document).ready(function()
    {
        size_iFrame();
        $(window).resize(function()
        {
            size_iFrame();
        });
    }
    </script>
    

    这将使 iframe 适合其容器的宽度,并为其提供与最初相同的纵横比。

    编辑:要回答您的问题,我会在每次屏幕尺寸更改时从准备回调和设置和窗口调整大小回调中调用它。我编辑了上面的代码以显示这一点。

    Edit2:正如@mugé 指出的那样,您还需要删除 iframe css 样式才能使我的方法正常工作。

    【讨论】:

    • 太棒了!如果我有更多的声誉,我会赞成这个答案。我会试一试,让你知道它是怎么回事。谢谢你的例子!
    • 嘿@Mark,我很好奇您将如何在 iFrame 上执行上述操作。 (我无法让代码 Markdown 工作......)你会把它写成像&lt;script language="javaScript"&gt; &lt;!-- function autoResize(){ aspect= 0.47; $('iframe').css('width', '100%'); $('iframe').css('height', $('iframe').width() / aspect); } //--&gt; &lt;/script&gt; 这样的函数,然后在 iFrame Via 上执行。 onLoad="autoResize(); 对不起,如果我的问题真的很无聊。我还在学习,但非常感兴趣。
    • @WhiskeySimulation,我编辑了我的答案来解决你的问题。
    • 太棒了@mark,到目前为止,你帮了我很大的忙。另一个问题,我发现没有 position: absolute;我不能再使用clip: rect(190px, 625px, 350px, 400px); 来仅显示我想要的页面部分。整个页面显示在容器中,实际上重新调整了整个容器的大小,使其位于地图显示下方。
    • 我明白了。好吧,使用适用于您的特定情况的任何 CSS。我的回答对你有用吗?
    【解决方案2】:

    在响应式设计中,我为 iframe 分配了一个在 CSS 内调整大小的容器。例如,

    CSS
    .iframe_container {
    显示:内联;
    浮动:左;
    宽度:89%; //任何你想要的宽度 }

    您需要消除 .iframeb 绝对、右、左定位,因为容器会处理这一切,除非您在地图顶部谈论“列表”参数,否则我会尝试使用 @媒体根据 .iframeb 类的屏幕尺寸排列干净的列表。

    【讨论】:

    • 这仍然可以使用clip: rect(190px, 625px, 350px, 400px); 来完成吗?我正在尝试显示页面中的一组特定数据。
    • 我很肯定你可以通过调整每个剪辑的位置来使用@media 中的“剪辑”。
    • 我看到 'clip:rect' 已贬值,不能用于相对定位。我在剪辑中发现了以下内容,但更多与蒙版相关,但是,围绕这篇文章,您可能会发现一些解决您的任务的线索 [链接]css-tricks.com/clipping-masking-css 除此之外,我会尝试通过应用表属性来解决问题,也许是组合但(肯定) @媒体属性。由于我只使用响应式设计,@media 是我在大多数解决方案中的可取之处。而且,您仍然可以在相对的容器内提供绝对定位。
    • 是的,我的问题太多了。我最终只是通过 PHP 源代码抓取将值存储到数据库中。只要网站的来源没有太大变化,从长远来看,它可能会更干净。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2013-08-10
    • 2010-09-14
    相关资源
    最近更新 更多