opacite

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : opacite

Re: opacite

par ema » 20 juil. 2011, 12:54

Merci Ryle de t'occuper de mes histoires de transparence, tu as réussi à simplifier mon code et je t'en remercie.
je vais l'essayer et je te tiens au courant, par ce forum...
A très bientôt
Emmanuelle

Re: opacite

par Ryle » 20 juil. 2011, 10:21

Je n'ai que IE8 a dispo, mais ça a l'air de fonctionner correctement...

Il n' y a pas de solution en "php" dans la mesure où ce n'est pas le serveur qui va gérer la transparence, mais bien le navigateur, donc tout va dépendre du html/css que tu lui envois.

Pour optimiser un peu ton code, ce que tu peux faire, c'est de n'appliquer le style que sur les éléments qui en ont besoin (inverser le if, et ne pas mettre de else) ... voire même plutôt qu'un style en dur dans le code, faire appel à une classe définie dans un de tes css...
if($idCarte != $var) {
                                        $opacity="style='filter:alpha(opacity=30);
                                                                        -moz-opacity:0.3;
                                                                        opacity:0.3;'";
}
Pour l'item sélectionné, pas de transparence, donc rien à ajouter.

Re: opacite

par ema » 19 juil. 2011, 13:04

Hello à tous, je reviens avec mes problèmes d'opacité car cela ne fonctionne toujours pas sous IE(aucune version) et que je ne sais plus ou chercher ! j'ai essayé avec tous les filtres proposés rien à faire, ma meilleure implementation est celle ci ! sic !

si quelqu'un avait une solution en php, il me semble que mon code serait plus propre ! merci d'avance à tous,
Cordialement
Emmanuelle

