Accueil > > > DU DOM EN SVG : UNE HORLOGE ANALOGIQUE
DU DOM EN SVG : UNE HORLOGE ANALOGIQUE
Information sur la source
Description
le SVG est un format xml qui decrit une image vectorielle, ca permet de faire generer a du php ou autre, du svg, et ca permet a du javascript de manipuler du svg... c'est cet apsect des choses que nous testerons :) demo en ligne http://coucou747.hopto.org/site/clock.svg MS IE ne le fait toujours pas tourner, il ne sait lire le svg que si on lui donne un joli plugin, c'est domage, firefox supporte ca depuis plus d'un an, et c'est desormais un standard du W3C (donc ca devrait vennir sous IE normalement) On utilise le DOM pour modifier les attributs et pour ajouter au chargement les petits cercles qui indiquent heures, quart d'heures et minutes
Source
- <?xml version="1.0" standalone="no"?>
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
- <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" >
- <g stroke="black">
- <line x1="50" x2="50" y1="50" y2="5" stroke-width=".5" id="secondes" />
- <line x1="50" x2="50" y1="50" y2="15" stroke-width="1" id="minutes" />
- <line x1="50" x2="50" y1="50" y2="25" stroke-width="1.5" id="heures" />
- </g>
- <g stroke="black" id="marques">
- <circle cx="50" cy="50" r="3" stroke-width="1" fill="white" id="small"/>
- </g>
- <script type="text/javascript">
- <![CDATA[
- var SVG_NS ="http://www.w3.org/2000/svg";
- const pi=3.141592754
- function ANIM(){
- a=new Date();
- h=a.getHours()%12;
- m=a.getMinutes();
- s=a.getSeconds();
- m+=s/60;
- h+=m/60;
- document.getElementById("heures").setAttribute("x2", Math.cos((h-3)/6*pi)*25+50);
- document.getElementById("heures").setAttribute("y2", Math.sin((h-3)/6*pi)*25+50);
- document.getElementById("minutes").setAttribute("x2", Math.cos((m-15)/30*pi)*35+50);
- document.getElementById("minutes").setAttribute("y2", Math.sin((m-15)/30*pi)*35+50);
- document.getElementById("secondes").setAttribute("x2", Math.cos((s-15)/30*pi)*45+50);
- document.getElementById("secondes").setAttribute("y2", Math.sin((s-15)/30*pi)*45+50);
- setTimeout("ANIM()", 1000);
- }
- ANIM(); // appel de l\'animation
- var p=document.getElementById("marques");
- var b=document.getElementById("small");
- for (i=0;i<60;i++){
- a=document.createElementNS(SVG_NS, "circle");
- a.setAttribute("cx", Math.cos((i-15)/30*pi)*47+50);
- a.setAttribute("cy", Math.sin((i-15)/30*pi)*47+50);
- a.setAttribute("r", "2");
- if (i%15==0){
- a.setAttribute("fill", "black");
- }else if (i%5==0){
- a.setAttribute("fill", "gray");
- }else{
- a.setAttribute("fill", "white");
- }
- a.setAttribute("stroke-width", "0.3");
- p.appendChild(a);
- }
- ]]>
- </script>
- </svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" >
<g stroke="black">
<line x1="50" x2="50" y1="50" y2="5" stroke-width=".5" id="secondes" />
<line x1="50" x2="50" y1="50" y2="15" stroke-width="1" id="minutes" />
<line x1="50" x2="50" y1="50" y2="25" stroke-width="1.5" id="heures" />
</g>
<g stroke="black" id="marques">
<circle cx="50" cy="50" r="3" stroke-width="1" fill="white" id="small"/>
</g>
<script type="text/javascript">
<![CDATA[
var SVG_NS ="http://www.w3.org/2000/svg";
const pi=3.141592754
function ANIM(){
a=new Date();
h=a.getHours()%12;
m=a.getMinutes();
s=a.getSeconds();
m+=s/60;
h+=m/60;
document.getElementById("heures").setAttribute("x2", Math.cos((h-3)/6*pi)*25+50);
document.getElementById("heures").setAttribute("y2", Math.sin((h-3)/6*pi)*25+50);
document.getElementById("minutes").setAttribute("x2", Math.cos((m-15)/30*pi)*35+50);
document.getElementById("minutes").setAttribute("y2", Math.sin((m-15)/30*pi)*35+50);
document.getElementById("secondes").setAttribute("x2", Math.cos((s-15)/30*pi)*45+50);
document.getElementById("secondes").setAttribute("y2", Math.sin((s-15)/30*pi)*45+50);
setTimeout("ANIM()", 1000);
}
ANIM(); // appel de l\'animation
var p=document.getElementById("marques");
var b=document.getElementById("small");
for (i=0;i<60;i++){
a=document.createElementNS(SVG_NS, "circle");
a.setAttribute("cx", Math.cos((i-15)/30*pi)*47+50);
a.setAttribute("cy", Math.sin((i-15)/30*pi)*47+50);
a.setAttribute("r", "2");
if (i%15==0){
a.setAttribute("fill", "black");
}else if (i%5==0){
a.setAttribute("fill", "gray");
}else{
a.setAttribute("fill", "white");
}
a.setAttribute("stroke-width", "0.3");
p.appendChild(a);
}
]]>
</script>
</svg>
Conclusion
j'ai eu du mal a trouver que createElement ne fonctionnait pas et qu'il fallait utiliser createElementNS (appendChild ne fonctionnait pas avec createElement)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
javascipt [ par bichonade ]
bonjour,je continue a "programmer" en javascript et HTML mais je suis un peu embete parceque j'aimerais insérer une image vectorielle a lin
horloge analogique [ par yanne1985 ]
salut tout le monde j'ai telechargé un codes source d'une montre analogique dont le type du fichier est js svp comment je peux l'afficher sur une
Horloge analogique [ par monetoile ]
BonjourJe suis débutante et je voudrais savoir comment installer une horloge analogique J'ai le script java html qu'une amie ma fait, mais je ne sais
surveiller une fonction [ par karakvb ]
Bonjour,il y a t'il un moyen pour savoir lorsqu'une fonction javascript est appelée?par exemple, j'ai un fichier js qui contient une fonction qui se c
mettr a jour svg avec xml httprequest [ par oussamatique ]
oussama bsr tout le mondej'ai créé une carte dynamyque sous svg maintenant je veux utilisé la technologé ajax en plus précis le xml h
impression + dessin SVG [ par gillespockpock ]
Bonjour, je suis sur un projet Javascript + html et j'utilise le SVG pour tracer des courbes. Le problème est que lorsque je veux imprimer la page HTM
Svg avec scrollbar [ par DJIGO84 ]
Bonjour tout le monde j'ai un document SVG et j'y ajoute dynamiquement des elements (avec javascript) à savoir des rectangles,cercles...Cepandant j'
svg + audio [ par RIMADANCE1 ]
Bonjour, j'ai à faire un jeu de carte en svg mais j'ai un problème avec l'audio. voilà le code:<?xml version="1.0" encoding="UTF-8" standalone="n
|
Derniers Blogs
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Magic
Entre 429€ et 429€
|