gpt4 book ai didi

dart - 是否有等于dart的externalWidth高度(边框,边距,内含填充元素的大小)

转载 作者:行者123 更新时间:2023-12-03 03:27:15 26 4
gpt4 key购买 nike

我想找到一个元素的边框,边距和填充大小。 jQuery的externalWidth,outerHeight方法等效。

目前,我正在使用如下所示的愚蠢代码。
真正的解决方案是什么?

编辑:

我最初发布的代码(将宽度和高度取整)或marginEdge都无法解决问题。浏览器使用double的精度绘制元素,有时21px和20.6px的区别很重要。

编辑2

getBoundingClientRect()似乎返回border和padding的包含大小,将那些注释掉的行包括在内并添加到toDouble()中,以避免int不是double错误的子类。
修改后的代码:

Rectangle outerRect(HtmlElement e,[bool include_margin = false]) {
HtmlElement c = e.clone(true);
c.style
..display = 'absolate'
..top = '-1000000px';
document.body.append(c);
var r = c.getBoundingClientRect();
//rounding down causes troubles downstream
//r.width can return int then,
// int cannot be assigned to double
double width = r.width.toDouble();
double height = r.height.toDouble();
int parse(String s){
if(s == '') return 0;
if(s.contains('px')){
var m = new RegExp('[0-9]+').firstMatch(s);
if(m == null) return 0;
return int.parse(m.group(0));
}
throw "Unexpected string ${s}";
}
var s = c.style;
if(include_margin) {
width += parse(s.marginRight);
width += parse(s.marginLeft);
// width += parse(s.paddingLeft);
// width += parse(s.paddingRight);

height += parse(s.marginTop);
height += parse(s.marginBottom);
// height += parse(s.paddingBottom);
// height += parse(s.paddingTop);

// height += parse(s.borderTop);
// height += parse(s.borderBottom);
// height += parse(s.paddingBottom);
// height += parse(s.paddingTop);
}
r = new Rectangle(-1,-1,width,height);
c.remove();
return r;
}

最佳答案

不确定,但不是Element上的marginEdge给您什么?

关于dart - 是否有等于dart的externalWidth高度(边框,边距,内含填充元素的大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35267430/

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