【问题标题】:How do you measure the height of a HTML element scaled with CSS3 transform?如何测量使用 CSS3 转换缩放的 HTML 元素的高度?
【发布时间】:2010-12-30 21:30:57
【问题描述】:

首先,您需要了解上下文。

浏览器:Chrome

HTML:

<ul>
    <li>
        <div>Hi!</div>
    </li>
</ul>

CSS:

li {
    -webkit-transform: scale(0.21);
    -webkit-transform-origin-x: 0%;
    -webkit-transform-origin-y: 0%;
}

div {
    height: 480px;
    width: 640px;
}

li元素的有效高度为101px。如果您尝试通过以下任何方法获取 Javascript 中的高度(假设已加载 jQuery 1.4.2):

$("li")[0].clientHeight;
$("li")[0].scrollHeight;
$("li").height();
$("li").innerHeight();

你得到相同的答案:480px。

如果您使用 Chrome 的开发者工具将鼠标悬停在元素上,它会显示尺寸:136x101。 (实际上,第一个数字,即宽度,会随着窗口的宽度而变化,但这与我的问题无关。)我不知道 Chrome 是如何做到这一点的,但我确实想这样做。

有谁知道在缩放后获取元素高度的方法,还是必须以某种方式计算它?

【问题讨论】:

    标签: javascript google-chrome css


    【解决方案1】:

    这实际上是一个非常有趣的问题,这是我能想到的:

    node = document.getElementById("yourid");
    var curTransform = new WebKitCSSMatrix(window.getComputedStyle(node).webkitTransform);
    var realHeight = $("li").height() * curTransfrom.d;
    

    可能有更直接的方法来获取真实高度。

    【讨论】:

      【解决方案2】:

      我认为没有跨浏览器(甚至是特定于浏览器)的方式来做到这一点。我要做的是

      var realHeight = $("li").height() * 0.21;
      

      Chrome 可能直接从其渲染引擎获取值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-16
        • 2012-05-24
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        相关资源
        最近更新 更多