Archive

Posts Tagged ‘spinner’

ASCII spinner в HTML с JavaScript

December 31st, 2008 2 comments

Харесвам, когато има някакво въртящо се gif-че, което симулира прогрес при някакъв процес. Ето защо направих пренасочващата главна страница да се държи по подобен начин. Вложената доза шега е… Огромна и е породена от НАЙ-НАЙ-прекрасния торент клиент за мен – ctorrent. Няма значение, отплеснах се…

Като цяло не е нищо кой-знае какво, просто първата идея за имплементация, за която се сетих. Какво представлява: масив с 4 елемента – “\”, “|”, “/” и “-”, които непрекъснато се показват един след друг през определено време. Спинър-а не е cвързан с извършения прогрес! Трябва ни html страница и малко JavaScript. Ето JS-a:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<script type="text/javascript">
  var spinnerElements = new Array("\\", "|", "/", "-");
  var spinnerIntervalId;
  var prevIndex = 0;

  function getById(elementId) {
    if (document.getElementById) {
      return document.getElementById(elementId);
    } else if (document.all) {
      return document.all[elementId];
    } else if (document.layers) {
      return document.layers[elementId];
    }
    return null;
  }

  function setSpinnerValue(value) {
    getById("spinner").innerHTML = value;
  }

  function getNextValue() {
    if (prevIndex >= spinnerElements.length) {
      prevIndex = 0;
    }
    var value = spinnerElements[prevIndex];
    prevIndex++;
    return value;
  }

  function startSpinner() {
    spinnerIntervalId = setInterval("setSpinnerValue(getNextValue());", 250);
  }

  function stopSpinner() {
    if (spinnerIntervalId != null) {
      clearInterval(spinnerIntervalId);
      spinnerIntervalId = null;
    }
  }
</script>

Малко CSS:

1
2
3
4
5
6
7
8
9
10
<style type="text/css">
  span#spinner {
    font-size:    16pt;
    font-weight:  bold;
  }

  a {
    color:      #0000EE;
  }
</style>

И няколкото реда HTML:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Spinner</title>
  </head>
  <body>
    <a href="#" onClick="startSpinner();">start</a>
    <a href="#" onClick="stopSpinner();">stop</a>
    <span> [ <span id="spinner">-</span> ]</span>
  </body>
</html>

Целият файл под формата на демо може да се види тук.