是否可以获得呈现的模板计算的CSS值,而不将其附加到 DOM ?
我对Backbone.View $ el CSS值和一种预先计算它的属性(如宽度和高度)而不将它们附加到DOM的方法感兴趣。
如果不可能,
计算渲染模板的目标值的最佳方法是什么,以便它们可以与jQuery.animate一起使用?
例如淡入/淡出功能将成为View扩展方法的一部分
答案 0 :(得分:2)
我认为除了执行插入隐藏元素,进行测量然后删除它的艰巨任务之外,最好的选择是使用:
window.getComputedStyle
Documentation(https://developer.mozilla.org/en-US/docs/DOM/window.getComputedStyle)
然后在视图中设置方法如下:
fadeIn : function (event) {
var rootElement = this.$el.get(0);
var cssStyles = window.getComputedStyle(rootElement, null);
var rootElementHeight = cssStyles.getPropertyValue("height");
var rootElementWidth = cssStyles.getPropertyValue("width");
// perform fadeIn animation
},
fadeOut : function (event) {
var rootElement = this.$el.get(0);
var cssStyles = window.getComputedStyle(rootElement, null);
var rootElementHeight = cssStyles.getPropertyValue("height");
var rootElementWidth = cssStyles.getPropertyValue("width");
// perform fadeOut animation
},
它并不理想,返回的高度和宽度只是应用于该元素的最终CSS规则的表示。因此,当元素实际呈现在页面上时,实际高度和宽度完全有可能发生变化。
希望这有帮助!