appliquer l'ombre portée au bord-haut seulement?

Comment appliquer une ombre portée à un bord de bordure spécifique?

Par exemple, j'ai le code suivant:

header nav {
    border-top: 1px solid #202020;
    margin-top: 25px;
    width: 158px;
    padding-top:25px;
}

Je veux une ombre portée (1px 1px 1px #cdcdcd) appliquée uniquement à border-top.

Quelle est la meilleure façon d'y parvenir?

Modifier

C'est essentiellement ce que je cherche

div {
    border-top: 1px solid #202020;
    margin-top: 25px;
    margin-left:25px;
    width: 158px;
    padding-top:25px;
    -webkit-box-shadow: 0px 1px 1px rgba(50, 50, 50, 0.75);
    -moz-box-shadow:    0px 1px 1px rgba(50, 50, 50, 0.75);
    box-shadow:         0px 1px 1px rgba(50, 50, 50, 0.75);
}

Cependant, l'ombre semble être impactée par le rembourrage. Y a-t-il de toute façon pour attacher l'ombre à la bordure seule sans ajuster le rembourrage?

22
demandé sur MultiplyByZer0 2012-03-20 22:32:00

6 réponses

Quelque chose comme ça?

div {
  border: 1px solid #202020;
  margin-top: 25px;
  margin-left: 25px;
  width: 158px;
  height: 158px;
  padding-top: 25px;
  -webkit-box-shadow: 0px -4px 3px rgba(50, 50, 50, 0.75);
  -moz-box-shadow: 0px -4px 3px rgba(50, 50, 50, 0.75);
  box-shadow: 0px -4px 3px rgba(50, 50, 50, 0.75);
}
<div></div>
35
répondu danblundell 2018-04-18 08:00:06

Si vous voulez appliquer l'ombre à l'intérieur de l'élément (inset) mais que vous voulez seulement qu'elle apparaisse d'un seul côté, vous pouvez définir une valeur négative au paramètre "spread" (5ème paramètre dans le deuxième exemple).

Pour le supprimer complètement, faites-le de la même taille que le flou des ombres (4ème paramètre dans le deuxième exemple) mais en tant que valeur négative.

Rappelez-vous également d'ajouter le décalage à la position y (3ème paramètre dans le deuxième exemple) afin que le suivant:

box-shadow:         inset 0px 4px 3px rgba(50, 50, 50, 0.75);

Devient:

box-shadow:         inset 0px 7px 3px -3px rgba(50, 50, 50, 0.75);

Vérifiez ce violon mis à jour: http://jsfiddle.net/FrEnY/1282/{[13] } et plus sur les paramètres box-shadow ici: http://www.w3schools.com/cssref/css3_pr_box-shadow.asp

8
répondu dnlmzw 2014-06-10 11:44:26

La réponse simple est que vous ne pouvez pas. box-shadow s'applique uniquement à l'élément entier. Vous pouvez utiliser une approche différente et utiliser :: before en CSS pour insérer un élément haut de 1 pixel dans header nav et définir l'ombre de la boîte à la place.

3
répondu Ben Clayton 2012-03-20 18:41:00

Je trouve que l'utilisation de ces outils interactifs aide à visualiser ce qui se passe et ce qui est possible

Http://css3gen.com/box-shadow/

Http://www.cssmatic.com/box-shadow

Http://css3generator.com/

Edit: consultez les autres outils pour expérimenter avec les autres générateurs et combinaisons. Je dois me rappeler parfois que juste parce que vous pouvez, ne signifie pas que vous devriez - il est facile de se laisser emporter!

1
répondu shipwreck 2013-12-28 19:27:18

Plusieurs ombres de boîte l'ont fait pour moi.

box-shadow:
        inset 0 -8px 4px 4px rgb(255,255,255),
        inset 0 2px 4px 0px rgba(50, 50, 50, 0.75);

Http://jsfiddle.net/kk66f/

1
répondu shaunw 2014-05-08 17:37:15
.item .content{
    width: 94.1%;
    background: #2d2d2d;
    padding: 3%;
    border-top: solid 1px #000;
    position: relative;
}
.item .content:before{
      content: "";
      display: block;
      position: absolute;
      top: 0px;
      left: 0;
      width: 100%;
      height: 1px;
      -webkit-box-shadow: 0px 1px 13px rgba(255,255,255,1);
      -moz-box-shadow: 0px 1px 13px rgba(255,255,255,1);
      box-shadow: 0px 1px 13px rgba(255,255,255,1);
      z-index: 100;
}

Je suis comme utiliser quelque chose comme ça pour cela.

0
répondu Arthur Yakovlev 2015-05-06 21:48:45