Existe-t-il un moyen de déposer l'ombre uniquement sur le fond?. J'ai un menu avec 2 images côte à côte. Je ne veux pas d'une bonne ombre car elle chevauche la bonne image. Je n'aime pas utiliser d'images pour cela, donc y a-t-il un moyen de le déposer uniquement sur le fond comme:
box-shadow-bottom: 10px #FFF;
ou similaire?
-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');
box-shadow-bottom
qui n'existent pas et qui ne sont prises en charge par personne. Voir nicolasgallagher.com/css-drop-shadows-without-images/demo pour les techniques légères d'ombre de boîte.filter
fonctionneront également dans IE8 et IE9. Pas besoin-ms-filter
dans ce cas.Réponses:
MISE À JOUR 4
Identique à la mise à jour 3 mais avec un css moderne (= moins de règles) de sorte qu'aucun positionnement spécial sur le pseudo-élément n'est requis.
MISE À JOUR 3
Toutes mes réponses précédentes utilisaient un balisage supplémentaire pour créer cet effet, ce qui n'est pas nécessairement nécessaire. Je pense que c'est une solution beaucoup plus propre ... la seule astuce consiste à jouer avec les valeurs pour obtenir le bon positionnement de l'ombre ainsi que la bonne force / opacité de l'ombre. Voici un nouveau violon, utilisant des pseudo-éléments :
http://jsfiddle.net/UnsungHero97/ARRRZ/2/
HTML
CSS
MISE À JOUR 2
Apparemment, vous pouvez le faire avec juste un paramètre supplémentaire au CSS box-shadow comme tout le monde vient de le souligner. Voici la démo:
http://jsfiddle.net/K88H9/821/
CSS
Ce serait une meilleure solution. Le paramètre supplémentaire qui est ajouté est décrit comme suit:
METTRE À JOUR
Découvrez la démo sur jsFiddle: http://jsfiddle.net/K88H9/4/
Ce que j'ai fait, c'est créer un "élément d'ombre" qui se cacherait derrière l'élément réel que vous voudriez avoir une ombre. J'ai fait que la largeur de "l'élément d'ombre" soit exactement moins large que l'élément réel de 2 fois l'ombre que vous spécifiez; puis je l'ai aligné correctement.
HTML
CSS
Réponse originale
Oui, vous pouvez le faire avec la même syntaxe que vous avez fournie. La première valeur contrôle le positionnement horizontal et la seconde valeur contrôle le positionnement vertical. Il suffit donc de définir la première valeur sur
0px
et la seconde sur le décalage que vous souhaitez comme suit:Pour plus d'informations sur les ombres de boîte, consultez celles-ci:
J'espère que ça aide.
la source
box-shadow: 0 2px 4px #000000
est une valeur de flou. Voir ici http://jsfiddle.net/K88H9/7/ . Mais vous remarquerez qu'il y a un peu de flou à gauche et à droite de l'élément, alors que dans la solution de Hristo il n'y en a pas.box-shadow-bottom
, bien que créatif, n'existe pas réellement.Utilisez simplement le paramètre spread pour réduire l'ombre:
Démo en direct: http://dabblet.com/gist/a8f8ba527f5cff607327
Pour ne voir aucune ombre sur les côtés, le (valeur absolue du) rayon de diffusion (4ème paramètre) doit être le même que le rayon de flou (3ème paramètre).
la source
box-shadow:0 8px 4px -6px
et vous ne verrez que l'ombre du bas!Si vous avez une couleur fixe à l'arrière-plan, vous pouvez masquer l'effet d'ombre latérale avec deux ombres de masquage ayant la même couleur de l'arrière-plan et flou = 0, par exemple:
Notez que l'ombre noire doit être la dernière et a une propagation négative (-3px) afin de l'empêcher de s'étendre au-delà des coins.
Voici le violon (changez la couleur des ombres de masquage pour voir comment ça marche vraiment ).
la source
transparent
couleur pour les ombres masquantes, non?Je pense que c'est ce que vous recherchez?
la source
Il est toujours préférable de lire les spécifications . Il n'y a pas de
box-shadow-bottom
propriété, et comme le souligne Lea, vous devez toujours placer la propriété non préfixée en bas, après celles préfixées.Alors c'est:
la source
Que diriez-vous d'utiliser simplement un div contenant dont le débordement est défini sur caché et un rembourrage en bas? Cela semble être la solution la plus simple.
Désolé de dire que je n'y ai pas pensé moi-même mais que je l'ai vu ailleurs .
Comme l'a dit Jorgen Evens .
la source
padding-bottom
(disons 5px), vous pouvez également définir un négatifmargin-bottom
(de -5px) pour compenser l'espace ajouté.Vous pouvez également utiliser
clip-path
pour couper (masquer) tous les bords débordants, mais celui que vous souhaitez afficher:Voir clip-path (MDN) . Les arguments pour
polygon
sont le point supérieur gauche , le point supérieur droit , le point inférieur droit et le point inférieur gauche . En définissant le bord inférieur sur200%
(ou tout nombre supérieur à100%
), vous limitez votre débordement au bord inférieur uniquement.la source
J'avais également besoin d'une ombre, mais uniquement sous une image et je l'ai réglée légèrement à gauche et à droite. Cela a fonctionné pour moi:
L'élément auquel cela est appliqué est une image à l'échelle de la page (980 px x 300 px).
Si cela aide à jouer avec les paramètres, ils s'exécutent comme suit:
ombre horizontale, ombre verticale, distance de flou, propagation (c.-à-d. taille de l'ombre) et couleur.
la source
Il vaut mieux chercher l'ombre:
ce code utilise actuellement sur stackoverflow web.
la source
Ce stylo à code (pas par moi) montre une manière super simple de faire cela et les autres côtés par eux-mêmes assez bien:
https://codepen.io/zeckdude/pen/oxywmm
la source
Si votre arrière-plan est solide (ou vous pouvez le reproduire en utilisant CSS), vous pouvez utiliser le dégradé linéaire de cette façon:
Cela générera un dégradé de 5 pixels au bas de l'élément, du noir à 30% d'opacité au complètement transparent. Le reste de l'élément a un fond blanc. Bien sûr, en changeant les 2 derniers arrêts de couleur du dégradé linéaire, vous pouvez rendre l'arrière-plan complètement transparent.
la source
Vous pouvez également faire un dégradé en bas - cela m'a été utile parce que l'ombre que je voulais était sur un élément qui était déjà semi-transparent, donc je n'avais pas à me soucier de l'écrêtage:
Faites juste correspondre les propriétés "bottom" et "height" et définissez vos valeurs rgba sur ce que vous voulez qu'elles soient en haut / en bas de l'ombre
la source
Vous pouvez faire ça comme ceci:
Syntaxe générale:
Exemple: nous voulons créer uniquement une ombre de zone inférieure de couleur rouge,
pour ce faire, nous devons définir toutes les options de côtés où nous devons définir les options d'ombre de la boîte inférieure et définir toutes les autres comme vides comme suit:
la source
mettez à jour sur quelqu'un d'autre sa réponse sur les côtés transparents au lieu du blanc afin que cela fonctionne également sur d'autres arrière-plans de couleur.
la source
ombre intérieure
la source