- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要你的帮助。要将动画应用到具有单个“my-button”类的多个元素?现在这仅适用于单个按钮。
在 querySelectorAll 上替换 querySelector 无法解决问题,脚本变得无法工作
谢谢。
var el = document.querySelector('.my-button'),
elSpan = el.querySelector('span'),
// mo.js timeline obj
timeline = new mojs.Timeline(),
scaleCurve = mojs.easing.path('M0,100 L25,99.9999983 C26.2328835,75.0708847 19.7847843,0 100,0'),
// tweens for the animation:
// burst animation
tween1 = new mojs.Burst({
parent: el,
duration: 1500,
shape : 'circle',
fill : [ '#e67e22', '#DE8AA0', '#8AAEDE', '#8ADEAD', '#DEC58A', '#8AD1DE' ],
x: '50%',
y: '50%',
opacity: 0.8,
childOptions: { radius: {20:0} },
radius: {40:120},
angle: {0: 180},
count: 8,
isSwirl: true,
isRunLess: true,
easing: mojs.easing.bezier(0.1, 1, 0.3, 1)
}),
// ring animation
tween2 = new mojs.Transit({
parent: el,
duration: 750,
type: 'circle',
radius: {0: 50},
fill: 'transparent',
stroke: '#2ecc71',
strokeWidth: {15:0},
opacity: 0.6,
x: '50%',
y: '50%',
isRunLess: true,
easing: mojs.easing.bezier(0, 1, 0.5, 1)
}),
// icon scale animation
tween3 = new mojs.Tween({
duration : 900,
onUpdate: function(progress) {
if(progress > 0.3) {
var scaleProgress = scaleCurve(progress);
elSpan.style.WebkitTransform = elSpan.style.transform = 'scale3d(' + scaleProgress + ',' + scaleProgress + ',1)';
elSpan.style.WebkitTransform = elSpan.style.color = '#2ecc71';
} else {
elSpan.style.WebkitTransform = elSpan.style.transform = 'scale3d(0,0,1)';
elSpan.style.WebkitTransform = elSpan.style.color = 'rgba(0,0,0,0.3)';
}
}
});
// add tweens to timeline:
timeline.add(tween1, tween2, tween3);
// when clicking the button start the timeline/animation:
el.addEventListener('mousedown', function() {
timeline.start();
});
.wrapper {
display: flex;
justify-content: center;
align-items: center;
align-content: center;
text-align: center;
height: 200px;
}
.my-button {
background: transparent;
border: none;
outline: none;
margin: 0;
padding: 0;
position: relative;
text-align:center;
}
svg {
top: 0;
left: 0;
}
.send-icon {
position: relative;
font-size: 40px;
color: rgba(0,0,0,0.3);
}
<link href="http://fontawesome.io/assets/font-awesome/css/font-awesome.css" rel="stylesheet"/>
<script src="http://netgon.net/mo.min.js"></script>
<div class="wrapper">
<button class="my-button">
<span class="send-icon fa fa-paper-plane"></span>
</button>
</div>
最佳答案
“父元素”el 必须是单个元素,因此实现这一点会很棘手,并且会创建复杂而困惑的代码。
因此我创建了一种不同的方法,该方法将创建一次动画,并在单击按钮时使用 tune() 设置动画位置,这将提高性能,因为动画对象中只有一个DOM。
而不是为每个父级/按钮创建三个动画。我用“my-button”类监听所有按钮,相应地设置动画的顶部和左侧值
$( ".my-button" ).on( "click", function() {
aniPos = findCenter($(this));
myAnimation1.tune({ top: aniPos.y, left: aniPos.x });
myAnimation2.tune({ top: aniPos.y, left: aniPos.x });
myTimeline.replay();
anipos 是用一个简单的函数计算的,该函数将返回一个具有 .x 和 .y 值的对象
function findCenter ($this) {
var offset = $this.offset();
var width = $this.width();
var height = $this.height();
IDs = {
x: offset.left + (width / 2),
y: offset.top + (height / 2)
};
console.log(offset);
return IDs;
}
我还添加了一种方法来自动为单击的按钮设置动画。
elSpan = this.querySelector('span');
new mojs.Tween({
duration : 900,
onUpdate: function(progress) {
if(progress > 0.3) {
var scaleProgress = scaleCurve(progress);
elSpan.style.WebkitTransform = elSpan.style.transform = 'scale3d(' + scaleProgress + ',' + scaleProgress + ',1)';
elSpan.style.WebkitTransform = elSpan.style.color = '#2ecc71';
} else {
elSpan.style.WebkitTransform = elSpan.style.transform = 'scale3d(0,0,1)';
elSpan.style.WebkitTransform = elSpan.style.color = 'rgba(0,0,0,0.3)';
}
}
}).play();
});
请注意,我的示例需要 JQuery 才能工作。
我使用了您提供的确切动画,但您可以更改它们,只要您不更改 X、Y、top 和左侧属性
关于javascript - mo.js 多个项目的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37959191/
明日方舟TW-MO-1怎么打 TW-MO-1通关攻略 必备干员 关卡本身不算难,而且也没有刷多次的必要性,所以打完一次就直接结束,这次的必备干员只有爆费先锋,也就是桃金娘或者极境。然后有银老板也
我在使用我们的学习管理系统 (LMS) 中内置的 MathML 编辑器时发现了一些奇怪的东西。当我输入 float 时,它用 包裹小数点标签。 例如,我期望 1.2输出为: 1.2 但是,编辑器输出
我在使用我们的学习管理系统 (LMS) 中内置的 MathML 编辑器时发现了一些奇怪的东西。当我输入 float 时,它用 包裹小数点标签。 例如,我期望 1.2输出为: 1.2 但是,编辑器输出
我需要MO TU WE TH FR SA SU中的工作日符号 我正在使用setDateFormat:@"EEEEE"];和shortWeekdaySymbols 但是它只会返回Sun Mon等。让我知
我正在关注 mo.js 教程,并且正在研究圆形点击爆发部分。 const OPTS = { fill: 'none', radius: 25, stro
我需要你的帮助。要将动画应用到具有单个“my-button”类的多个元素?现在这仅适用于单个按钮。 在 querySelectorAll 上替换 querySelector 无法解决问题,脚本变得无法
我正在使用 PHP 从数据库中生成 .mo 文件,遇到了一个奇怪的问题:有些键有效,有些键无效。我认为生成的文件存在某种问题。如何检查 .mo 文件是否正确? 最佳答案 使用msgunfmt,与msg
对于我们应用程序中的翻译,我们使用 Zend Translate使用 gettext 适配器。在每个模块中都有一个文件夹translations,包含所有语言的.mo 文件; 大莫 nl.mo zh.
我能否在 Java 中获得本地化的短星期名称(英语为 Mo/Tu/We/Th/Fr/Sa/Su)? 最佳答案 最好的方法是使用 java.text.DateFormatSymbols DateForm
我正在尝试使用gettext。 这是我认为起作用的方式- 首先,您使用某种po编辑器,并告诉它扫描应用程序的目录,创建这些“.po”文件,该应用程序会为每个扫描的文件创建一个po文件,其中包含以编程语
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我在核心数据托管对象中有一个属性,我正在尝试根据另一个属性来更新该属性。 如何实现每次更改原始属性时都会调用的方法? awakeFromInsert 和 awakeFromFetch 显然不起作用。我
问题的设置很简单: 用户选择语言首选项(可以从用户的 session 中读取此首选项); 基于此选择,从可用的翻译中加载适当的 .mo; (没有设置单独的域,如果有什么不同的话) 问题:由于此返回必须
这个问题已经有答案了: Reading from a plain text file (4 个回答) 已关闭 4 年前。 我有一个常规的 text.txt 文件,正在另一个程序中使用,文件扩展名为 .
我正在尝试使用 mojs、strokeDasharray 和 strokeDashoffset 为 SVG 的简单线条形状制作动画,也许我对这些属性和值感到困惑,它们在制作动画时表现得很奇怪。 预期的
我正在使用: 罗塞塔 - 0.7.2 Django - 1.4.3 我正在尝试: 忽略 .mo 文件,但继续跟踪 .po 过去一年我一直在使用 Rosetta 和 Django,从来没有遇到过这样的问
我一直在做一个项目,我终于决定制作翻译文件,所以现在我已经翻译了.po文件,但我现在不知道如何在C上使用它,只是我有使用那些 .po 制作 .mo 文件(没关系)。 我一直在四处寻找,但我找到了适用于
我正在尝试解决此问题以加载两个 mo 文件。我有两个 mo 文件,它们都有不同的 msgid 和 msgstr。 我的文件夹结构如下。local/zh_CN/LC_MESSAGES/lang.molo
如何从 .po 或 .mo 文件中提取所有翻译?我需要创建一个包含所有翻译的数组。 最佳答案 您可以使用 Zend Translate来自 Zend Framework 的模块。 $translate
我正在努力使我的 django 应用程序以法语提供(以前它仅以英语提供)。我在我的应用程序中标记了一些字符串进行翻译,以进行尝试。我转到我的应用程序的根目录(manage.py 所在的位置)并运行 d
我是一名优秀的程序员,十分优秀!