html页面中随机出现的文本

Posted

技术标签:

【中文标题】html页面中随机出现的文本【英文标题】:Randomly appearing text in html page 【发布时间】:2015-08-26 03:01:45 【问题描述】:

我一直在努力寻找解决方案,但一无所获。

我试图让 10 个不同字体大小的单词从不同方向滑入我文档中的画布上。我有一些代码 (jsFiddle),但还没有走得太远,感谢所有建议。

var can, ctx, step, steps = 0,
  delay = 20;

function init() 
  can = document.getElementById("MyCanvas1");
  ctx = can.getContext("2d");
  ctx.fillStyle = "blue";
  ctx.font = "20pt Verdana";
  ctx.textAlign = "center";
  ctx.textBaseline = "middle";
  step = 0;
  steps = can.height + 50;
  RunTextRightToLeft();


function RunTextRightToLeft() 
  step++;
  ctx.clearRect(0, 0, can.width, can.height);
  ctx.save();
  ctx.translate(can.width / 2, step);
  ctx.fillText("Welcome", 0, 0);
  ctx.restore();
  if (step == steps)
    step = 0;
  if (step < steps)
    var t = setTimeout('RunTextRightToLeft()', delay);
canvas 
  border: 1px solid #bbb;

.subdiv 
  width: 320px;

.text 
  margin: auto;
  width: 290px;
<body onload="init();">
  <div class="subdiv">
    <canvas id="MyCanvas1"  >
    </canvas>
  </div>
</body>

谢谢

【问题讨论】:

请出示相关代码,以便我们为您解决问题,谢谢。 到目前为止我只有这个 jsfiddle.net/argilmour/mh3937c5 但我不确定这是正确的,我不知道如何再添加 9 个单词以便它们随机出现 你什么都没告诉我们,一开始我们甚至都不知道它是在画布上 抱歉,Dendromaniac - 我需要尝试和研究更多 - 我真的不知道从哪里开始 - 我想我需要再看看 Css 动画 看看this 【参考方案1】:

这是将单词动画化为最终句子的一种方法:

https://jsfiddle.net/m1erickson/q7tpsnmv/

在数组中定义一些单词对象:

var words=[];

words.push(
    text:'Welcome',
    // starting x,y of the word offscreen
    x0:Math.random()*cw,
    y0:(Math.random()*100)+ch,
    // ending position of the word onscreen
    x1:20,
    y1:50,
    // font-size
    size:10,
    // delay before starting to animate this word in
    delay:200,
    // the animations progress (percent-complete)
    pct:0
);

计算每个单词必须在哪里结束才能造句:

var accumX=0;
for(var i=0;i<words.length;i++)
    w=words[i];
    // measure this word and assign it's ending x1 appropriately
    ctx.font=w.size+'px verdana';
    var width=ctx.measureText(w.text).width;
    w.x1=accumX;
    accumX+=(width+8);
    // dx,dy are used to calculate the interim waypoints
    // for the word as it animates in
    w.dx=w.x1-w.x0;
    w.dy=w.y1-w.y0;

将每个单词从其起始位置 [x0,y0] 动画到其结束位置 [x1,y1]:

var start=performance.now();
requestAnimationFrame(animate);

function animate(time)
    var countComplete=0;
    // clear the canvas for this new frame
    ctx.clearRect(0,0,cw,ch);
    for(var i=0;i<words.length;i++)
        var w=words[i];
        if(w.pct==100)countComplete++;
        // calc the appropriate x,y waypoint
        var x=w.x0+w.dx*w.pct/100;
        var y=w.y0+w.dy*w.pct/100;
        w.pct=Math.min(100,w.pct+1);
        // draw the text
        ctx.font=w.size+'px verdana';
        ctx.fillText(w.text,x,y);
    
    // request another loop if the animation is not complete
    if(countComplete<words.length)
        requestAnimationFrame(animate);
    

【讨论】:

以上是关于html页面中随机出现的文本的主要内容,如果未能解决你的问题,请参考以下文章

复制小说文本时如何去除随机乱码?

html页面如何生成随机数

在 UIWebView 中使用 HTML 页面,相关页面图像出现奇怪问题,但链接有效

当我在 iframe 中编辑时,如何自动更改 Html 页面的内容

jQuery替换html页面中所有出现的字符串

用es6语法写ts导入html——面向对象实现点击div变随机色,刷新页面随机变色