IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

[SRC] Un petit script de fading d'image


Sujet :

Contribuez

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut [SRC] Un petit script de fading d'image
    Problème récurrent de différence d'interprétation de l'opacité des images entre IE et FFX ...
    Resolu simplement ici avec un simple test sur document.all :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Fading Pic</title>
    </head>
     
    <body>
    <img id="spaffySpecial" src="lungs.gif" width=116 height=123 style="-moz-opacity:0;filter:alpha(opacity=0)">
    <br/>
    Opacité : <input type='text' id='result' style="width:40px;text-align:right;" />
    <script>
    var max = 100;
    var min = 0;
    var opacite=min;
    up=true;
    var IsIE=!!document.all;
    var ThePic=document.getElementById("spaffySpecial");
     
    function fadePic(){        
                    if (opacite<max && up){opacite+=2;}
                    if (opacite>min && !up){opacite-=2;}
                    if (opacite>=max){up=false;}
                    if (opacite<=min){up=true;}
     
    IsIE?ThePic.filters[0].opacity=opacite:document.getElementById("spaffySpecial").style.opacity=opacite/100;
    document.getElementById('result').value=opacite+"%"
    }
    setInterval(function(){fadePic();},100)
    </script>
    </body>
    </html>
    à noter que l'on pourrait changer l'image lorsque le min est atteint, ce qui donnerait un diaporama avec fade ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Un autre script en rapport direct avec la transparence, mais d'un autre type différent (simulation de boutons réactif avec une seule image) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <html>
        <head>
            <title>Opacity modifier</title>
            <script><!--
                getLocation=function(node) {
                    var loc = {"width":node.offsetWidth,"height":node.offsetHeight };
                	var left=node.offsetLeft;
                	var top =node.offsetTop;
                	while(node.offsetParent) {
                		node=node.offsetParent;
                		left+=node.offsetLeft;
                		top +=node.offsetTop;
                	}
                    loc.left=left;
                    loc.top=top;
                	return loc;
                }
     
                addOpacityChangeEffect=function(node, min, max) {
                    node.oo = document.createElement("div");
                    node.oo.realNode = node;
                    node.oo.style.backgroundColor="black";
                    node.oo.style.position="absolute";
                    // Opacité minimum (maximum -100: arrière-plan masqué)
                    // (souvent 0:transparent ou -15:masque éclaircissant)
                    node.oo.maxOpacity=max;
                    // Opacité maximum (maximum 100: arrière-plan masqué)
                    // (souvent p: trnasparent ou 15:masque noircissant)
                    node.oo.minOpacity=min;
                    node.oo.opacity=node.oo.maxOpacity;
                    node.oo.opacityModifier=0; // A laisser à 0 par défaut, taux de modification de l'opacité en [%/cs]
                    node.oo.onmouseover=function(e) {
                        try {
                        this.opacityModifier=-1; // L'opacité diminue de 1% chaque centième de secconde
                        this.realNode.onmouseover(e)
                        } catch (err) {}
                    }
                    node.oo.onmouseout=function(e) {
                        try {
                        this.opacityModifier=1; // L'opacité se renforce de 1% chaque centième de secconde
                        this.realNode.onmouseout(e)
                        } catch (err) {}
                    }
                    node.oo.onclick=function(e) {
                        try {
                        this.realNode.onclick(e)
                        } catch (err) {}
                    }
                    node.oo.onmouseup=function(e) {
                        try {
                        this.realNode.onmouseup(e)
                        } catch (err) {}
                    }
                    node.oo.onmousedown=function(e) {
                        try {
                        this.realNode.onmousedown(e)
                        } catch (err) {}
                    }
                    node.oo.onmouseenter=function(e) {
                        try {
                        this.realNode.onmouseenter(e)
                        } catch (err) {}
                    }
                    node.oo.onmouseleave=function(e) {
                        try {
                        this.realNode.onmouseleave(e)
                        } catch (err) {}
                    }
                    node.oo.update=function(node) {
                        try {
                        // Place le div au bon endroit
                        var loc=getLocation(node);
                        this.style.left=loc.left+"px";
                        this.style.width=loc.width+"px";
                        this.style.top=loc.top+"px";
                        this.style.height=loc.height+"px";
                        // Effectue le changement d'opacité (valeur)
                        this.opacity+=this.opacityModifier; 
                        if (this.opacity>this.maxOpacity) {this.opacity=this.maxOpacity;}
                        if (this.opacity<this.minOpacity) {this.opacity=this.minOpacity;}
                        // Détermine si il s'agit d'un éclaircicement ou d'un noirciement
                        var realOpacity = this.opacity
                        if (this.opacity<0) {
                            this.style.backgroundColor = "white"
                            realOpacity = (-realOpacity)
                        }
                        else {
                            this.style.backgroundColor = "black"
                        }
                        // Effectue le changement d'opacité (style)
                        this.style.opacity=(realOpacity/100); // FF
                        this.style.filter="alpha(opacity="+realOpacity+")" // IE
                        // Place le div au dessus de l'image
                        var zi = parseInt(node.style.zIndex);
                        if (zi < 0) { zi = 0 }
                        zi+=1;
                        this.style.zIndex=zi;
                        } catch (err) {}
                    }
                    setInterval(function() { node.oo.update(node); }, 10);
                    document.body.appendChild(node.oo);
                }
            --></script>
        </head>
        <body>
            <img 
                id="image1" name="image1"
                style="border: 2px outset; background-color: #E1E1E2"
                src="http://www.developpez.net/forums/images/logo16.gif" 
                onclick="window.location='http://www.developpez.net'"
                onmousedown="this.style.border='2px inset'"
                onmouseup="this.style.border='2px ouset'"
                onmouseout="this.style.border='2px outset'"
            />
            <script>addOpacityChangeEffect(document.getElementById("image1"), -15, 15);</script>
        </body>
    </html>
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Hello,

    Script testé SpaceFrog, c'est nickel, et ça pourrait être utile qu'il soit compatible Opera. On l'oublie trop souvent ce navigateur et pourtant il est "clean".

    a+
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par speedev Voir le message
    Hello,

    Script testé SpaceFrog, c'est nickel, et ça pourrait être utile qu'il soit compatible Opera. On l'oublie trop souvent ce navigateur et pourtant il est "clean".

    a+
    Je sais qu'en CSS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     -moz-opacity: 0.30; /* FF */
     opacity: 0.30; /* Opera et FF je crois*/ 
     filter : alpha(opacity=30); /* IE */
    SF a oublié la propriété opacity dans l'attribut style de la balise img, ce qui explique sans doute que le script ne fonctionne pas sous Opera (par contre il utilise bien la propriété opacity dans le script) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img id="spaffySpecial" src="lungs.gif" width=116 height=123 style="-moz-opacity:0;filter:alpha(opacity=0)">

    Dans le script j'aurais écrit (je ne sais pas si ça changera grand chose) :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("spaffySpecial").style.opacity=parseFloat(opacite/100);

  5. #5
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Oui Opera utilise aussi opacity.
    C'est ce qui manquait je pense en effet.
    Développeur Web sénior (2005) spécialisé Symfony2 - Je tiens mon petit blog tranquillement, viens faire un tour http://www.ikonenn.com

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    j'ai appris que Konqueror et Safari utilisaient la propriété :

    donc pour être complet :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     -moz-opacity: 0.30; /* ancienne version de FF */
     opacity: 0.30; /* Opera et FF */ 
     filter : alpha(opacity=30); /* IE */
     KhtmlOpacity : 0.30; /* Konqueror, Safari */

    la source date de 2006, je pense que c'est toujours d'actualité.

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    je pense qu'il serait bien également d'ajouter cette méthode en version prototype, puisqu'ici le fading n'agit que sur un élément de type image , même s'il est facilement adaptable , qu'en pensez vous ??
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    je pense qu'il serait bien également d'ajouter cette méthode en version prototype, puisqu'ici le fading n'agit que sur un élément de type image , même s'il est facilement adaptable , qu'en pensez vous ??
    Tu peux essayer et poster ton code à la suite

  9. #9
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par Auteur Voir le message
    la source date de 2006, je pense que c'est toujours d'actualité.
    Tant "-moz-opacity" (FireFox gère opacity depuis la 2.0) que "-khtml-opacity" (d'où le JS KhtmlOpacity) ne sont plus d'application (Safari gère Opacity depuis la 3.0, peut-être la 2.0, les dernières versions de konquéror aussi).
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  10. #10
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    je confirme , je n'utilise que opacity et filter:alpha(opacity... ) et compatible IE 6/7 FF et safari
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Fading Pic</title>
    <script type="text/javascript">
    //<![CDATA[
    var IsIE=!!document.all;
    function initialise(){
    	var opImg = document.getElementById('refImg').getElementsByTagName('img');
    	for(var i=0;i<opImg.length;i++){
    		if(IsIE){
    			opImg[i].style.filter='alpha(opacity=50)';
    			opImg[i].filters[0].opacity=50;
    		}
    		else{opImg[i].style.opacity='0.5';}
    		opImg[i].onmouseover = function(i){fadePic(this, 50, 100)}
    		opImg[i].onmouseout = function(i){fadePic(this, 100, 50)}
    	}
    }
    function fadePic(elt, debut, fin){
    	if(debut==fin){return false}
    	IsIE?elt.filters[0].opacity=debut:elt.style.opacity=debut/100;
    	debut>fin?debut-=2:debut+=2;
    	setTimeout(function(){fadePic(elt,debut,fin);},10);
    }
    //]]>
    </script>
    </head>
     
    <body>
    <img src="image1.jpg" alt="Image sans fading" />
    <br/>
    <div id="refImg">
    <img src="image1.jpg" alt="Image avec fading" />
    <br/>
    <img src="image2.jpg" alt="Image avec fading" />
    <br/>
    <img src="image3.jpg" alt="Image avec fading" />
    <br/>
    <img src="image4.jpg" alt="Image avec fading" />
    <br/>
    </div>
    </body>
    </html>
    Petite contribution sur la base du code initial de SpaceFrog.

    Le script n'influe que sur les images à l'intérieur du bloc 'refImg', il initialise l'opacité en javascript, donc peut être validé CSS (je sais, c'est un peu tricher...) et permet donc un effet survol des images sélectionnées.
    Testé sous ie6 (ietester), ie7, ff2, ff3, opera 9.50, safari 3
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. [JavaScript] [SRC] Script de fading non intrusif
    Par Bovino dans le forum Contribuez
    Réponses: 6
    Dernier message: 11/01/2010, 12h17
  2. Petit script d'images aléatoires avec lien
    Par Syntax-ERROR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 09/01/2007, 21h43
  3. [W3C] petit soucis d'alignement d'image..
    Par audax dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/02/2006, 00h10
  4. petit scripte a faire pour un l'ecole
    Par sircam61 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/12/2005, 14h44
  5. OUvrir un petit tableau au survol d'images
    Par Krispy dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 25/08/2005, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo