REMARQUE: je suggère de vérifier la réponse de @ Hamish ci-dessous; il n'implique pas le "masquage" imparfait dans la solution décrite ici.
Vous pouvez vous approcher avec plusieurs ombres en boîte; un pour chaque côté
box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/YJDdp/
Éditer
Ajoutez 2 ombres de boîte supplémentaires pour le haut et le bas à l'avant pour masquer ce qui saigne.
box-shadow: 0 9px 0px 0px white, 0 -9px 0px 0px white, 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 15px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/LE6Lz/
Je n'étais pas satisfait du haut et du bas arrondis de l'ombre présente dans la solution de Deefour alors j'ai créé la mienne.
inset
box-shadow
crée une belle ombre uniforme avec le haut et le bas coupés.Pour utiliser cet effet sur les côtés de votre élément, créez deux pseudo-éléments
:before
et:after
positionnés absolument sur les côtés de l'élément d'origine.Éditer
Selon votre conception, vous pourrez peut-être utiliser
clip-path
, comme indiqué dans la réponse de @ Luke. Cependant, notez que dans de nombreux cas, cela entraîne toujours la réduction de l'ombre en haut et en bas, comme vous pouvez le voir dans cet exemple:la source
:after
besoinstop: 0
.display: inline-block
des pseudo-classes pour que votre exemple fonctionne. Dans l'ensemble: belle solution. +1not
nécessite aucun élément d'aide<div>
. :-)Essayez ça, ça marche pour moi:
la source
Approche classique: spread négatif
CSS box-shadow utilise 4 paramètres: h-shadow, v-shadow, blur, spread:
L' ombre en V ( ombre verticale) est définie sur 0.
Le paramètre flou ajoute l'effet de dégradé, mais ajoute également une petite ombre sur les bordures verticales (celle dont nous voulons nous débarrasser).
La propagation négative réduit l'ombre sur toutes les bordures: vous pouvez jouer avec elle en essayant de supprimer cette petite ombre verticale sans trop affecter celle des côtés (c'est plus facile pour les petites ombres, 5 à 10 pixels).
Voici un exemple de violon .
Deuxième approche: div absolu sur le côté
Ajoutez un div vide dans votre élément et stylisez-le avec un positionnement absolu afin qu'il n'affecte pas le contenu de l'élément.
Voici le violon avec un exemple d'ombre gauche.
Troisièmement: Masquer l'ombre
Si vous avez un arrière-plan fixe, vous pouvez masquer l'effet d'ombre latérale avec deux ombres de masquage ayant la même couleur d'arrière-plan et flou = 0, par exemple:
J'ai à nouveau ajouté une propagation négative (-3px) à l'ombre noire, afin qu'elle ne s'étende pas au-delà des coins.
Voici le violon .
la source
Cela fonctionne bien pour tous les navigateurs:
la source
DEMO
Vous devez utiliser le multiple
box-shadow;
. La propriété en médaillon donne une belle apparence à l'intérieurla source
Une autre façon est de:
overflow-y:hidden
sur le parent avec un rembourrage.http://jsfiddle.net/qqx221c8/
la source
clip-path
est maintenant (2020) le meilleur moyen que j'ai trouvé pour obtenir des ombres sur des côtés spécifiques d'éléments, en particulier lorsque l'effet requis est une ombre "nette" sur des bords particuliers , comme ceci:... par opposition à une ombre atténuée / réduite / éclaircie comme celle-ci:
Appliquez simplement le CSS suivant à l'élément en question:
Où:
Apx
définit la visibilité des ombres pour le bord supérieurBpx
droiteCpx
basDpx
la gaucheEntrez une valeur de 0 pour toutes les arêtes où l'ombre doit être masquée et une valeur négative (identique au résultat combiné du rayon de flou + valeurs d'étalement -
Xpx + Ypx
) pour toutes les arêtes où l'ombre doit être affichée.la source
clip-path
exemple? Il existe 2 extraits de code. Le premier utiliseclip-path
et a une coupure complètement propre sans "coins supérieurs et inférieurs incurvés" - tout comme votre solution (mais avec beaucoup moins de CSS requis). Le deuxième extrait de code est un exemple simplement pour la comparaison - de nombreuses solutions entraînent une ombre de boîte dispersante qui n'est souvent pas ce que les gens veulent réaliser.box-shadow
propriété en quelque chose comme0 0 10px 5px rgba(0,0,0,0.75);
. Notez laspread
valeur ajoutée et réduiteblur-radius
.Ça marche de mon côté. J'espère que cela vous aide.
la source
JOLIE OMBRE INSERT SUR LES CÔTÉS GAUCHE ET DROITE POUR DIVS, IMAGES OU CONTENU INTÉRIEUR
Pour une belle ombre incrustée sur les côtés droit et gauche des images ou de tout autre contenu, utilisez-le de cette façon
*** L'index z: -1 fait une bonne astuce lors de l'affichage d'images ou d'objets internes avec des encarts
la source
Dans certaines situations, vous pouvez masquer l'ombre par un autre conteneur. Par exemple, s'il y a un DIV au-dessus et en dessous du DIV avec l'ombre, vous pouvez l'utiliser
position: relative; z-index: 1;
sur les DIV environnants.la source
Pour l'horizontale uniquement, vous pouvez tromper l'ombre de la boîte en utilisant le débordement sur sa div parent:
la source
Une autre idée pourrait être de créer un pseudo-élément flou foncé avec éventuellement de la transparence pour imiter l'ombre. Faites-le avec un peu moins de hauteur et plus de largeur ig
la source
Vous pouvez utiliser 1 div à l'intérieur pour "effacer" l'ombre:
Vous pouvez jouer avec "hauteur:%;" et "largeur:%;" pour effacer l'ombre que vous voulez.
la source
Pour une raison quelconque, les réponses fournies ici ne fonctionneraient tout simplement pas dans mon cas. Donc, je suis devenu créatif. Voici une nouvelle solution pour vous tous qui utilise
linear-gradient()
à la place debox-shadow
.Bien que je ne cherche pas à argumenter ce point, ce n'est pas vraiment une "boîte" que vous (nous) essayons de former, donc je suppose qu'on pourrait dire que cela
box-shadow
n'avait pas de sens pour commencer.la source
J'ai essayé de copier le bootstrap shadow-sm juste à droite, voici mon code:
la source