【问题标题】:Transform scale() inconsistent in Chrome and Safari when refreshing page刷新页面时在 Chrome 和 Safari 中转换 scale() 不一致
【发布时间】:2013-06-21 03:40:22
【问题描述】:

我编写了下面的代码来缩放所有内容以及浏览器大小,以便所有内容始终可见(在放大或缩小版本中)。

var docHeight = $(document).height();
var winHeight;
var zoomRatio;

function z(number) {
    var adjusted = number * zoomRatio;
    return adjusted;
}

fitWindow();
function fitWindow() {
    setTimeout(function(){
        winHeight = $(window).height();
        zoomRatio =  winHeight / docHeight;
        if (docHeight >= winHeight) {
            $('#view').css({
                transform: 'scale('+zoomRatio+')',
                'transform-origin': '0 0',
                '-moz-transform': 'scale('+zoomRatio+')',
                '-moz-transform-origin': '0 0',
                '-o-transform': 'scale('+zoomRatio+')',
                '-o-transform-origin': '0 0',
                '-webkit-transform': 'scale('+zoomRatio+')',
                '-webkit-transform-origin': '0 0',
                '-ms-transform': 'scale('+zoomRatio+')',
                '-ms-transform-origin': '0 0'
            });
        }
    }, 0);

    getAnchors();

    console.log(docHeight + ' ' + winHeight);
}

$(window).resize(fitWindow);

该代码在 Firefox 中运行良好,但在 Chrome 和 Safari 中存在一些不一致(我认为一般是基于 Webkit 的浏览器,因为它们的行为似乎相似)。

例如,如果我在浏览器窗口最大化的情况下加载我的页面,它会在调整大小时很好地缩放。但是,如果我在调整浏览器大小时刷新页面,则会切断一大块(即它以原始大小加载而未应用缩放)。但是,如果我在调整浏览器大小时重新加载页面(通过按地址栏中的回车键),所有内容都会正确显示并相应缩放。但是,如果我点击刷新按钮,则会再次发生中断。

我已经尝试添加setTimeout(具有不同的持续时间值),但这不起作用。有谁知道我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: javascript jquery css css-transforms webkit-transform


    【解决方案1】:

    没有回复表明没有人知道可能出了什么问题。无论如何,经过无数次的搜索,我找到了解决方案。

    我必须简单地在 CSS 中为 #view 设置一个高度,以便每次都能正常工作。

    【讨论】:

    • 您,先生,是个 g-d 天才。你到底是怎么想出来的?我马上就知道你是对的,因为我试图模拟 shopify 下拉 CSS 过渡,并且他们在下拉菜单中设置了这些随机高度。这就是为什么。为你干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多