Wie ein Bild mit CSS-Filter: Unschärfe und scharfe Kanten?

8

Ich möchte ein Bild beim Schweben verwischen.

Das Problem ist, dass die Kanten des Bildes auch unangenehm verwischen. In der Fiddle können Sie es deutlich mit dem grünen Hintergrund sehen.

Wenn ich das Bild z. B. auf 1,2 skalieren würde, würde es das Problem am Ende beheben, aber während des Übergangs erscheinen die unscharfen Kanten immer noch.

Irgendwelche Ideen, wie man scharfe Kanten mit diesem Effekt bekommt?

Ссылка

html:

%Vor%

css:

%Vor%     
Ketri 20.06.2013, 11:54
quelle

6 Antworten

5

Die Techniken, die ich kenne, erklärt Ссылка :

1. Wenn Sie ein Bild haben, das an allen Außenkanten die gleiche Farbe hat, wie im obigen Beispiel, können Sie die Hintergrundfarbe des Körpers oder eines Containerelements auf die gleiche Farbe einstellen. (FYI; trifft nicht wirklich zu dir, zumindest nicht in deiner Geige).

2..Verwenden Sie die Clip-Eigenschaft, um die Kanten des Bildes zu trimmen. Clip wird immer in der folgenden Reihenfolge angegeben:

clip: rect( top, offset of right clip from left side, offset of bottom from top, left)

Im obigen Beispiel ist das Bild 367 Pixel breit × 459 Pixel hoch und die Unschärfe 2 Pixel. Der Clip würde also wie folgt angegeben:

clip: rect(2px,365px,457px,2px);

(Beachten Sie, dass der Clip nur auf Elemente angewendet wird, die position: absolute auf sie angewendet haben. Wenn Sie Unterstützung in IE8 und früher erhalten möchten, vergessen Sie nicht, das px am Ende der Werte zu löschen). (Keine Ahnung, ob Sie Fotos in einem Stapel, einem Raster oder nur Callouts, etc. auslegen. Könnte angebracht sein, wenn Sie die absolute Positionierung verschlucken können.)

3. Wickeln Sie das Bild in ein umschließendes Element (z. B. a), das etwas kleiner ist als das Bild, indem Sie Überlauf: auf das äußere Element und das Bild nach links und leicht nach oben verschieben, um die sichtbare Unschärfe zu beseitigen an diesen Rändern.

-

Auch das Umrahmen des Bildes scheint zumindest in Webkit zu helfen, aber ich habe es nicht ausgiebig getestet.

%Vor%     
user164226 20.06.2013 12:05
quelle
3

Scheint, dass die Einstellung eines Clips das Problem mehr oder weniger löst. Am Ende des Übergangs gibt es jedoch einen merkwürdigen Effekt. Die Erzwingung der GPU (über einen translateZ-Hack) scheint das Problem zu lösen.

CSS

%Vor%

Demo mit einem Vergleich mit und ohne die Transformation

    
vals 23.12.2013 18:38
quelle
3

Ein bisschen SVG:

%Vor%

Und etwas CSS:

%Vor%

Sollte den gewünschten Effekt erzeugen. Ссылка

%Vor% %Vor%
    
tnt-rox 23.12.2013 07:48
quelle
2

Nachdem ich den Tag damit verbracht hatte, war ich in der Lage, eine beschissene, hässliche, hacky Lösung zu erstellen. Wahrscheinlich werde ich es nicht im realen Projekt verwenden, vielleicht könnte es jemanden dazu inspirieren, etwas in meiner Lösung zu verwenden, aber es etwas weniger hässlich zu machen. Zumindest sieht das Endergebnis so aus, wie ich es gerne hätte!

Mit einem weißen Rand und Box-Sizing: Rand-Box, und dann einige Ränder konnte ich das Endergebnis haben scharfe Kanten, und 3/4 Kanten, um den grünen Hintergrund während des Übergangs nicht zu zeigen. Wenn jemand herausfinden würde, warum einige Kanten während des Übergangs mit dem Hintergrund verblassen, würde das wahrscheinlich helfen.

Ссылка

html:

%Vor%

CSS:

%Vor%

Ich hoffe immer noch auf etwas Besseres!

    
Ketri 20.06.2013 20:47
quelle
0

füge das zu deinem CSS hinzu

%Vor%     
Abdul Malik 20.06.2013 12:56
quelle
0

Ich würde diesen Link überprüfen und von dort aus gehen. Der beste Teil über Javascript hat sehr lasche Ideen.

Ссылка

    
Jay 28.08.2013 14:08
quelle

Tags und Links