вращение вентилятора вокруг своей оси
Добрый день.
Пытаюсь написать скрипт по вращению вентилятора вокруг своей оси: вот ссылка, работает более-менее только в FF: http://test.w-complex.ru/mac/control...rol_panel.html Задача моя такая, при нажатии на кнопку пуск, вентилятор должен вращаться, при нажатии на стоп - останавливаться. Но работает, как я уже сказала в FF, и то не стабильно, в осталных браузерах кнопка стоп не срабатывает. Еще, если два раза нажать на пуск, то вентилятор ускоряет свое движение, а это не нужно. И кнопка стоп в этом случае не срабатывате. Если у вас какие-н варианты решения этой задачи? Вот скрипт:
function startRound()
{
document.getElementById('stop').style.background = '#e8c1c2';
var el = document.getElementById('vent_img');
this.Elem = '';
moveRound(el);
}
function moveRound(el)
{
if (this.Elem == '')
{
this.Elem = el;
this.Degree = 0;
this.intid = setInterval (moveRound, 1);
}
else
{
if (this.Degree > 100000) {this.Degree = 0}
this.Degree += 2;
var txt = 'transform: rotate(' + this.Degree + 'deg); '; // FireFox
txt += '-webkit-transform: rotate(' + this.Degree + 'deg); '; // Safari & Chrome
txt += '-o-transform: rotate(' + this.Degree + 'deg); '; // Opera
this.Elem.style.cssText = txt;
}
if (document.getElementById('stop').style.background == 'none repeat scroll 0% 0% rgb(237, 28, 36)')
{
clearInterval(this.intid);
}
}
function stopRound()
{
document.getElementById('stop').style.background = '#ED1C24';
}
<ul class="ventilator">
<li class="start" onclick="startRound();">ПУСК</li>
<li class="stop" id="stop" onclick="stopRound()">СТОП</li>
<li class="vent"><img src="img/ventilater_small1.png" alt="" id="vent_img"></li>
</ul>
.ventilator .start{
margin-top: 16px;
padding: 5px 22px;
border:1px solid #cdcfce;
background: #bdd9bf;
}
.main .ventilator .stop{
margin-top: 16px;
padding: 5px 22px;
border:1px solid #cdcfce;
background: #e8c1c2;
}
.ventilator .start:hover{
border: 1px solid #59595b;
background: #28b532;
}
.ventilator .stop:hover{
border: 1px solid #59595b;
background: #ED1C24;
}
|
Ну так а кто мешает отслеживать состояние этого вентилятора через переменные. Как-нибудь так: http://learn.javascript.ru/play/CbSJRb
И зачем такой дикий таймер, не проще увеличить интервал и добавлять больше градусов? ИЛи вообще использовать CSS анимацию. |
Спасибо, помогли)
|
<style type="text/css">
#vent_img {
display: inline-block;
-webkit-animation: imageRotate 1s linear infinite;
-o-animation: imageRotate 1s linear infinite;
animation: imageRotate 1s linear infinite;
}
@-webkit-keyframes imageRotate {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
@-o-keyframes imageRotate {
from {
-o-transform: rotate(0deg);
}
to {
-o-transform: rotate(360deg);
}
}
@keyframes imageRotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>
<ul class="ventilator">
<li class="start" onclick="startRound();">ПУСК</li>
<li class="stop" id="stop" onclick="stopRound()">СТОП</li>
<li class="vent"><img src="http://test.w-complex.ru/mac/control_panel/img/ventilater_small1.png" alt="" id="vent_img"></li>
</ul>
<script>
function startRound() {
document.getElementById('vent_img').style.cssText =
'-webkit-animation-play-state:running;-o-animation-play-state:running;animation-play-state:running;';
}
function stopRound() {
document.getElementById('vent_img').style.cssText =
'-webkit-animation-play-state:paused;-o-animation-play-state:paused;animation-play-state:paused;';
}
</script>
|
| Часовой пояс GMT +3, время: 19:44. |