je rappelle l'adresse du site http://www.sushiboutik.com/ onglet carte et menu ....
if($idCarte == $var) {
					$opacity="style='filter:alpha(opacity=100);
									-moz-opacity:1;
									opacity:1;
									color:#e2001a;'";}
					else 
					$opacity="style='filter:alpha(opacity=30);
									-moz-opacity:0.3;
									opacity:0.3;'";

Re: opacite

par ema » 11 juil. 2011, 15:41

merci Ryle de tes reponses,

bizarrement, je n'arrive pas à faire fonctionner l'opacité qui se trouve dans la balise <a href..... > par contre sur la balise <img scr=... > l'opacité fonctionne, aurais tu déjà remarqué cela ? et je n'arrive à rien trouver sur les forums...

je te remercie de m'aider, vraiment....
très cordialement,
Emmanuelle

Re: opacite

par Ryle » 11 juil. 2011, 10:31

Apparement "filter: alpha(opacity=30);" ne fonctionne que pour IE5 à 7 ...
Pour IE 8, il faudrait utiliser :

Code : Tout sélectionner

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
En espérant que cela fonctionne avec IE9 (à tester)

Et pour être compatible IE 5 à 8 (vous moquez pas, vous n'imaginez pas le nombre de sociétés qui sont encore contraintes à utiliser IE6), il te faut les deux dans l'ordre suivant

Code : Tout sélectionner

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30);

Edit : à vérifier, il se peut qu'en ajoutant simplement un attribut "position:...;" ou "zoom:1;" le filter alpha fonctionne aussi ... mais ça reste à tester :)

Re: opacite

par ema » 11 juil. 2011, 09:55

Bonjour à tous, et merci à Ryle de m'avoir répondu aussi rapidement.

J'ai effectivement utilisé une variable que j'ai comparé à une autre variable ce qui m'a permis de faire un if, je vous mets le code ci dessous.

Je vous remet le code de la page mais c'est les variables
$var = $_GET['id_vet']; et   $idCarte = $vet['id_categorie_carte']; 
qui m'ont permis de faire le
if($idCarte == $var) {$opacity="style='-moz-opacity:1;opacity:1;filter:alpha(opacity=100)'";}
					else $opacity="style='-moz-opacity:0,3;opacity:0.3;filter:alpha(opacity=30)'";
Par contre, cela fonctionne sur Fifefox, opéra, safari, chrome et pas sur Internet Explorer, alors que j'utilise le filtre alpha, je ne vois pas ou cela peche... si quelqu'un a une idée...

merci à tous,
cordialement,
Emmanuelle

<?php
	
	session_start();
	$nav_en_cours = 'carte';
	require_once('inc/connexion_base.inc.php');
	include_once('inc/tete.inc.php');	
	$var = $_GET['id_vet'];
	
        /*premiere requete qui affiche les categories */
	$sql_b="SELECT * FROM categorie_carte ORDER BY id_categorie_carte ASC";
	$res_b=mysql_query($sql_b) or die("problème d'accès à la base");
	
        /*css conteneur general.css*/
		
	?>
       
	<div class="page">
        <div class="sousMenu">

		        <?php
        		
				/*css: collection.css*/
                while($vet=mysql_fetch_array($res_b)){
                  $idCarte = $vet['id_categorie_carte'];
                  $nomCarte = $vet['nom_categorie_carte'];
                  $imgCarte = $vet['img_categorie_carte'];
                
                    echo "<div class='produitCarte'>";
                    echo "<ul id='ulCarte'>";
					echo "<li id='liCarte' >";
					
					if($idCarte == $var) {$opacity="style='-moz-opacity:1;opacity:1;filter:alpha(opacity=100)'";}
					else $opacity="style='-moz-opacity:0,3;opacity:0.3;filter:alpha(opacity=30)'";

					echo "<a href=\"carte.php?id_vet=".$idCarte."\" ".$opacity." 
                     >".$nomCarte." </a></li>";
					
					echo "<li id='liImgCarte'>";
					echo "<a href=\"carte.php?id_vet=".$idCarte."\">"."<img src=\"".$imgCarte."\" 
                        border='0' align='center' alt=".$nomCarte." ".$opacity." /></a></li> ";
						
					echo "</ul></div>";
                    
               
          }?>
        </div> <!-- fin sous menu-->    
        
        <div class="conteneur_produits">
        <div class="afficheCarte">
            
    <?php 
        /* css collection.css **/
        /*deuxieme requete qui affiche les produits de la categorie sélectionnée*/
        /*1 si le type est non renseigne dans l'adresse, par defaut type = sushi, sinon adresse url (maki, makiS, CRolls... */

        /*la variable existe et qu'elle n'est pas vide ? */
        /*problème avec la variable par defaut et le if */
        

        $sql_sousCategorie="SELECT `nom_categorie_carte` FROM `categorie_carte` WHERE `id_categorie_carte`='$var'";
        $sousCat=mysql_query($sql_sousCategorie);
        $sousCatArray=mysql_fetch_array($sousCat, MYSQL_ASSOC);
        $nom_sousCat=$sousCatArray['nom_categorie_carte'];

        /**** le lien affiche la meme page avec un param supplémentaire : le type de produits fourni dans l'url*/
        $sql_produits="SELECT * FROM produits_carte, categorie_carte
                        WHERE categorie_carte.id_categorie_carte='$var'
                        AND produits_carte.sousCategorie = categorie_carte.nom_categorie_carte
                        ORDER BY nom_produits_carte ASC";

        $resProduits=mysql_query($sql_produits) or die("problème d'accès à la base"); 
        echo "<div class='titreProduits'>".$nom_sousCat."</div>";
        ?>

        <table class="produitsCarte" align="center">
             <?php 

        $i = 1; //initialisation du compteurs à 1
        $nbparligne = 2; // ici on indique le nombre d'alignement que l'on veut sur chaque ligne
        //echo '<tr>';

        while($prod=mysql_fetch_array($resProduits, MYSQL_ASSOC))
            {
            $image = $prod['img_produits_carte'];
            $nom = $prod['nom_produits_carte'];
            $pack = $prod['Packaging'];
            $prix = $prod['Prix'];
            if ($i==1)                              // Si $i est à 1 on est sur la cellule la plus à gauche
                {
                echo '<tr>';                        // On ouvre donc une ligne et aussi une cellule "gauche"
                echo "<td class='gauche'><img src=".$image." border='0' />
                        </td><td class='gaucheP'>
                            <div class='alignNom'>".$nom."</div>
                            <div class='alignPack'>".$pack."</div>
                            <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ferme la cellule gauche
                echo "<td class='pointilles'></td>";                   // Cellule pour mettre la ligne en pointillés
                }                                   // Fin du if
            if ($i<$nbparligne AND $i!=1)
                {
                echo "<td class='centre'><img src=".$image." border='0' />
                        </td><td class='centreP'>
                        <div class='alignNom'>".$nom."</div>
                        <div class='alignPack'>".$pack."</div>
                        <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ouvre une cellule de class "centre" pour afficher les produits qui sont au centre (ni à gauche ni à droite)
                echo "<td class='pointilles'></td>";                   // Cellule pour mettre la ligne en pointillés
                }
            if ($i==$nbparligne)
                {
                echo "<td class='gauche'><img src=".$image." border='0' />
                        </td><td class='gaucheP'>
                        <div class='alignNom'>".$nom."</div>
                        <div class='alignPack'> ".$pack."</div>
                        <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ouvre une cellule de class "droite" pour afficher les produits qui sont à droite
                echo "</tr>";                       // Comme on est à droite, on referme la ligne
                }
            if ($i<$nbparligne)
                {
                $i++;
                }
            else
                {
                $i=1;
                }

            } // Fin de la boucle

        ?>
        </table>
                
        </div> <!--fin du afficheProduits-->
        </div> <!--fin du conteneur produits-->
        </div> <!--fin page -->  
<?php
 include_once('inc/pied.inc.php'); // affichage du pied de page
?>

Re: opacite

par Ryle » 10 juil. 2011, 11:03

A priori il te suffit simplement de ne pas mettre d'opacité à 30% sur les liens qui ont été cliqués :)

Un simple test sur les valeurs récupérées en get ou en session te permettrait de savoir si oui ou non, tu dois ajouter tes infos sur le style par défaut. En fonction du résultat tu génères ou pas les attributs style, onmousexxx, ...

opacite

par ema » 10 juil. 2011, 10:08

Bonjour à toutes et à tous,

Je dois réaliser un affichage d'opacité sur une boucle while avec par défaut une opacité à 30% et lorsque le visiteur survole le lien l'opacité passe à 100%. Jusque là, tout va bien, j'utilise les onmouse over et out mais le client pour qui je travaille voudrait que le lien survolé et cliqué reste à 100% (comme il me semble un fil d’Ariane). J'ai donc introduit un onmouseup, onmousedown et onclick afin de garder l'opacité sur l'évènement de la souris.

Ma question est comment mettre une opacité par défaut sur le premier lien qui s'affiche sachant que je récupère une variable sur le get (id_vet=)?

Le site est visible à cette adresse http://www.sushiboutik.com/carte.php?id_vet=1

et je joins le code de ma page ci dessous :

Je vous remercie de votre lecture et de vos futures réponses,
Cordialement,
Emmanuelle

<?php
	
	session_start();
	$nav_en_cours = 'carte';
	require_once('inc/connexion_base.inc.php');
	include_once('inc/tete.inc.php');	
	
	
        /*premiere requete qui affiche les categories */
	$sql_b="SELECT * FROM categorie_carte ORDER BY id_categorie_carte ASC";
	
        $res_b=mysql_query($sql_b) or die("problème d'accès à la base");
	
        /*css conteneur general.css */
	?>
       
	<div class="page">
        <div class="sousMenu">

                <?php
                /*css: collection.css*/
                 while($vet=mysql_fetch_array($res_b)){
                     $idCarte = $vet['id_categorie_carte'];
                     $nomCarte = $vet['nom_categorie_carte'];
                     $imgCarte = $vet['img_categorie_carte'];
                     
                    echo "<div class='produitCarte'>";
                    echo "<ul id='ulCarte'>
                    <li id='liCarte'><a href=\"carte.php?id_vet=".$idCarte."\" 
                    style='opacity:0.3;filter:alpha(opacity=30)'
                    onmouseover='this.style.opacity=1;this.filters.alpha.opacity=100'
                    onmouseout='this.style.opacity=1;this.filters.alpha.opacity=100'
					onmousedown='this.style.opacity=1;this.filters.alpha.opacity=100'
					onmouseup='this.style.opacity=1;this.filters.alpha.opacity=100'
					onclick='this.style.opacity=1;this.filters.alpha.opacity=100' >".$nomCarte."</a></li>";

                    echo "<li id='liImgCarte'><a href=\"carte.php?id_vet=".$idCarte."\"
					style='opacity:0.3;filter:alpha(opacity=30)'
                    onmouseover='this.style.opacity=1;this.filters.alpha.opacity=100'
                    onmouseout='this.style.opacity=1;this.filters.alpha.opacity=100'
					onmousedown='this.style.opacity=1;this.filters.alpha.opacity=100'
					onmouseup='this.style.opacity=1;this.filters.alpha.opacity=100'
					onclick='this.style.opacity=1;this.filters.alpha.opacity=100'>"."<img src=\"".$imgCarte."\" 
                       border='0' alt=".$nomCarte." /></a></li>    
                    </ul></div>";   
                    
               
          }?>
        </div> <!-- fin sous menu-->    
        
        <div class="conteneur_produits">
        <div class="afficheCarte">
            
    <?php 
        /* css collection.css **/
        /*deuxieme requete qui affiche les produits de la categorie sélectionnée*/
        /*1 si le type est non renseigne dans l'adresse, par defaut type = sushi, sinon adresse url (maki, makiS, CRolls... */

        /*la variable existe et qu'elle n'est pas vide ? */
        /*problème avec la variable par defaut et le if */
        $var = $_GET['id_vet'];

        $sql_sousCategorie="SELECT `nom_categorie_carte` FROM `categorie_carte` WHERE `id_categorie_carte`='$var'";
        $sousCat=mysql_query($sql_sousCategorie);
        $sousCatArray=mysql_fetch_array($sousCat, MYSQL_ASSOC);
        $nom_sousCat=$sousCatArray['nom_categorie_carte'];

        /**** le lien affiche la meme page avec un param supplémentaire : le type de produits fourni dans l'url*/
        $sql_produits="SELECT * FROM produits_carte, categorie_carte
                        WHERE categorie_carte.id_categorie_carte='$var'
                        AND produits_carte.sousCategorie = categorie_carte.nom_categorie_carte
                        ORDER BY nom_produits_carte ASC";

        $resProduits=mysql_query($sql_produits) or die("problème d'accès à la base"); 
        echo "<div class='titreProduits'>".$nom_sousCat."</div>";
        ?>

        <table class="produitsCarte" align="center">
             <?php 

        $i = 1; //initialisation du compteurs à 1
        $nbparligne = 2; // ici on indique le nombre d'alignement que l'on veut sur chaque ligne
        //echo '<tr>';

        while($prod=mysql_fetch_array($resProduits, MYSQL_ASSOC))
            {
            $image = $prod['img_produits_carte'];
            $nom = $prod['nom_produits_carte'];
            $pack = $prod['Packaging'];
            $prix = $prod['Prix'];
            if ($i==1)                              // Si $i est à 1 on est sur la cellule la plus à gauche
                {
                echo '<tr>';                        // On ouvre donc une ligne et aussi une cellule "gauche"
                echo "<td class='gauche'><img src=".$image." border='0' />
                        </td><td class='gaucheP'>
                            <div class='alignNom'>".$nom."</div>
                            <div class='alignPack'>".$pack."</div>
                            <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ferme la cellule gauche
                echo "<td class='pointilles'></td>";                   // Cellule pour mettre la ligne en pointillés
                }                                   // Fin du if
            if ($i<$nbparligne AND $i!=1)
                {
                echo "<td class='centre'><img src=".$image." border='0' />
                        </td><td class='centreP'>
                        <div class='alignNom'>".$nom."</div>
                        <div class='alignPack'>".$pack."</div>
                        <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ouvre une cellule de class "centre" pour afficher les produits qui sont au centre (ni à gauche ni à droite)
                echo "<td class='pointilles'></td>";                   // Cellule pour mettre la ligne en pointillés
                }
            if ($i==$nbparligne)
                {
                echo "<td class='gauche'><img src=".$image." border='0' />
                        </td><td class='gaucheP'>
                        <div class='alignNom'>".$nom."</div>
                        <div class='alignPack'> ".$pack."</div>
                        <div class='alignPrix'>".$prix."&nbsp;€</div></td>";
                echo '</td>';                       // On ouvre une cellule de class "droite" pour afficher les produits qui sont à droite
                echo "</tr>";                       // Comme on est à droite, on referme la ligne
                }
            if ($i<$nbparligne)
                {
                $i++;
                }
            else
                {
                $i=1;
                }

            } // Fin de la boucle

        ?>
        </table>
                
        </div> <!--fin du afficheProduits-->
        </div> <!--fin du conteneur produits-->
        </div> <!--fin page -->  
<?php
 include_once('inc/pied.inc.php'); // affichage du pied de page
?>