- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 Angularjs 的指令函数中创建 @keyframes 动画 CSS。问题是我之前无法创建它。我需要一个范围变量来创建这个关键帧。
app.directive("myCSSDiv", function() {
var css = "@keyframes myAnimation {";
var nb_msg = ??? // Here i want to get a variable like $scope.nb_msg but i don't know how to get it
if(nb_msg == 2) {
css += "0%, 100% {left: 0px}";
css += "30%, 60% {left: -100px}";
} else if(nb_msg == 3) {
css += "0%, 100% {left: 0px}";
css += "15%, 50% {left: -100px}";
css += "60%, 85% {left: -200px}";
} else if(...) {
...
}
return {
restrict: "E",
template: css
}
});
有什么建议吗?谢谢!
最佳答案
范围在指令的链接函数中可用(以及其他地方)。
在这种情况下,虽然您可以访问当前范围,但隔离指令的范围并将值作为参数传递是一个很好的做法。
如果要使用模板中的值,可以通过属性访问它:
app.directive('myCssDiv', function () {
function buildAnimationCss(nb_msg) {
var css = '@keyframes myAnimation {';
switch (nb_msg) {
case 2:
css += "0%, 100% {left: 0px}";
css += "30%, 60% {left: -100px}";
break;
case 3:
css += "0%, 100% {left: 0px}";
css += "15%, 50% {left: -100px}";
css += "60%, 85% {left: -200px}";
break;
case ...:
...
break;
}
return css;
}
return {
restrict: 'E',
template: function (tElem, tAttrs) {
return buildAnimationCss(parseInt(tAttrs.message));
}
}
});
然后像这样使用它:
<my-css-div message="{{nb_msg}}"></my-css-div>
更新:
如果您希望 nb_msg
在稍后更改或异步初始化,您应该使用链接函数和 $watch
对其进行处理:
app.directive('myCssDiv', function () {
function buildAnimationCss(nb_msg) {...}
return {
restrict: 'E',
scope: {
message: '='
},
link: function myCssDivPostLink(scope, elem, attrs) {
scope.$watch('message', function (newValue) {
var nb_msg = parseInt(newValue); // unless it is already an integer...
if (!isNaN(nb_msg)) {
elem.html(buildAnimationCss(nb_msg));
}
});
}
}
});
然后像这样使用它:
<my-css-div message="nb_msg"></my-css-div>
关于javascript - Angularjs 在指令中创建@keyframes 动画 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24349843/
这是在 Chrome 中不是由 orbit 动画的圆圈。 http://jsfiddle.net/ztkav838/ //CSS @-webkit-keyframes orbit { from
我一直在查看示例,但我在这里遗漏了一些东西。我无法启动这个简单的 css 动画,改变某些文本的颜色。当我运行下面的示例时,文本保持黑色。 我有一个名为“changeColor”的动画,应用于 h1 元
我一直在浏览示例,但我会在这里遗漏一些东西。我无法触发这个简单的 css 动画,改变一些文本的颜色。当我运行下面的示例时,文本保持黑色。 我有一个名为“changeColor”的动画,应用于 h1 元
我想在第二次点击按钮时重复@keyframne 动画,但它只生效一次。 $(document).ready(function(){ $('#btn_c
我在@keyframes 动画中缩放文本,当文本增加时,它变得模糊,我该如何防止? JS Bin Example 谢谢! 最佳答案 解决问题的最简单方法是将最大状态比例设置为 1,将较小状态比例设置为
我正在尝试创建一个关键帧,它会在查看几秒钟后更改 div 容器的内容,但它不起作用。 这是我的代码: @-webkit-keyframes k_home_projectSlider { 0%
当我创建 @keyframes 动画并将其分配给悬停时的图像时,它会随机闪烁。正如您在 GIF 中看到的那样,它只能随机地正常工作几次。 我已经尝试了以下所有方法并为每个供应商添加了前缀: 背面可见性
我有一个 css3 @keyframe 动画,我在控制时遇到了一些麻烦。 这是一个分为两部分的动画,有一个平放的高矩形,在第一部分中它假设旋转 90 度并将 z 轴向上平移向您同时也向左平移,然后完成
是否可以减少代码以生成一组可以处理各种浏览器前缀的混合宏? 尝试减少代码长度以使用更多mixin 所以代替 @-moz-keyframes orbit { 0% { opaci
我正在尝试使用 @keyframes 制作动画。但是,该示例不起作用。 .main{ width:100%; height:500px; border: 1px solid black; } @
所以我正在制作一个简单的元素,它会显示一个计时器并仅使用 HTML 和 CSS 计数到 99。 但是有人能告诉我为什么我需要延迟我的 100 秒动画以使其与 10 秒动画同步吗? .second::b
我有四个动画 div 元素,它们在 section 元素内旋转。 div 元素需要放在文本下方(假设它有背景),这样就不会出现冲突线,所以我尝试做的是添加 background-color: #aea
不确定我在这里面对的是什么,但我正在尝试应用 CSS 动画。 经过一些研究,我认为添加 webkit 前缀将有助于解决问题,但看起来我仍然面临读取无效属性值的问题。 这是我当前的代码: .progre
我试图让动画在悬停后缓和到元素的原始值。动画本身工作正常,但是当我将鼠标悬停在该元素上时,它会立即恢复到原始状态,而我希望有 0.2 秒的缓和。有什么帮助吗? 这是我的代码: img.footer {
.car1 仅在使用 @keyframes 的 from 和 to 时移动,但在使用时不移动%。谁能解释为什么会这样? .car1 { animation: car1 2s 2 forwards;
似乎无法让我的图像 slider 工作,我打算将其用作我的页面的标题,但图像不会滑动。我已经尝试过 chrome 的前缀,但它们没有任何区别。 这是C
我正在尝试做的事情:我在黑盒子里有链接。我试图在悬停时使框的背景从黑色变为蓝色。我不知道该怎么做。这是我的 CSS(我将它设置为 5s 但我真的希望它在悬停时生效) @keyframes navBox
我试图用 CSS3 使我的 div 上下移动,但它没有 @-webkit-keyframes mover { 0%, 100% { top: 0%;} 50% { top: 5%;
我正在尝试编写此文本动画效果 ( please see video ),但我离解决方案还很远!! 你能帮帮我吗?也许使用 js 更好? h1.fadeinone { animation: fadein
这个问题在这里已经有了答案: Using percentage values with background-position on a linear-gradient (2 个答案) 关闭 3
我是一名优秀的程序员,十分优秀!