2017-10-10 9 views
0

Est-il possible de créer un rond ombre (un cercle précis avec la valeur de propagation mis à zéro) sous un élément carré? E.g. un DIV sans bordures arrondies.Dessiner une ombre ronde sur un élément carré avec CSS

J'ai l'élément suivant, que je ne peux pas ajouter des balises plus à:

<div class="square"></div> 

En outre, je ne peux pas utiliser :before et :after pseudo-éléments, car ils sont déjà coiffés. C'est pourquoi j'essaie d'adapter la boîte-ombre.

J'associez un exemple de ce que je voudrais atteindre, pour mieux expliquer visuellement:

https://jsfiddle.net/landzup/L275p85L/

J'ai utilisé le pseudo-élément :before uniquement pour montrer le résultat.

+0

Je suis un moment difficile à imaginer ... ce serait-il ressembler à un carré/rectangle enfermé dans un cercle? Qu'en est-il d'avoir deux divs, un externe avec un fond transparent? – JCOC611

+0

pouvez-vous partager une image de ce dont vous avez besoin? c'est un peu confus –

Répondre

1

Il y a plusieurs façons de s'y prendre. Je mettrais simplement le div carré dans un conteneur div plus grand, puis je le coifferais comme vous le souhaitez. J'ai inclus quelques exemples pour vous.

J'espère que cela aide! - James.

.square { 
 
    width: 20px; 
 
    height: 20px; 
 
    display: block; 
 
    position: relative; 
 
    background: #fff; 
 
    opacity: 1; 
 
    margin: 5px 0 0 5px; 
 
} 
 

 
.circle,.circle-with-spread { 
 
    display: block; 
 
    background-color: #000; 
 
    opacity: 0.3; 
 
    width: 30px; 
 
    height: 30px; 
 
    border-radius: 15px; 
 
    position: absolute; 
 
} 
 

 
.circle-with-spread { 
 
    box-shadow: 0 0 5px 5px rgba(0,0,0,1); 
 
}
<!-- Example Circle Shadow --> 
 
<div class="circle"> 
 
    <div class="square"></div> 
 
</div> 
 
<!-- Spacing makes it look nice --> 
 
<br /> 
 
<br /> 
 
<br /> 
 
<!-- Second Example --> 
 
<div class="circle-with-spread"> 
 
    <div class="square"></div> 
 
</div>

+0

Cher James, merci pour votre réponse. Désolé, je pense que je n'ai pas été assez clair: je ne peux pas non plus ajouter de balisage au-delà du DIV pour le style, ni utiliser de pseudo-éléments. Le seul espace que j'ai est l'artisanat de l'ombre à travers ses propriétés CSS; J'ai enquêté sur les propriétés box-shadow mais je n'ai pas trouvé de solution, donc je voulais voir s'il me manquait quelque chose, s'il y avait un lapin à sortir du cylindre ... –

+0

J'ai édité la question pour mieux expliquer le problème . –

+1

Je comprends maintenant. Pour autant que je puisse voir, il n'y a pas moyen d'obtenir ce que vous voulez sans utiliser de pseudo-éléments, de balisage ou de JavaScript. Il y a quelques alternatives * proches *, mais elles ne sont pas parfaites. Ajout de 'box-shadow: 0 0 30px 0 # 000;' vous donne l'ombre circulaire, mais il s'est propagé, ou en ajoutant 'box-shadow: 0 0 0 30px # 000;' vous donne l'ombre sans propagation, mais il est carré . - Désolé je ne pourrais pas vous aider plus loin. –