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

Mise en page CSS Discussion :

Pour qu'un élément contenu n'hérite pas de l'opacité de son contenant


Sujet :

CSS

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut Pour qu'un élément contenu n'hérite pas de l'opacité de son contenant
    Bonjour,

    j'ai un div A général avec une opacité à 0.9, je voudrais que le div B à l'intérieur du A soit à une opacité de 1. Mais je n'y arrive pas vu qu'il hérite de A sur l'opacité.

    Savez vous comment je pourrais procéder?

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Au lieu d'opacity, utilise la notation background: rgba() pour div A (et des png pour les images semi-transparentes du div A).

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 63
    Points : 51
    Points
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    div#B {
         opacity:1;
    }
    Devrait fonctionner.

  4. #4
    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 : 54
    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
    Citation Envoyé par Pauloscorps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    div#B {
         opacity:1;
    }
    Devrait fonctionner.

    Non, ça ne fonctionnera pas.

    L'opacité d'un élément se répercute sur ses éléments enfants.
    Préciser une opacité de 1 sur le div enfant signifie uniquement que ce 1 s'applique au niveau d'opacité du parent (c'est-à-dire 0.9).
    Et il n'y a pas moyen de "réinitialiser" le niveau d'opacité.

  5. #5
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut
    Mouai, c'est ce que je craignais

    C'est dommage.

    Pour les png j'aimerais éviter d'avoir à faire tout un tas de traffics. J'ai en fait une image en background du body et je voulais que le container principal contenu dans le body laisse passer un peu cette image avec une opacité de 0.8, et à l'intérieur de ce body qui dans mon exemple correspondrait au div A, je voulais rajouter des photos mais elles m'apparaissent avec la transparence du div A, et une image avec une l'image du background derrière, c'était totalement inesthétique.

    du coup j'ai abandonné l'idée de faire de la transparence sur mon div A, c'est pas grave. Merci pour la confirmation.

  6. #6
    Membre expert
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    Points : 3 861
    Points
    3 861
    Billets dans le blog
    6
    Par défaut div B opacité 1 dans div A plus clair
    Solution possible.

    Exemple de code HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <!doctype html>
    <html lang="fr">
    	<head>
    		<meta charset="utf-8" />
    		<link href="/test.css" rel="stylesheet" />
    		<title>Test opacité</title>
    	</head>
    	<body>
    			<!--La boite B dans la boite A-->
    			<div id="A">
    				<div id="B"></div>
    			</div>
    	</body>
    </html>

    Exemple de CSS:
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /*Le gros conteneur A a une opacité de 0.6 (mode de couleur rgba)*/
    #A {width: 80%; height: 20em; margin-left: 10%; background-color: rgba(50,50,50,0.6);}
    /*Le petit conteneur B a une opacité de 1*/
    #B {width: 40%; height: 20%; position: relative; left: 30%; top: 40%; background-color: rgba(50,50,50,1);}

    Le résultat :

  7. #7
    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 : 54
    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
    Attention toutefois qu'IE < 9 ne reconnait pas les couleurs en rgba, il faut donc doubler la déclaration afin de faire un fallback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #A {
      width: 80%;
      height: 20em;
      margin-left: 10%;
      background-color: rgb(50,50,50);
      background-color: rgba(50,50,50,0.6);
    }

  8. #8
    Membre expert
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    Points : 3 861
    Points
    3 861
    Billets dans le blog
    6
    Par défaut
    Tout à fait ! Merci de l'avoir précisé.

    Mais dans ce cas, j'imagine que le code "rgb" est consacré aux IE < 9… Et on se retrouve avec le même problème pour ces navigateurs, c'est-à-dire pas d'opacité… et retour aux solutions des png. Idem pour le svg, qui ne semble pas supporté sous IE < 9.

    Néanmoins, c'est une bon réflexe que de prévenir la dégradation de la page.

  9. #9
    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 : 54
    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
    Oui, c'est ça.
    Tous les navigateurs interpréteront le mode rgb(), mais ceux qui reconnaissent rgba() écraseront cette déclaration alors que les autres se passeront de l'opacité.

  10. #10
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut
    MILLE EXCUSES, j'avais mal lu la réponse de Tsilefy en fait c'est bien ça et ça fonctionne, merci Muchos car il faut effectivement passer l'opacité dans le rgba et merci Bovino de me prévenir pour IE qui me donne toujours autant de "bonheur". Merci aussi à Pauloscorps comme ça j'oublie personne.

    J'ai mon html, body avec un background qui est un fond d'écran.

    ensuite j'ai un container principal (divA) qui est centré avec une largeur de 1008px, pour lequel j'oublie la propriété opacity car je gère l'opacité dans le rgba, or le 4e paramètre du rgba gère l'opacité du background tandis que opacity gère l'opacité de l'élément tout entier. Du coup, pas la peine de réinitialiser le divB (qui est dans le divA).

    ça m'apprendra à avoir toujours géré les couleurs en hexadécimal, le mode rgba me sauve sur ce coup.

    Merci à tous et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Requete pour sortir les éléments qui n'ont pas une caractéristique donnée
    Par abdessmz dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 02/04/2014, 11h00
  2. Réponses: 6
    Dernier message: 11/11/2010, 23h58
  3. [array] supprimer un élément qui n'est pas le dernier
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/04/2008, 20h41
  4. [SimpleXML] Le contenu de mon élément ne s'affiche pas
    Par alliance dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/05/2006, 20h27
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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