【发布时间】:2016-10-23 16:36:19
【问题描述】:
当我尝试在 D3 中转换字体大小时,为什么会出现“飞入”效果?请参阅我的最小示例:
<!DOCTYPE html>
<title>Test text transtion</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js">
</script>
<body>
<button>Toggle</button>
<script>
var svg = d3.select('body').append('svg')
var myLabel = svg.append('text')
.attr('y', 100)
.text('Watch me.');
var toggle = false;
d3.selectAll('button').on('click', function() {
toggle = !toggle;
myLabel.transition()
.style('font-size', toggle ? '2em' : '1em');
});
</script>
</body>
这显然不是我们想要的效果。我只是希望文本在没有大张旗鼓的情况下原地增长或缩小。在another thread 中,其他人定义了一个自定义补间。这是否意味着没有更简单的方法?我会感到非常惊讶,因为这是一种司空见惯的效果,并且内置的插值器可以很好地处理不透明度和字体粗细。
另外,如果我定义了一个自定义补间,这是否意味着我当前拥有的其他内置过渡(不透明度等)需要排队,因为在给定时间只能在一个元素上激活一个过渡?
【问题讨论】:
-
@RobertLongson 好的,我编辑了问题以回应您的评论。
标签: javascript d3.js transition