Bonjour,
J'essaye de faire apparaitre une ombre portée sur une div en utilisant la pseudo-classe :after.
Après avoir jeté un coup d'oeil sur des exemples (creativejuiz, freshdesignweb) j'ai décidé de me lancer en en reprenant un et en l'adaptant à mon site.
La pseudo-classe :after marche bien pour le décor de la bordure de la div #niveaux .header , par contre pour l'ombre portée sur la div #niveaux .plan ça ne marche pas.
Voici le code (je ne fais apparaitre que l'essentiel):
Et la CSS:
J'ai essayé d'analyser la raison, mais je ne vois pas. Je vous livre mon raisonnement, si vous pouviez m'éclairer sur mon erreur:
- La div #niveaux .plan:after est positionnée en absolute (le positionnement est ajusté avec bottom et right) et se positionne donc par rapport à #niveaux .plan (positionnée en relative).
- #niveaux .plan:after a une z-index négative pour se positionner sous #niveaux .plan qui lui a un z-index
- L'ombre a une couleur autre que le blanc
#niveaux .plan:after n'a pas de contenu (content='' ")
... pas facile à utiliser ces pseudo-classes !
Merci pour vos lumières.
Modifié par AbouKH (16 Dec 2013 - 17:30)
J'essaye de faire apparaitre une ombre portée sur une div en utilisant la pseudo-classe :after.
Après avoir jeté un coup d'oeil sur des exemples (creativejuiz, freshdesignweb) j'ai décidé de me lancer en en reprenant un et en l'adaptant à mon site.
La pseudo-classe :after marche bien pour le décor de la bordure de la div #niveaux .header , par contre pour l'ombre portée sur la div #niveaux .plan ça ne marche pas.
Voici le code (je ne fais apparaitre que l'essentiel):
<body>
<div id="conteneur_header">
<div id="banniere">
</div>
</div>
<div id="conteneur_niveaux">
<div id="niveaux">
<div class="plan plan1">
<div class="header">CP</div>
<div class="price">$59</div>
<div class="monthly">per month</div>
<ul>
<li><b>10GB</b> Disk Space</li>
<li><b>100GB</b> Monthly Bandwidth</li>
<li><b>20</b> Email Accounts</li>
<li><b>Unlimited</b> subdomains</li>
</ul>
<a class="signup" href="http://www..com">S'inscrire</a>
</div>
</div>
<div id="conteneur_inf">
<div id="inf">
</div>
</div>
<div id="conteneur_footer">
<div id="foot">
</div>
</div>
</body>
Et la CSS:
body
{
<!--[if IE]><style type="text/css">body{ behavior: url("csshover.htc") }</style><![endif]-->
}
*
{
margin : 0;
padding : 0;
}
body, html
{
width: 100%;
min-width: 990px;
background-color:#212121;
}
img
{
border: 0;
}
/* Bannière ---------------------------------*/
#conteneur_header
{
height: 120px;
background-color: #212121;
/*position: relative;*/
}
#banniere
{
width: 980px;
margin-left: auto;
margin-right: auto;
position: relative;
}
/* Fin de la bannière -------------------------*/
/* Parie supérieure --------------------------*/
#conteneur_niveaux
{
background-color: white;
/*height: 700px;*/
display: block;
}
#niveaux
{
width: 980px;
zoom: 1;
margin-left: auto;
margin-right: auto;
padding-top: 100px;
padding-bottom: 150px;
margin-bottom: 0;
text-align: center;
background-color: white;
}
#niveaux:before, #niveaux:after
{
content: "";
display: table
}
#niveaux:after
{
clear: both
}
#niveaux .plan
{
font: 13px 'Lucida Sans', 'trebuchet MS', Arial, Helvetica;
background: #fff;
border: 1px solid #ddd;
color: #333;
padding: 20px;
width: 140px;
float: left;
_display: inline; /* IE6 double margin fix */
position: relative;
margin: 0 5px;
-moz-box-shadow: 0 2px 2px -1px rgba(0,0,0,.3);
-webkit-box-shadow: 0 2px 2px -1px rgba(0,0,0,.3);
box-shadow: 0 2px 2px -1px rgba(0,0,0,.3);
}
#niveaux .plan:after
{
z-index: -1;
position: absolute;
content: "";
bottom: 10px;
right: 4px;
width: 80%;
top: 80%;
-webkit-box-shadow: 0 12px 5px rgba(0, 0, 0, .3);
-moz-box-shadow: 0 12px 5px rgba(0, 0, 0, .3);
box-shadow: 0 12px 5px rgba(0, 0, 0, .3);
-webkit-transform: rotate(3deg);
-moz-transform: rotate(3deg);
-o-transform: rotate(3deg);
-ms-transform: rotate(3deg);
transform: rotate(3deg);
}
/* --------------- */
#niveaux .header
{
position: relative;
font-size: 20px;
font-weight: normal;
text-transform: uppercase;
padding: 40px;
margin: -20px -20px 20px -20px;
border-bottom: 8px solid;
background-color: #eee;
background-image: -moz-linear-gradient(#fff,#eee);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
background-image: -webkit-linear-gradient(#fff, #eee);
background-image: -o-linear-gradient(#fff, #eee);
background-image: -ms-linear-gradient(#fff, #eee);
background-image: linear-gradient(#fff, #eee);
}
#niveaux .header:after
{
position: absolute;
bottom: -8px; left: 0;
height: 3px; width: 100%;
content: '';
background-image: url(images/bar.png);
}
#niveaux .plan1 .header
{
border-bottom-color: #B3E03F;
}
/* --------------- */
#niveaux .price
{
font-size: 45px;
}
#niveaux .monthly
{
font-size: 13px;
margin-bottom: 20px;
text-transform: uppercase;
color: #999;
}
/* --------------- */
#niveaux ul
{
margin: 20px 0;
padding: 0;
list-style: none;
}
#niveaux li
{
padding: 10px 0;
}
/* --------------- */
#niveaux .signup
{
position: relative;
padding: 10px 20px;
color: #fff;
font: bold 14px Arial, Helvetica;
text-transform: uppercase;
text-decoration: none;
display: inline-block;
background-color: #72ce3f;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
text-shadow: 0 -1px 0 rgba(0,0,0,.15);
opacity: .9;
}
#niveaux .signup:hover
{
opacity: 1;
}
#niveaux .signup:active
{
-moz-box-shadow: 0 2px 2px rgba(0,0,0,.3) inset;
-webkit-box-shadow: 0 2px 2px rgba(0,0,0,.3) inset;
box-shadow: 0 2px 2px rgba(0,0,0,.3) inset;
}
#niveaux .plan1 .signup
{
background: #B3E03F;
}
/* Fin de la partie supérieure --------------------------*/
/* Footer --------------------------------------------*/
#conteneur_footer
{
width: 100%;
height: 250px;
margin: 0;
background-color: #212121;
}
#foot
{
width: 980px;
height: 80px;
margin-left: auto;
margin-right: auto;
background-color: #212121;
padding-top: 45px;
border: 1px solid #212121;
}
/* Fin du footer --------------------------------------*/
J'ai essayé d'analyser la raison, mais je ne vois pas. Je vous livre mon raisonnement, si vous pouviez m'éclairer sur mon erreur:
- La div #niveaux .plan:after est positionnée en absolute (le positionnement est ajusté avec bottom et right) et se positionne donc par rapport à #niveaux .plan (positionnée en relative).
- #niveaux .plan:after a une z-index négative pour se positionner sous #niveaux .plan qui lui a un z-index
- L'ombre a une couleur autre que le blanc
#niveaux .plan:after n'a pas de contenu (content='' ")
... pas facile à utiliser ces pseudo-classes !
Merci pour vos lumières.
Modifié par AbouKH (16 Dec 2013 - 17:30)