script.aculo.us - Criar controles deslizantes

Os controles deslizantes são trilhas finas com uma ou mais alças que o usuário pode arrastar ao longo da trilha.

O objetivo de um controle deslizante é fornecer um método de entrada alternativo para definir um valor numérico; o controle deslizante representa um intervalo e deslizar uma alça ao longo da trilha define um valor dentro desse intervalo.

Os controles deslizantes podem estar na orientação horizontal ou vertical. Quando horizontal, a extremidade esquerda da trilha geralmente representa o valor mais baixo, enquanto na orientação vertical, a parte inferior do slide geralmente é o valor mais baixo.

Para usar os recursos de controle deslizante do script.aculo.us, você precisará carregar o módulo slider.js junto com o módulo prototype.js. Portanto, seu carregamento mínimo para script.aculo.us será semelhante a este -

<script type = "text/javascript" src = "/javascript/prototype.js"></script>
<script type = "text/javascript" src = "/javascript/scriptaculous.js?load=slider">< /script>

Criação de um controle deslizante

Criar um controle deslizante é, como de costume, uma questão de construir um objeto personalizado sobre alguns elementos existentes no DOM da sua página. Você precisará de dois elementos aqui, um para a alça e outro para a pista da seguinte forma -

new Control.Slider(handle, track [ , options ] );

O elemento track é geralmente um <div>, e o elemento handle é um <div> ou <span> dentro do elemento track. Ambos podem ser passados ​​por id = ou por referências diretas ao DOM, como de costume.

Opções de controles deslizantes

Você pode usar uma ou mais das seguintes opções ao criar seu objeto Slider.

Sr. Não Opção e descrição
1

Axis

Define a orientação do controle como horizontal ou vertical . A orientação padrão é horizontal .

2

Range

Define o intervalo dos valores do controle deslizante como uma instância de uma instância Prototype ObjectRange. O padrão é 0 a 1.

3

Values

Define o conjunto discreto de valores que o controle deslizante pode adquirir. Se omitido, todos os valores dentro do intervalo podem ser definidos.

4

sliderValue

Define o valor inicial do controle deslizante. Se omitido, o valor representado pela extremidade esquerda (ou superior) do controle deslizante é o valor inicial.

5

Disabled

Se verdadeiro, ele cria um slide que é inicialmente desativado. Obviamente, o padrão é falso.

6

setValue

Irá atualizar o valor do controle deslizante e, assim, mover a alça do controle deslizante para a posição apropriada.

7

setDisabled

Irá definir o controle deslizante para o estado desativado (desativado = verdadeiro).

8

setEnabled

Irá definir o controle deslizante para o estado ativado (desativado = falso).

Você pode fornecer os seguintes retornos de chamada no parâmetro de opções -

Sr. Não Opção e descrição
1

onSlide

Chamado sempre que o Slider é movido arrastando. A função chamada obtém o valor do controle deslizante como seu parâmetro.

2

onChange

Chamado sempre que o Slider termina de se mover ou tem seu valor alterado por meio da função setSlider Value. A função chamada obtém o valor do controle deslizante como seu parâmetro.

Exemplo de controles deslizantes

<html>
   <head>
      <title>Sliders Example</title>
		
      <script type = "text/javascript" src = "/javascript/prototype.js"></script>
      <script type = "text/javascript" src = "/javascript/scriptaculous.js?load = slider" ></script>
		
      <script type = "text/javascript">
         window.onload = function() {
            new Control.Slider('handle1' , 'track1',{
            range: $R(1,100), values: [1,25,50,75,100], sliderValue: 1, onChange: function(v){ $('changed').innerHTML = 'Changed Value : '+v;
               },

            onSlide: function(v) {
               $('sliding').innerHTML = 'Sliding Value: '+v; } }); new Control.Slider('handle2' , 'track2', { range: $R(1,100),
               axis:'vertical',
               sliderValue: 1,
               onChange: function(v){
                  $('changed').innerHTML = 'Changed Value : '+v; } onSlide: function(v) { $('sliding').innerHTML = 'Sliding Value: '+v;
               }
            });
         }
      </script>
		
      <style type = "text/css">
         h1{ font-size: 1.5em; }
			
         .track {
            background-color: #aaa;
            position: relative;
            height: 0.5em; width: 10em;
            cursor: pointer; z-index: 0;
         }
			
         .handle {
            background-color: red;
            position: absolute;
            height: 1em; width: 0.25em; top: -0.25em;
            cursor: move; z-index: 2;
         }
			
         .track.vertical { 
            width: 0.5em; height: 10em; 
         }
			
         .track.vertical .handle {
            width: 1em; height: 0.25em; top: 0; left: -0.25em; 
         }
      </style>
   </head>

   <body>
      <h1>Simple sliders</h1>

      <div id = "track1" class = "track" style = "width: 20em;" >
         <div id = "handle1" class = "handle" style = "width: 0.5em;" ></div>
      </div>

      <p id = "sliding" ></p>
      <p id = "changed" ></p>

      <div id = "track2" class = "track vertical" style = "position: absolute; left: 25em;  top: 3em;" >
         <div id = "handle2" class = "handle" style = "height: 0.5em;" ></div>
      </div>
   </body>
</html>

Pontos a serem observados:

  • Você pode alterar a imagem do controle deslizante de qualquer controle deslizante usando CSS. Use as propriedades CSS background-image: url (track.gif) e background-repeat: no-repeat para definir a imagem do controle deslizante.

  • O valor do intervalo pode ser especificado usando $R(minValue, MaxValue). For example, $R (1,100).

  • O valor do intervalo pode ser especificado em termos de valores específicos. Por exemplo, valores: [1,25,50,75,100]. Nesse caso, o controle deslizante só alcançaria os valores discretos listados conforme a alça fosse movida.

  • A qualquer momento, o valor do controle deslizante pode ser definido sob o controle do programa chamando o método setValue () da instância do controle deslizante, como em: sliderInstance.setValue (50);

Isso produzirá o seguinte resultado -