J'ai besoin de créer une boîte-ombre sur un block
élément, mais seulement (par exemple) sur son côté droit. La façon dont je le fais est d'envelopper l'élément intérieur avec box-shadow
un élément extérieur avec padding-right
et overflow:hidden;
ainsi les trois autres côtés de l'ombre ne sont pas visibles.
Existe-t-il un meilleur moyen d'y parvenir? Comme box-shadow-right
?
EDIT : Mes intentions sont de créer uniquement la partie verticale de l'ombre. Exactement la même chose que ce que repeat-y
la règle background:url(shadow.png) 100% 0% repeat-y
ferait.
css
shadow
box-shadow
tillda
la source
la source
Réponses:
Oui, vous pouvez utiliser la propriété de propagation de l'ombre de la règle de zone d'ombre:
La quatrième propriété
-2px
est la propagation de l'ombre, vous pouvez l'utiliser pour modifier la propagation de l'ombre, ce qui donne l'impression que l'ombre n'est que d'un côté.Cela utilise également les règles de positionnement de l'ombre,
10px
il l'envoie vers la droite (décalage horizontal) et le0px
maintient sous l'élément (décalage vertical).5px
est le rayon de flou :)Exemple pour vous ici .
la source
box-shadow
règles ont été standardisées.Ma solution self-made facile à éditer:
HTML:
css:
Démo:
http://jsfiddle.net/jDyQt/103
la source
Pour obtenir l'effet écrêté sur deux côtés, vous pouvez utiliser des pseudo-éléments avec des dégradés d'arrière-plan.
ajoutera un bel effet d'ombre à gauche et à droite des éléments qui composent normalement un document.
la source
Utilisez simplement le pseudo-élément :: after ou :: before pour ajouter l'ombre. Faites-le 1px et placez-le sur le côté de votre choix. Ci-dessous est un exemple de haut.
la source
Voici mon exemple:
la source
Voici un petit hack que j'ai fait.
1. Créez un
<div class="one_side_shadow"></div>
droit sous l'élément que je veux créer l'ombre de boîte d'un côté (dans ce cas, je veux une ombre d'encart unilatérale pourid="element"
venir du bas)2. Ensuite, j'ai créé un régulier en
box-shadow
utilisant un décalage vertical négatif pour pousser l'ombre vers le haut d'un côté.la source
Cela pourrait être un moyen simple
Attribuez ceci à n'importe quel div
la source
Voici un codepen à démontrer pour chaque côté, ou un extrait de travail:
la source
clip-path
est maintenant (2020) l'un des moyens les plus simples 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 (ce qui, je crois, était ce que l'OP recherchait à l'origine), comme cette:... 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 tous les bords où l'ombre doit être masquée et une valeur négative (identique au rayon de flou de l'ombre de la boîte -
Xpx
) pour tous les bords où l'ombre doit être affichée.la source
Ce site m'a aidé: https://gist.github.com/ocean90/1268328 (Notez que sur ce site, la gauche et la droite sont inversées à la date de ce post ... mais elles fonctionnent comme prévu). Ils sont corrigés dans le code ci-dessous.
la source
la source
Ce que je fais, c'est créer un bloc vertical pour l'ombre, et le placer à côté de l'endroit où mon élément de bloc devrait être. Les deux blocs sont ensuite enveloppés dans un autre bloc:
Exemple jsFiddle ici .
la source
Ok, voici un essai de plus. Utilisation de pseudo-éléments et application de la propriété de l'ombre sur eux.
html:
toupet:
https://codepen.io/alex3o0/pen/PrMyNQ
la source