2016-10-12 2 views
1

Я работаю над радиальным складным деревом в использовании d3.js. Вот как это выглядит до сих пор: enter image description here Как видно, красным цветом видно, что текст перекрывает ссылки. Я хочу, чтобы текст был «выделен» в фоновом цвете, так что ссылки не будут отображаться там, где текст.D3.js: Рисование прямоугольников под текстом

До сих пор я попытался выделить текст, используя background-color в CSS и в формате .style().

.node text { 
background-color: yellow; 
    font: 12px sans-serif; 
    } 

Я также попытался нарисовать прямоугольник размера текста перед нанесением текста, как показано на Mike Босток-х bar chart. Тем не менее, когда я выполняю код, прямоугольников нигде не найти, даже в исходном коде с помощью инструмента разработчика хром (для кругов есть тег <circle>, но не тег прямоугольника).

См. Здесь JSFiddle часть кода. Я сделал прямоугольник желтым в CSS, чтобы видеть лучше, если он работает, хотя я не смог заставить его работать.

Код прямоугольников являются следующие:

.node rect { 
    fill: yellow; 
} 

nodeEnter.select("rect") 
     .attr("height", 15) 
     .attr("width", 200) 
     .attr("transform", function(d) { return d.x < 180 ? "translate(0)" : "rotate(180)translate(-" + (d.name.length + 50) + ")"; }) 
     //.style("fill","yellow") 
; 

и

nodeUpdate.select("rect") 
     .attr("height", 15) 
     .attr("width", 200) 
     .attr("transform", function(d) { return d.x < 180 ? "translate(0)" : "rotate(180)translate(-" + (d.name.length + 50) + ")"; }) 
     //.style("fill","yellow") 
; 

ответ

1

Вы должны append прямоугольник в выборе входа, не select ИНГ его:

nodeEnter.append("rect") 

Ваша любимая игра: https://jsfiddle.net/wLwn9p98/

+1

Спасибо, теперь я чувствую себя глупо за то, что в первую очередь ... Ты изменил что-нибудь еще? прямоугольники, похоже, вписываются в скрипку, но не в мой фактический код, и там не так уж и много. – MorganFR

+0

Да, я изменил размеры прямоугольников. –