Следующие два вопроса больше связаны с CSS, чем с D3.
let svg = d3.select('body')
.append('svg');
svg.append('circle')
.attr('cx', 100)
.attr('cy', 100)
.attr('r', 50)
.attr('class', ball)
.on('mouseenter', function() {
d3.select(this)
.classed('over', true);
});
circle.ball {
fill: blue;
}
circle.ball over {
fill: yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
Если в приведенном выше коде я пишу
circle {
fill: blue;
}
вместо
circle.ball {
fill: blue;
}
, тогда Круг изначально заполнен синим цветом. Почему установка класса ball
не влияет на заливку?
Мне известна опция :hover
CSS. Далее я хотел бы внести изменения, используя событие mouseenter
и настройку класса. Когда событие инициируется, дополнительный класс over
настраивает fill
. Почему вставка дополнительного класса не влияет на заливку?
В частности, является ли circle.ball over
правильной спецификацией, чтобы сказать "применимо, только если два класса ball
и over
одновременно присутствуют для круга"?
(случай симметричного c выхода мыши вместе с настройкой .classed('over', false)
опущен.)