Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在添加元素之前从CSS类获取宽度?_Javascript_Css_D3.js - Fatal编程技术网

Javascript 在添加元素之前从CSS类获取宽度?

Javascript 在添加元素之前从CSS类获取宽度?,javascript,css,d3.js,Javascript,Css,D3.js,我需要父级div的宽度,以便在子级div中进行计算,但尚未在D3链中追加这两个值。我如何从中提取宽度 .element { width: 120px; height: 200px; box-shadow: 0px 0px 12px rgba(0,255,255,0.5); border: 1px solid rgba(127,255,255,0.25); text-align: center; cursor: default; } 您可以使用和一

我需要父级
div
的宽度,以便在子级
div
中进行计算,但尚未在D3链中追加这两个值。我如何从中提取宽度

.element {
    width: 120px;
    height: 200px;
    box-shadow: 0px 0px 12px rgba(0,255,255,0.5);
    border: 1px solid rgba(127,255,255,0.25);
    text-align: center;
    cursor: default;
}
您可以使用和一个具有类名的临时DOM元素来读取应用的CSS

var el = document.createElement("div");
el.className = "element";
document.body.appendChild(el);
var elementWidth = getComputedStyle(el, null).width;
document.body.removeChild(el);
此代码将使用
元素
类创建一个新的
div
元素,将其添加到
主体
,读取应用的CSS
宽度
,将其设置为变量
元素宽度
,并从DOM中删除临时元素

或者,您也可以使用jQuery来实现这一点

var el = $("div").addClass("element").appendTo("body");
var elementWidth = el.css("width");
el.remove();

是否有原因不能在父div和子div之间进行计算?是否有原因选择不使用d3进行DOM操作?@MikePrecup d3对这样的单元素操作没有多大帮助。Vanila JS速度更快。带有d3 svg的外部元素和内部div被放置在一个THREE.CSS3DObject对象中,以在带有THREE.css3drender()的THREE.JS画布中呈现。。。因此,我认为该元素实际上从svg中矩形的x属性所需的位置开始,沿着派克向下10英里左右的宽度。我应该提到这一点。完美地创造和破坏作品-谢谢你。。。。。用js阅读css类时做了更多的谷歌搜索-讨厌的东西!看看迈克的评论。。。。目前,我正在d3语句之前创建大量元素以添加svg数据。Mike是说我可以在一个d3.select(“body”)语句中完成所有这些,并且父项传递给每个.append('child')因此,所有父属性(包括宽度)在创建时都可供每个子元素使用?@MicC我想Mike是在问我为什么不使用D3添加临时元素,并建议您可以在添加子元素之前计算父元素的宽度。