【问题标题】:-webkit-transform: scale() not displaying properly in OSX Safari-webkit-transform: scale() 在 OSX Safari 中无法正确显示
【发布时间】:2011-06-24 03:41:50
【问题描述】:

我的任务是修复我们的 Safari 5.05 for OSX 产品中的一个错误,该错误导致另一个页面 (iframe) 的加载预览未正确缩放。奇怪的是它可以在 Windows 版 Safari 和 ipad 版 Safari 中使用。

iframe 在 OSX 上被切成两半,改变包装 div 的宽度确实没有任何好处。如果我将比例更改为 1,或从 css 中删除 -webkit-transform,则 iframe 将完全呈现(但未按比例缩小)。

它在除 OSX Safari 5.05 之外的任何浏览器中的外观:

它在 Windows 和 iPad 上的 Safari 以及几乎任何版本的 Chrome 中的外观:

还有 OSX Safari 版本:

<div id="newsletterPreview" class="scaleDownPreview" style="-webkit-transform: translate(-157px, -267px) scale(0.6); ">
    <iframe style="width: 1338.3333333333335px; height: 1333px; " frameborder="0" src="controls/NewsletterPreview.ashx?skipIframe=true">
        [bla bla bla]
    </iframe>
</div>

.scaleDownPreview {
    zoom: 0.6;
}

有什么建议吗?

【问题讨论】:

    标签: html macos safari css scaling


    【解决方案1】:

    我遇到了类似的问题,并通过将缩放级别设置为 iframe 内容而不是 iframe 元素来解决它。

    我在我的 Rails 应用程序中修复了这样的问题。

    <iframe src="/?zoom=0.5" />
    

    然后在那个页面上就这样设置它的样式。

    <% if params[:zoom] %>
    
     <style type="text/css" media="screen">
      html {
        -moz-transform: scale(<%= params[:zoom] %>);
        -moz-transform-origin: left top;
        -webkit-transform: scale(<%= params[:zoom] %>);
        -webkit-transform-origin: left top;
        transform: scale(<%= params[:zoom] %>);
        transform-origin: left top;
        zoom: <%= params[:zoom] %>;
      }
    </style>
    
    <% end %>
    

    使用 javascript 可以做同样的事情,只需进入 iframe 样式设置 html 元素。

    【讨论】:

    • 太棒了,等我周一上班去看看。来自瑞典的仲夏夜快乐。
    • 效果很好,谢谢!您可以使用 jQuery 设置 html 属性 $('iframe').contents().find('html').css( [...] ) 请注意,使用文档时不一定要加载 iframe准备好。解决方法是使用 $().load() 加载 iframe 并使用回调。但我决定将所有这些都设置在后面的代码中(使用 asp.net)以避免 fouc。
    猜你喜欢
    • 2012-12-02
    • 2013-05-11
    • 2018-06-13
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多