3

私は角度のあるディレクティブを作成して、div を無限に回転させようとしています。このhtmlを取得したとしましょう

<div class="card" pendulum></div>

回転を変更するために、このようなディレクティブを作成しました

pdany.directive('pendulum', function() {
        return function(scope, elem, attr) {
            elem.css({
                    '-moz-transform': 'rotate(90deg)',
                    '-webkit-transform': 'rotate(90deg)',
                    '-o-transform': 'rotate(90deg)',
                    '-ms-transform': 'rotate(90deg)'
                });
        }
    });

しかし、このディレクティブは回転CSSを変更します。それだけですが、ディレクティブ内にタイマーを追加しようとしましたが、その方法がわかりません。ディレクティブでのみ機能させる方法はありますか、またはコントローラーにも何かを追加する必要がありますか? 助けてくれてありがとう、ダニエル!

4

2 に答える 2

3

要素をどのように回転させたいかわからなくても、次のことしか提案できません。

pdany.directive('pendulum', function() {
    return function($scope, $element, $attributes) {
       var degrees = 360;

       $element.css('transition', '-webkit-transform 800ms ease');

       var rotate = function() {
          $element.css('-webkit-transform', 'rotate(' + degrees + 'deg)');
          degrees += 360;
          setTimeout(rotate, 1000);
       };

        rotate();
    }
});

デモ: http://jsfiddle.net/kWvp6/3/

于 2013-09-22T01:55:21.857 に答える
2

css3 アニメーションを使用する必要があります。

たとえば、スタイルシートに含める必要があります

@-webkit-keyframes rotate360{
    from {
        -webkit-transform:rotate(0deg);
    }
    to {
        -webkit-transform:rotate(360deg);
    }
}
@-moz-keyframes rotate360{
    from {
        -moz-transform:rotate(0deg);
    }
    to {
        -moz-transform:rotate(360deg);
    }
}
@-ms-keyframes rotate360{
    from {
        -ms-transform:rotate(0deg);
    }
    to {
        -ms-transform:rotate(360deg);
    }
}
@-o-keyframes rotate360{
    from {
        -o-transform:rotate(0deg);
    }
    to {
        -o-transform:rotate(360deg);
    }
}
@keyframes rotate360{
    from {
        transform:rotate(0deg);
    }
    to {
        transform:rotate(360deg);
    }
}

そしてあなたの elem.css で

elem.css({
    'animation':'rotate360 1s linear 0s infinite',
    '-webkit-animation':'rotate360 1s linear 0s infinite',
    '-moz-animation':'rotate360 1s linear 0s infinite',
    '-ms-animation':'rotate360 1s linear 0s infinite',
    '-o-animation':'rotate360 1s linear 0s infinite'
});
于 2013-09-21T22:49:08.830 に答える