如何使用JavaScript旋转div?

时间:2016-06-03 09:18:30

标签: javascript rotatetransform

我想在用户点击按钮时将此div旋转180度。

<div class="game-wrapper">
...
</div>

我在JavaScript中使用此代码。

$scope.rotate = function () {
    var x = document.getElementsByClassName("game-wrapper");
    x.style.transform = "rotate(180deg)";
}

我收到了这个错误:

  

TypeError:无法设置属性&#39;转换&#39;未定义的

     

在Scope。$ scope.rotate(controllers.js:421)

我也使用AngularJS。

5 个答案:

答案 0 :(得分:2)

常规DOM API不像jQuery API那样工作(设置值时隐式循环集合中的所有元素)。

您的HTML表明该类中只有一个此元素。所以你可以用x[0]得到第一个元素。

但是,对于一般建议,您需要循环返回的集合并将其应用于每个单独的元素。

var x = document.getElementsByClassName("game-wrapper");
Array.protoype.forEach.call(x, function(y) {
   y.style.transform = "rotate(180deg)";
});

如果您的平台支持您或您正在转发到ES4,请使用Array.from()将您的收藏集转换为常规数组。

答案 1 :(得分:0)

像@alex说的那样。但除此之外,请注意element.style.transform在每个浏览器中都不起作用,因为您需要为每个支持的浏览器添加前缀:

element.style.webkitTransform = "";
element.style.MozTransform = "";
element.style.msTransform = "";
element.style.OTransform = "";
element.style.transform = "";

使用CSS时也是如此:

// loop from Alex' answer
Array.protoype.forEach.call(x, function(y) {
   y.classList.add('rotated');
});

CSS:

.rotated {
    -webkit-transform: rotate(180deg);
    -moz-transform: rotate(180deg);
    -ms-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    transform: rotate(180deg);
}

答案 2 :(得分:0)

嗨,请检查代码,

 <!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.0.x" src="https://code.angularjs.org/1.0.8/angular.js" data-semver="1.0.8"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>
    <div class="container-div {{rotateclass}}" ng-class="{{rotateclass}}">Hello</div>
    <button ng-click="handleAnchorClick()">Click me</button>

  </body>

</html>

和控制器

var app = angular.module('plunker', []);

app.controller('MainCtrl',function($ scope){   $ scope.name ='世界';

$scope.handleAnchorClick = function() {
   $scope.rotateclass = "roratediv"
};

});

并检查预览链接

https://plnkr.co/edit/Sp107XonpFuduCEQyccb?p=preview

答案 3 :(得分:0)

您可以按以下方式旋转它: 设置变量以定位元素 单击按钮时运行功能。 该函数采用div的样式并旋转180度

var button = document.querySelector('.button-they-can-click');
var gameWrap = document.querySelector('.game-wrapper');

button.addEventListener('click', function(){
  gameWrap.style.webkitTransform = 'rotate(180deg)';
  gameWrap.style.MozTransform = 'rotate(180deg)';
  gameWrap.style.msTransform = 'rotate(180deg)';
  gameWrap.style.OTransform = 'rotate(180deg)';
  gameWrap.style.transform = 'rotate(180deg)';
})

答案 4 :(得分:-1)

Hi please refer this link which i use the angular 

https://plnkr.co/edit/Sp107XonpFuduCEQyccb?p=preview