【问题标题】:angular random css rotation always moving角度随机css旋转总是在移动
【发布时间】:2015-01-07 16:42:06
【问题描述】:

我想要一个带有随机 css 旋转的 img。我设法做到了这一点,但是当您将鼠标移到传单地图上时,img 总是在旋转:

http://jsfiddle.net/J03rgPf/mzwwfav4/3/

如何设置一个随机css只用一次,这样getRandRot函数就不会被一次次调用?

<body ng-controller="DemoController">
 <leaflet center="center"></leaflet>
 <div class="{{getRandRot()}}">
     <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Surfers_at_Mavericks.jpg/320px-Surfers_at_Mavericks.jpg" />
 </div>  
</body>

Angular JS 代码:

var app = angular.module('demoapp',['leaflet-directive']);

app.controller('DemoController', [ '$scope', 'leafletData', function($scope, leafletData) {
    angular.extend($scope, {
        center: {
            lat: 51.505,
            lng: -0.09,
            zoom: 5
        }
    })

    $scope.getRandRot = function(){
        var rotations = [ "rotate-10", "rotate-5", "rotate5", "rotate10" ];
        var rand = Math.floor(Math.random() * rotations.length);
        return rotations[rand];  
      }
}]);

CSS

.angular-leaflet-map {
    width: 100%;
    height: 280px;
}

.rotate-10{
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -webkit-transform: rotate(-10deg);
}
.rotate-5{
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    -webkit-transform: rotate(5deg);
}
.rotate5{
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    -webkit-transform: rotate(5deg);
}
.rotate10{
    -moz-transform: rotate(10deg);
    -ms-transform: rotate(10deg);
    -o-transform: rotate(10deg);
    -webkit-transform: rotate(10deg);
}

【问题讨论】:

    标签: css angularjs rotation leaflet angular-leaflet-directive


    【解决方案1】:

    也许将对 getRandRot 的调用响应分配给控制器中的值?

    通过使用class={{ getRandRot() }},您将创建一个绑定到getRandRot 上,该绑定将在每个摘要阶段中调用

    这就是诀窍:

    HTML

     <body ng-controller="DemoController">
       <leaflet center="center"></leaflet>
       <div ng-class="randRot">
         <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Surfers_at_Mavericks.jpg/320px-Surfers_at_Mavericks.jpg" />
       </div>  
    </body>
    

    JS

    var app = angular.module('demoapp',['leaflet-directive']);
    
    app.controller('DemoController', [ '$scope', 'leafletData', function($scope, leafletData) {
        angular.extend($scope, {
            center: {
                lat: 51.505,
                lng: -0.09,
                zoom: 5
            }
        })
    
        getRandRot = function(){
            var rotations = [ "rotate-10", "rotate-5", "rotate5", "rotate10" ];
            var rand = Math.floor(Math.random() * rotations.length);
            return rotations[rand];  
          }
    
        $scope.randRot = getRandRot();
    }]);
    

    顺便说一下,ng-class 是使用 angular 在元素上动态设置类的首选方式。

    希望这会有所帮助。

    【讨论】:

    • 它几乎可以工作。当我查看站点源代码时,ng-class 设置为 ng-class="rotate10"。但旋转不会发生。当我直接写 ng-class="rotate10" 时也不会。但是当我写 class="rotate10" 时,旋转工作......知道吗?
    • 我不确定我是否正确理解了您的问题。 This fiddle 包含我认为解决您问题的方法。与您的预期有何不同?
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多