Javascript d3.风格赢得';设置HTML元素的宽度
这个很简单,但很奇怪:Javascript d3.风格赢得';设置HTML元素的宽度,javascript,html,d3.js,Javascript,Html,D3.js,这个很简单,但很奇怪: var dims = this.placeholder.node().getBoundingClientRect(); this.mapContainer = d3.select('body').append('div') .classed('map-container', true) .style({ position : 'absolute', width : dims.width, height : dims.height,
var dims = this.placeholder.node().getBoundingClientRect();
this.mapContainer = d3.select('body').append('div')
.classed('map-container', true)
.style({
position : 'absolute',
width : dims.width,
height : dims.height,
top : dims.top,
left : dims.left
});
dims.width
,dims.height
等返回非零值,但我得到的div只是普通的
我可以在控制台中设置其他样式值(d3.select('.map container')。样式({color:'red','background-color:'blue'})
工作正常),但是设置宽度d3.select('.map container')。样式({width:30,top:40})
根本不起作用
这是一个直接的jsbin,它也不起作用:
这是怎么回事?这是因为CSS样式值需要一个单位
this.mapContainer = d3.select('body').append('div')
.classed('map-container', true)
.style({
position : 'absolute',
width : dims.width + 'px',
height : dims.height + 'px',
top : dims.top + 'px',
left : dims.left + 'px'
});
工作正常。您也可以使用
.attr()
而不是.style()
。我认为您不能使用HTML元素(至少对于像top和left这样的东西,它们只能通过HTML中的CSS控制)。