Javascript 使用d3从一侧到另一侧的水平淡入过渡?

Javascript 使用d3从一侧到另一侧的水平淡入过渡?,javascript,d3.js,Javascript,D3.js,我知道如何使用“不透明度”(opacity)属性进行正常的淡入淡入过渡,但如何使过渡从元素的一端开始,并在水平方向上逐渐完成 大概是这样的: 我试图为一些文本这样做: text = svg.selectAll(".myText") .data(myData) .enter() .append("text") .attr("class", "myText") .attr("text-anchor",

我知道如何使用“不透明度”(opacity)属性进行正常的淡入淡入过渡,但如何使过渡从元素的一端开始,并在水平方向上逐渐完成

大概是这样的:

我试图为一些文本这样做:

text = svg.selectAll(".myText")
          .data(myData)
          .enter()
          .append("text")
          .attr("class", "myText")
          .attr("text-anchor", "start")
          .attr("fill-opacity", 0)
          .text(function (d)
          {
              return d.message
          });

text.transition()
    .delay(500)
    .duration(1000)
    .attr("fill-opacity", 1)

很酷的问题。这种疯狂怎么样:

var str=这是一个长字符串。, i=0; var svg=d3.selectbody .appendsvg .宽度,500 .身高300; var text=svg.appendtext .样式填充,黑色 .STYLE字体大小,30磅 .stylefont系列,arial .attransform,translate10,50; fadeLeftToRight; 功能fadeLeftToRight{ i++; 如果i>=str.length返回; var char=str.substringi-1,i; 文本 .附录span .styleopacity,0 .textchar 过渡 .延迟100 .durationchar==?0:500 .不透明度,1 .eachstart,已运行{ fadeLeftToRight; } } 纯CSS答案 您可以在此处看到如何使用纯CSS执行此操作:

D3方法 下面是链接答案中给出的相同方法,仅将其应用于D3

要点是在文本上方放置一个框,并使用过渡将框宽度从完全覆盖文本修改为完全显示文本

为防止长方体边缘可见且过于粗糙,将应用渐变

为了确保框很好地覆盖文本,覆盖矩形使用函数getBBox使用文本边界框中的参数

变量高度=25, 宽度=100; d3.选择'div'。附加'svg' .attr'width','100%' .attr'viewBox',0+宽度+高度 .attr'style','边框:实心1px绿色' .附加“g” .attr'transform','translate'+宽度/2+,'+高度/2+ .attr'id','main'; var text=d3。选择“main”。追加“text” .attr'class','myText' .attr'text-anchor','middle' .attr'alignment-baseline','middle' .发短信“我的留言”; bbox=文本[0][0]; var gradient=d3。选择“svg”。添加defs .appendlinearGradient .属性,梯度 .X1,0% .x2,0% .方法,pad; 梯度。追加停止 .补偿,0% .自动停止颜色,fff .不透明度,1; 梯度。追加停止 .补偿,100% .自动停止颜色,fff .attrstop不透明度,0; fadeBox=d3。选择“主”。附加“rect” .attr'x',bbox.x .attr'y',bbox.y .attr'width',bbox.width .attr'height',bbox.height .stylefill,URLFILL梯度; fadeBox.transition .500 .期限2000 .attr'width',0 .attr'x',bbox.width 渐变过渡 .延迟'500' .期限'2000' .attr'x1','100%'
回答得好。我必须在我的游戏上升级以获得更好的淡入效果。嘿,谢谢你。我女朋友说这很糟糕,你的更好。哈,哈,如果投票结果和被接受的答案是任何迹象,你女朋友错了。