【问题标题】:Scale HTML content using JQuery Mobile & Phonegap使用 JQuery Mobile 和 Phonegap 缩放 HTML 内容
【发布时间】:2012-02-22 21:12:43
【问题描述】:

我需要将 HTML 电子邮件中的内容动态加载到我的 HTML 中的某种类型的内容区域中,以便对其进行缩放以适应 iPhone/Android 的原生邮件应用程序。我花了两天时间谷歌搜索和测试无济于事。我正在加载 HTML 内容(通常设置为 width=600 或其他好东西),但不是缩放,而是如下所示:

iPhone Simulator Example

HTML 很简单:

<div data-role="page" id="messagedetailpage" data-add-back-btn="true">
    <div data-role="content" id="messagedetailcontainer"></div>
</div>

净化后的电子邮件 HTML 被加载到一个 div(messagedetailcontainer)中,此时我尝试了以下操作:

  1. 调整视口大小:$.mobile.metaViewportContent = "width=device-width, initial-scale=0.5, minimum-scale=0.5, maximum-scale=0,5";

  2. 在 div 上调用多个触发器,例如:$("#messagedetailcontainer").append(data.msg_body).trigger('updatelayout');

  3. 与 #2 相同,但具有“create”、“resize”、“load”和“change”。

  4. $(window).resize();

  5. 报废 div 并将其放入 iFrame(完全没有运气)

  6. 我研究了 iScroll、ScrollView、各种 autoscale.js 示例,但似乎没有什么适合我的需要。

我开始怀疑这是否可能。如果有人可以帮助我,我将永远感激不尽。我不介意被困几个小时,但一旦变成几天,它就开始变得令人抓狂。可悲的是,这对我来说是一个阻碍。

提前感谢您的帮助!

【问题讨论】:

    标签: jquery-mobile cordova resize viewport


    【解决方案1】:

    你可以得到视口的宽度和内容的宽度,然后根据两者的比例缩小内容:

    var venderPrefix = ($.browser.webkit)  ? 'Webkit' : 
                       ($.browser.mozilla) ? 'Moz' :
                       ($.browser.ms)      ? 'Ms' :
                       ($.browser.opera)   ? 'O' : '';
    var ratio = $(window).width() / $('#newContent').width();
    $('#newContent').css(venderPrefix + 'Transform', 'scale(' + ratio + ')');
    

    【讨论】:

    • 谢谢,贾斯珀!它正在改变内容的大小,但是: 1) 容器不适应内容的大小,并且由于内容可以以任何 HTML 结构到达,因此不可能找出最宽的元素。我试图弄清楚如何触发父级以适应内容宽度,以便获得正确的比率。 2) 如果我强制比例正确,则元素会被定位在页面下方很远的位置,看起来像被裁剪成两半,如下所示:Updated Example 我会继续使用它并让你知道。谢谢!
    • 尽我所能,我无法让它工作。我可以在加载 HTML 后获得容器的宽度,但是一旦我对其进行缩放,就会开始出现各种不稳定的行为 - 即它将缩放的元素定位在页面的右中部,但页面仍然扩展为如果内容在那里,它会是大小。我无法用 CSS 重新定位它。这不漂亮。我什至尝试将内容应用到一个不可见的元素,添加它,缩放它,然后让它可见,但结果总是一样的。 4 小时的撞击我的头 - 欢迎任何想法......
    • 通过使用它更接近,但仍然需要工作:codevar adjustHeight = (((containerHeight - (containerHeight * ratio)) / 2) + 10) * -1; var adjustWidth = ((containerWidth * ratio) - (windowWidth / 2) + 20) * -1; $("#messagedetailcontainer").css(venderPrefix + 'Transform', 'scale(' + ratio + ')') $("#messagedetailcontainer").css({position:'relative', top:adjustHeight + 'px ', 左:adjustWidth + 'px'});code
    • 我希望偶然发现一些内置的、优雅的方法来做到这一点,但似乎蛮力是唯一的解决方案。 Jasper,为了在这个解决方案上为我指明正确的方向,我会将此标记为答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多