English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Com JavaScript, você pode escrever scripts SVG. Através da escrita de scripts, você pode modificar elementos SVG, configurar animações ou ouvir eventos de mouse em formas. Quando SVG é integrado à página HTML, você pode usar elementos SVG no JavaScript.
Pode-se escrever scripts SVG usando JavaScript. Ao escrever scripts, pode-se modificar elementos SVG, configurar suas animações ou ouvir eventos do mouse em formas.
Quando o SVG é incorporado na página HTML, pode-se usar o elemento SVG no JavaScript, como se fossem elementos HTML. O JavaScript parece o mesmo.
Este artigo mostra como manipular elementos SVG com JavaScript, mas não explica o JavaScript em si. Para entender os exemplos deste artigo, você precisa já ter um conhecimento básico do JavaScript.
Este é um exemplo simples de script SVG, que altera o tamanho do retângulo SVG ao clicar no botão.
<svg width="500" height="100"> <rect id="rect1" x="10" y="10" width="50" height="80" style="stroke:#000000; fill:none"/> </svg> <input id="button1" type="button" value="Change Dimensions" onclick="changeDimensions()"/> <script> function changeDimensions() { document.getElementById("rect1).setAttribute("width", "10); } </script>Teste para ver‹/›
Tente clicar no botão para ver o que acontece.
Você pode usar a função document.getElementById() para obter a referência para a forma SVG. Este é um exemplo:
var svgElement = document.getElementById("rect1);
Este exemplo obtém a referência para o ID 'rect1da referência do elemento SVG (o ID está especificado na propriedade id do elemento SVG).
Uma vez obtida a referência do elemento SVG, pode-se usar a função setAttribute() para alterar suas propriedades. Este é um exemplo:
var svgElement = document.getElementById("rect1);svgElement.setAttribute("width", "10);
Este exemplo configura a propriedade width do elemento SVG selecionado. Você pode usar a função setAttribute() para configurar qualquer outra propriedade, incluindo a propriedade style.
Você também pode usar a função getAttribute() para obter o valor da propriedade. Este é um exemplo:
var svgElement = document.getElementById("rect1);var width = svgElement.getAttribute("width");
Através da propriedade style do elemento SVG, pode-se referenciar propriedades CSS fornecidas para alterar as propriedades CSS do elemento SVG. Abaixo está um exemplo de configuração da propriedade CSS stroke:
var svgElement = document.getElementById("rect1); svgElement.style.stroke = "#ff0000";
Você também pode definir qualquer outra propriedade CSS dessa forma. Basta colocar o nome no svgElement.style. na linha seguinte e configurá-lo com algum valor.
Você também pode ler o valor de uma propriedade CSS através da propriedade style. Este é um exemplo:
var svgElement = document.getElementById("rect1); var stroke = svgElement.style.stroke;
Este exemplo lê o valor da propriedade CSS stroke.
nomes de propriedades CSS que contêm hífens (por exemplo, stroke-width) precisa ser referenciado através da construção de ['']. Isso é porque nomes de propriedades com hífen são inválidos no JavaScript. Portanto, você não pode escrever
element.style.stroke-width
ao contrário, você deve escrever
element.style['stroke-width"]
Dessa forma, você também pode usar o hífen no nome para referenciar propriedades CSS.
Você pode adicionar ouvintes de evento diretamente ao SVG de acordo com sua necessidade. Trate-o da mesma forma que os elementos HTML. Este é um exemplo de adição de ouvintes de eventos onmouseover e onmouseout:
<svg width="500" height="100"> <rect x="10" y="10" width="100" height="75" style="stroke: #000000; fill: #eeeeee;" onmouseover="this.style.stroke = '#ff0000'; this.style['stroke-width'] = 5;" onmouseout="this.style.stroke = '#000000'; this.style['stroke-width'] = 1;" /> </svg>Teste para ver‹/›
Este exemplo muda a cor do traço e a largura do traço quando o mouse está sobre o retângulo e redefine a cor do traço e a largura do traço quando o mouse sai do retângulo. Você pode tentar o seguinte exemplo. Tente mover o mouse sobre a forma e, em seguida, novamente sair, para ver o efeito do ouvinte de evento.
Você ainda pode usar a função addEventListener() para anexar um ouvinte de evento ao elemento SVG. Este é um exemplo:
var svgElement = document.getElementById("rect1); svgElement.addEventListener("mouseover", mouseOver); function mouseOver() { alert("evento acionado!"); }
Este exemplo adiciona uma função ouvinte de evento chamada MouseOver ao evento MouseOver. Isso significa que, sempre que o usuário passar o mouse sobre o elemento SVG, a função ouvinte de evento será chamada.
Para que a forma SVG tenha efeito de animação, você precisa chamar repetidamente a função JavaScript. A função é usada para alterar a posição ou tamanho da forma. Quando a função é chamada repetidamente e com intervalos muito curtos, a posição ou tamanho da forma também são atualizados com intervalos muito curtos, o que faz a forma parecer que está animando.
Este é um exemplo de animação de script SVG. Abaixo do exemplo, mostra o código que o cria. Clique nos dois botões abaixo da imagem SVG para começar e parar a animação.
Este é o código necessário para gerar a animação acima:
<svg width="500" height="100"> <circle id="circle1" cx="20" cy="20" r="10" style="stroke: none; fill: #ff0000;"/> </svg> <script> var timerFunction = null; function startAnimation() { if(timerFunction == null) { timerFunction = setInterval(animate, 20); } } function stopAnimation() { if(timerFunction != null){ clearInterval(timerFunction); timerFunction = null; } } function animate() { var circle = document.getElementById("circle1); var x = circle.getAttribute("cx"); var newX = 2 + parseInt(x); if(newX > 500) { newX = 20; } circle.setAttribute("cx", newX); } </script> <br/> <input type="button" value="Iniciar animação" onclick="startAnimation();"> <input type="button" value="Parar animação" onclick="stopAnimation();">Teste para ver‹/›
›2Esses dois botões HTML têm um ouvinte de evento onclick. Esses ouvintes chamam as funções startAnimation() e stopAnimation(), que são usadas para iniciar e parar a animação. A animação começa configurando um temporizador, que
0 milissegundos para chamar a função Animate(). Novamente, limpar esta função de temporizador pode parar a animação.2A animação é executada dentro da função animate(). Primeiro, a função obtém uma referência ao elemento <circle> na imagem SVG usando a função document.getElementById(). Em seguida, lê a propriedade cx do círculo e a converte em número. Em seguida,5Adicione ao valor de cx. Se o novo valor de x for maior que200,então redefina-o para