使用onclick旋转图像

时间:2013-01-18 10:11:34

标签: javascript jquery toggle

我尝试制作一个切换按钮,每次点击我的图像(箭头)将旋转180度:

<a href='#' onclick='$(\"#divToggle\").slideToggle(\"slow\");'>
<img src='blue_down_arrow.png' onclick='$(this).rotate(180);' /></a>

<div id='divToggle' style='display:none;'>...CONTENT...</div>";

此代码切换我的div,但图像仅在第一次点击时旋转,然后保持“向上”。我使用的是:http://code.google.com/p/jqueryrotate/

6 个答案:

答案 0 :(得分:3)

你可以写这样的。 demo

jQuery(document).ready(function(){
   var deg_temp =45;
  jQuery("#image1").click(function(){
     deg_temp = deg_temp+30;
  jQuery(this).rotate(deg_temp);
  })

});

答案 1 :(得分:2)

这是因为旋转角度的值是绝对值,而不是基于最后一次旋转。

工作代码:

<强>的jQuery

var rotate_factor = 0;

function rotateMe(e) {
    rotate_factor += 1;
    var rotate_angle = (180 * rotate_factor) % 360;
    $(e).rotate({angle:rotate_angle});
}

<强> HTML

<img src='blue_down_arrow.png' onclick='rotateMe(this);' /></a>

更新:更短的代码

var rotate_angle = 0;

<img src='blue_down_arrow.png' onclick='rotate_angle = (rotate_angle + 180) % 360; $(this).rotate(rotate_angle);' /></a>

答案 2 :(得分:2)

Click to see CSS3 transition demo

查看此演示。它使用CSS3进行过渡+变换旋转

.testRotate{
  -moz-transition: transform 1s;
  -webkit-transition: transform 1s;
  transition: transform 1s;
}

.testRotate:hover{
  transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
}

这些是这个演示的重要部分=)

答案 3 :(得分:1)

使用CSS3进行轮换:

  1. 在Mozilla Firefox中,这将是-moz-transform:rotate(180deg)
  2. 在基于Webkit的浏览器中,即Chrome:-webkit-transform:rotate(180deg)
  3. 在Opera中:-o-transform:rotate(180deg)
  4. 在IE中:-ms-transform:rotate(180deg)(仅限IE9)
  5. 在IE9之前:不太可能,需要使用Matrix Filter
  6. 使用jQuery rotate plugin统一所有浏览器差异。

答案 4 :(得分:1)

试试这个:

$('img').click(function(){
$('img').rotate({ angle: 0, bind:{
    "click":function(){
      $(this).rotate({animateTo:360});
    }
  }
 });
});

答案 5 :(得分:1)

这将使您能够执行每个clik

的额外轮换
var degrees = 0;
  $('.img').click(function rotateMe(e) {

    degrees += 90;

    //$('.img').addClass('rotated'); // for one time rotation

    $('.img').css({

      'transform': 'rotate(' + degrees + 'deg)',
      '-ms-transform': 'rotate(' + degrees + 'deg)',
      '-moz-transform': 'rotate(' + degrees + 'deg)',
      '-webkit-transform': 'rotate(' + degrees + 'deg)',
      '-o-transform': 'rotate(' + degrees + 'deg)'
    });

https://jsfiddle.net/Lnckq5om/1/