- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我在 HTML 和 CSS 方面拥有丰富的经验,并且在 Javascript 方面也有一些经验(我可以编写基本功能并使用类似的语言进行编码)。
我正在寻找一些视觉项目,并且对进入粒子系统特别感兴趣。我有一个类似于 Codecademy 的名称生成器( https://www.codecademy.com/courses/animate-your-name/0/1 )的想法,其中粒子被映射到单词并在悬停时移动。看起来好像 Alphabet.js 才是 Codecademy 演示的真正幕后黑手,但我无法准确理解他们如何将粒子映射到单词等。
我已经完成了一些基本教程,只是在 Canvas 中创建基本粒子,但我不确定 Canvas 是最好的方法 - 利用许多可用库之一的演示(例如 http://soulwire.github.io/sketch.js/examples/particles.html )不要'不要使用 Canvas 。
所以我的问题是 - 对于 Javascript 初学者/中级初学者来说,开始使用粒子系统的最佳方法是什么?专门为了实现Codecademy名称效果或者类似的?我应该尝试使用 canvas 或哪个库最适合开始,您建议如何开始?
最佳答案
这个项目的代码对于中级 JS 程序员来说是可以实现的。
CodeAcademy 项目如何运作...
首先用圆圈构建每个字母并将每个圆圈的中心点保存在数组中。 Alphabet.js 脚本保存圆中心点数组。
在 mousemove
事件中,测试哪些圆位于鼠标位置的指定半径内。然后使用简单的三 Angular 函数从鼠标位置径向向外为每个发现的圆圈设置动画。
当鼠标再次移动时,测试哪些圆不再位于当前鼠标位置的指定半径内。然后将每个“外部”圆圈动画回到原来的位置。
您还可以使用原生 html5 canvas,无需任何库...
另一种允许任何文本“溶解”并重新组合的方法
首先在 Canvas 上绘制文本。顺便说一句,这种方法将“溶解”任何绘图,而不仅仅是文本。
使用context.getImageData
获取 Canvas 上每个像素的不透明度值。确定 Canvas 上的哪些像素包含文本的一部分。您可以判断某个像素是否是文本的一部分,因为它是不透明的而不是透明的。
现在执行与 CodeAcademy 对其圆圈相同的过程 - 但使用您的像素:
在 mousemove
事件中,测试哪些像素位于鼠标位置的指定半径内。然后使用简单的三 Angular 函数从鼠标位置径向向外为每个发现的像素设置动画。
当鼠标再次移动时,测试哪些像素不再位于当前鼠标位置的指定半径内。然后将每个“外部”像素动画回到其原始位置。
[添加:用于测试圆圈是否在鼠标距离内的 mousemove 事件]
注意:您可能希望保持一个动画帧运行,根据每个圆圈的标志 (isInside) 将圆圈移近或远离其原始位置。
function handleMouseMove(e){
// tell the browser we're handling this event
e.preventDefault();
e.stopPropagation();
// calc the current mouse position
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
// test each circle to see if it's inside or outside
// radius of 40px to current mouse position
// circles[] is an array of circle objects shaped like this
// {x:,y:,r:,originalX:,originalY:,isInside:}
var radius=40;
for(var i=0;i<circles.length;i++){
var c=circles[i];
var dx=c.x-mouseX;
var dy=c.y-mouseY;
if(dx*dx+dy*dy<radius*radius){
c.isInside=true;
// move c.x & c.y away from its originalX & originalY
}else{
c.isInside=false;
// if the circle is not already back at it's originalX, originalY
// then move c.x & c.y back towards its originalX, originalY
}
}
}
关于javascript - 开始使用 JavaScript 中的动画排版/粒子(将粒子映射到单词)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369819/
默认情况下,Bootstrap 有 @baseFontSize: 14px 和 @baseLineHeight: 20px。我打算使用 12px 作为我的 @baseFontSize。我是否应该将 @
最近我将我的 Material UI 版本从 3.9.4 升级到 4.11.0,我不得不在主题样式覆盖上替换这些: 为避免这些警告: 但是我需要将 fontSize 样式放在 !important 中
我使用 MathJax 来显示数学方程。它在静态编写的数学中运行良好。但不适用于动态添加的数学。 这是我的代码 //Static \(x = {-
在定制我的angular material theme's typography .我知道可以用自己的字体覆盖默认字体,如下所示: $custom-typography: mat-typography
各位seoer应该都明白,要想网站有排名,收录是前提条件,没有收录完全谈不上排名、流量。但是内页的收录往往是seo最大的难题之一,笔者手上有一堆网站都是只被收录了首页或者几页内页,因此解决内页收录问
我有一个 MathJax 示例,位于 Demo sample ,它按预期工作。它所做的只是在 id 为 mathDiv 的 div 中排版 latex 表达式。 当第三个 latex 表达式即将被排版
我正在尝试使用 iText7 创建 Bengli 文本的 pdf。其他文本似乎工作正常,但有一个。 PdfFont font = null; try { font = PdfFontFact
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this q
我有以下代码: UILabel *registerLabel = [ [UILabel alloc ] initWithFrame:CGRectMake(20.0, 90.0, [self scree
是MDC typography特定于 Roboto 字体,或者我们可以使用其他 Google 字体来实现,如果是这样,推荐的方法是简单地应用 font-family CSS 到 body ? 最后,似
有没有办法从 ipython/jupyter 文本编辑器编译/排版 Latex 文件?我希望能够编辑该文件,然后下载更新输出的 pdf 文件。 例如我目前将我的简历 (CV.tex) 存储在运行 ju
我一直在遵循有关排版的 Google 官方 Material 设计指南 (http://www.google.com/design/spec/style/typography.html),但我发现它们
我是一名优秀的程序员,十分优秀!