gpt4 book ai didi

javascript - getComputedStyle 和转换

转载 作者:数据小太阳 更新时间:2023-10-29 05:38:56 24 4
gpt4 key购买 nike

在考虑向 Chromium 提交错误时寻找解决方法 -

如果元素有过渡,getComputedStyle 不会返回您期望它返回的内容,直到过渡结束。

长和短 - 如果我有一个高度为 24px 的元素,并添加一个类使其高度为 80px(来回过渡),并且这两个高度都在样式表中定义 - 如果我设置它class 并检查 getComputedStyle,在转换结束之前它仍然给我非类高度。

我在这里谈论的例子:

<html>
<head>
<style>
#foo {
display: inline-block;
background-color: red;
height: 24px;
padding: 4px 0;
width: 200px;
-webkit-transition-property: height;
-webkit-transition-timing-function: linear;
-webkit-transition-duration: 300ms;
}
#foo.changed {
height: 80px;
}
</style>
</head>
<body>
<div id="foo"></div>
<p>before: <span id="before"></span></p>
<p>after: <span id="after"></span></p>
<script type="text/javascript">
var foo
function checkFoo(e) {
foo.classList.toggle('changed');
document.getElementById('before').innerText = window.getComputedStyle(foo, null).getPropertyValue("height");
};

window.addEventListener('load', function() {
foo = document.getElementById('foo');

foo.addEventListener('webkitTransitionEnd', function(e){
document.getElementById('after').innerText = window.getComputedStyle(foo, null).getPropertyValue("height");
});

foo.addEventListener('click', checkFoo, false);
});
</script>
</body>
</html>

此处示例的 fiddle :http://jsfiddle.net/bobbudd/REeBN/

(注意:这个 fiddle 只能在 webkit 中工作,不管你信不信,它是我们的目标浏览器——但我也在 Firefox 中测试并遇到了同样的问题)

问题是,在多个情况下,我需要在 transitionEnd 发生之前知道最终样式(有些人可能会说“计算”样式)。

或者我想这是一个更大问题的一部分 - 有很多不同的方法可以及时了解元素在特定时刻的高度,getComputedStyle 是否应该得到样式表的内容(或样式属性)表示该属性应该是什么?

在你问我是否可以将最终数字放入 JS 之前,答案是(很遗憾)不能。

谁能想出一种在转换结束前获得最终值的方法?

最佳答案

这根本不是错误。 getComputedStyle 旨在在您调用它时返回客户端呈现的属性值。如果您在转换期间调用它,您将在转换期间获得值,如下所示:http://jsfiddle.net/REeBN/1/

获取规则设置的最终值的方法是检查规则本身,可能是通过使用 cssRules

这是一个使用 window.getMatchedCSSRules 的实现:

cssRules = window.getMatchedCSSRules(this);
var finalCssRule = "";
for(var i = 0; i < cssRules.length; i++){
if(cssRules[i].selectorText == "#foo.changed"){
finalCssRule = cssRules[i];
}
}
document.getElementById('final').innerText = finalCssRule.cssText;

这是一个演示:http://jsfiddle.net/REeBN/2/

关于javascript - getComputedStyle 和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com