2016-04-01 7 views
0

Ich habe ein transparentes .png Bild von sich kreuzenden Linien. Wenn die drop-shadow CSS filter angewendet wird, nur die Linien Schlagschatten, nicht die Grenze rect (es ist nicht das gleiche wie box-shadow).Filter nach Transformation anwenden

Wenn ich sowohl drop-shadow Filter als auch transform: rotate anwende, zeichnen Chrome und FF zuerst den Schatten und drehen dann das resultierende Bild (mit dem Schatten verschmolzen). Ich möchte, dass das gedrehte Bild stattdessen Schatten wirft. (Als ob es eine statische Lichtquelle gibt, wenn sich das Bild dreht).

Ist es in reinem CSS möglich?

Die einzige Lösung, die ich sehe, ist JS trigonometrische Berechnung der Schattenparameter jedes Mal, wenn das Bild rotiert.

Grüße,

+0

bitte eine Geige veröffentlichen, so können wir besser verstehen. – geeksal

+0

@geeksal https://jsfiddle.net/noober/mojLqept/1/ – noober

+0

wollten Sie, dass der Schatten an einer Stelle statisch bleibt. Ich habe nur die Schwierigkeit zu verstehen, was du willst. Ich denke, eine Bildillustration wird dem Zweck dienen. – geeksal

Antwort

2

Ich bin ziemlich sicher, dass diese Frage vor beantwortet wurde, konnte es aber nicht finden, so geht es hier:

setzen Sie den Filter auf einem Basiselement und Anwendung der Transformation im inneren ein

.base { 
 
    -webkit-filter: drop-shadow(10px 10px 0px red); 
 
    filter: drop-shadow(10px 10px 0px red); 
 
} 
 

 
.element { 
 
    animation: rotate 6s linear infinite; 
 
    border: solid 3px green; 
 
    border-top-left-radius: 40px; 
 
    width: 200px; 
 
    height: 200px; 
 
    margin: 20px; 
 
} 
 

 
@keyframes rotate { 
 
    from {transform: rotate(0deg);} 
 
    to {transform: rotate(360deg);} 
 
} 
 
<div class="base"> 
 
    <div class="element"></div> 
 
</div>

+0

Ja, es funktioniert. Vielen Dank! Ich war mir sicher, dass ein inneres Element einen Kastenschatten fallen lassen würde. – noober