jQuery: runde Kanten auf die Bilder überlappen

Aufgrund der unterschiedlichen Rendering auf Browser, Microsoft Internet Explorer auf jeden Fall sehen, dass im Hinterkopf, wir müssen immer an Tricks Zuflucht zu Spezialeffekten, die mittlerweile zum Standard werden sollte gelten. Die vielfach diskutierte abgerundeten Kanten sind ein klassisches Beispiel für "Katastrophe" durch die völlige Unfähigkeit zu einer ernsthaften Standards auf Seite Rendern von HTML / CSS machen produziert. , etc… Es gibt viele Lösungen, die das Netzwerk an die "Effekte" (Auswirkungen der Befreiung bestehenden HTML als abgerundete Kanten, Schatten, Spiegelungen, etc ...) mit Flecken auf den Blättern von Stilen, spezielle Tricks bei der Verwendung von zu erhalten erlauben div gepfropft, Bibliotheken JavaScript, Verwendung von canvas , etc ...
Auf einer rein technischen Lehre möchte ich erklären, weitere (Cross-Browser), um die abgerundeten Kanten der Bilder anzuwenden:

Demo und Quelle


CSS

Wir wissen, dass, abgesehen von IE, können Sie die abgerundeten Ecken mit nur CSS einige ihrer einzelnen Browsern wie zu erstellen:

1
2
3
4
5
6
/ * Abgerundete Ecken * /
div # {roundBorders
; /* CSS 3 */ border-radius: 9px; / CSS * 3 * /
; /* Firefox */ -Moz-border-radius: 9px; / * Firefox * /
; /* Safari */ -Webkit-border-radius: 9px; / * Safari * /
}

Hinweis: Ich möchte hier darauf hinweisen, wie absurd ist dieser Stand der Dinge. Wenn jeder Browser beginnt zu definieren, ihre CSS-Stile coax die insgesamt zur Hand ist. Darüber hinaus ist ein Standard, wenn es "identisch" für alle, sonst, was Standard ist? Es ist wirklich nicht möglich, diesen Zustand der Dinge zu akzeptieren, zu finden, die zu einer Grenze von 4px wollen wir zu 8 Zeilen CSS-Code festgelegt.

Dieses Verfahren ist jedoch nicht trotz das Problem behoben "edge" nicht auf Bildern zu arbeiten. Eine mögliche Lösung besteht darin, zu einer der Ecken des Bildes anwenden muss oder alle vier, un'alra Bild konstruiert zu "simulieren" eine abgerundete Kante. In der Praxis werden wir die Bilder von der Grenze zu unserem Image "target", das Ergebnis der Fähigkeit GIF-und PNG-Dateien mit Transparenz dargestellt werden überlagern.

> Pro

  • funktioniert in allen Browsern (FireFox, Opera, Safari Chrome, Flock, IE 7)
  • nützlich, wenn ein Eingriff ist eine schnelle und gezielte
  • Volle Anpassung des Bildes, das die Kanten repräsentiert, mit der Fähigkeit, jedes Brett anpassen
  • Javascript kompakt und konfigurierbar: Sie können wählen, zu handeln, was Kanten des Bildes
  • erfordert keine Style Sheets (CSS)

> Cons

  • die Grenze Größe und Farbe abhängig von den Bildrändern und Hintergründe unterschiedliche Bilder erfordern unterschiedliche
  • Sie müssen Javascript aktiv

Die Technik

contenitore. So wenden Sie die vier Kanten an den Ecken eines Bildes verwenden wir jQuery zu "wrap" der tag img in einem div -Container. , posizionati in modalità assoluta, che corrisponderanno ai nostri angoli. Unmittelbar unter dem Tag img Legen Sie vier div , im absoluten Modus platziert, die auf unsere Ecken entsprechen. Das Skript jQuery jquery.roundborders.js ist als eine Erweiterung, plugin, und die Methode gebaut roundBorders() akzeptiert eine Reihe von Optionen, aus denen, auf die die Ecken der weichen Kante. Daraus folgt, dass maximal fünf hinzukommen div : Behälter sowie die vier Ecken.

Bild

in absolute . Die vier div im Bild oben gezeigt, Sie gehen, um das Bild überlagern, wenn Sie den Stil position in der absolute . Dann, durch den Einsatz von margin , wird eins nach dem anderen an den vier Ecken des Bildes platziert werden. Hier ist der Code jquery.roundborders.js :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/ **
* JQuery Round Borders
*
* Erstellen Sie einen Randeffekt arrotondado auf einigen oder allen der Ecken eines Bildes
* Durch Überlagerung.
*
* @ Autor Giovambattista Fazioli
* @ @ Email g.fazioli undolog.com
* @ Web http://www.undolog.com
*
* @ Usage
* $ ('Myimageid'). RoundBorders (
* {
* Image: 'path / myborder.png "
* Radius: 16,
* Ecken: 'tl br "
*}
*);
*
*
* /

( $ ) { (Function ($) {
= function ( settings ) { jQuery. fn. roundBorders = Funktion (Einstellungen) {
( senden Sie dieses. each (
function () {
$ ( this ) ; var $ this = $ (this);
'ba4aae84ef81' ; // paganini not repeat var hash = 'ba4aae84ef81' / / Paganini nicht wiederholen

! $this. hasClass ( hash ) ) { if ($ this. hasClass (Hash)) {

'display' , 'block' ) ; $ Diese CSS ('display', 'block').;

{ var defaults = {
|| 16 , . RADIUS-Einstellungen Radius | | 16,
|| 'border.png' , . Bild: Einstellungen Bild | | 'border.png "
|| $this. attr ( 'width' ) , . Breite:. Einstellungen Breite | | $ this attr ('width'),
|| $this. attr ( 'height' ) , . Höhe:. Einstellungen Höhe | | $ this attr ('height'),
|| 'no' , . Zentrum: Einstellungen Zentrum | | 'no'
|| 'tl tr bl br' Ecken:. Einstellungen Ecken | | 'tl tr bl br "
};

defaults. radius ; var defaults = ra Radius.;
defaults. width ; var ww = defaults Breite.;
defaults. height ; var defaults = hh Höhe.;
defaults. image ; var defaults = im Bild.;
hh ; var to = - hh;
ww - ra ; var tr = ww - ra;
to + hh - ra ; var = bl + hh - ra;
( defaults. center == 'no' ) ? '' : 'margin:0 auto' ; var = cc (Mitte defaults == 'keine')?'':' margin:. 0 auto ";

'' ; var out ='';
defaults. corners . split ( ' ' ) ; var defaults = cr. Corners. split ('');
{ } ; var w = {};

'<div style="background:url(' + im + ') no-repeat;position:absolute;width:' + ra + 'px;height:' + ra + 'px;margin:' + to + 'px 0 0 0"></div>' ; co tl = '<div style = "background: url (' + im + ') no-repeat; position: absolute; width:'. + ra +" px, Höhe: "+ ra +" px; margin: '+ um + "px 0 0 0"> </ div> ';
'<div style="background:url(' + im + ') -' + ra + 'px 0px no-repeat;position:absolute;width:' + ra + 'px;height:' + ra + 'px;margin:' + to + 'px 0 0 ' + tr + 'px"></div>' ; co tr = '<div style = "background: url (' + im + ') -' + ra +" px 0px no-repeat; position: absolute; width: '. + ra + "px, Höhe:" + ra + "px; margin: '+ to +" px 0 0' + tr + "px"> </ div> ';
'<div style="background:url(' + im + ') -' + ( ra * 2 ) + 'px 0px no-repeat;position:absolute;width:' + ra + 'px;height:' + ra + 'px;margin:' + bl + 'px 0 0 0"></div>' ; co bl = '<p style = "background: url (' + im + ') -" + (ra * 2) + "px 0px no-repeat; position: absolute; width:'. + ra +" px, Höhe : '+ ra + "px; margin:' + bl +" px 0 0 0 "> </ div> ';
'<div style="background:url(' + im + ') -' + ( ra * 3 ) + 'px 0px no-repeat;position:absolute;width:' + ra + 'px;height:' + ra + 'px;margin:' + bl + 'px 0 0 ' + tr + 'px"></div>' ; co br = '<div style = "background: url (' + im + ') -' + (RA * 3) +" px 0px no-repeat; Positionen: absolute; width: '. + ra + "px, Höhe : '+ ra + "px; margin:' + bl +" px 0 0 '+ tr + "px"> </ div>';

var o in cr ) if ( co [ cr [ o ] ] ) out += co [ cr [ o ] ] ; for (var oder cr) if (co [cr [oder]]) aus + = co [cr [oder]];

$ Diese
'<div style="width:' + ww + 'px;height:' + hh + 'px;' + cc + '"></div>' ) . Wrap ('<div style="width:' + ww + + + + hh'px;height:''px;' cc +'"> </ div>')
out ) . addClass ( hash ) . fadeIn ( 'slow' ) ; ... Nach (out) AddClass (Hash) FadeIn ('slow');
}
}
);
}
; }) (JQuery);

Bild von den Rändern

Wie bereits erwähnt, ist einer der "Nachteile" dieser Technik die Notwendigkeit, ein Bild, das unsere Grenzen repräsentiert. Dieser Nachteil kann jedoch in einen Vorteil wenden, wenn wir zu komplexen Kanten und nicht einfach "Rundung" Klassiker zu schaffen. Auf jeden Fall wollen wir mal sehen, wie das Bild aus dem einfachen Kanten vorgenommen werden müssen. In unserem Beispiel wollen wir eine abgerundete Kante von 16px zu erstellen. Dann nutzen eine Funktion der Stile, um "merge" unsere vier Grenzen in einem Bild. Auf diese Weise haben wir ein einziges Bild von 64 × 16 Pixel, wie unten dargestellt:

Laden Sie das Bild im PSD-Format
(Download PSD oder PNG )

Jedes Feld steht für eine Ecke und hat Abmessungen von 16 × 16 Pixel. Der Hintergrund ist schwarz, während die transparente Farbe Weiß ist die Farbe des Hintergrundes, die unser Bild ist. Wenn Ihre Website hat einen anderen Hintergrund, ersetzen Sie einfach den weißen mit der Farbe Ihrer Site. Das Bild wird dann:

Bild

Die Reihenfolge der Winkel ist erforderlich: oben links (oben links), rechts oben (oben rechts), unten links (unten links) und rechts unten (unten rechts).

Eine Antwort zu "jQuery: runde Kanten auf die Bilder überlappen"

  1. 17. Januar 2010 Gairloch :

    - Zitat: -
    "Anmerkung: Ich möchte hier darauf hinweisen, wie absurd ist dieser Stand der Dinge. Wenn jeder Browser beginnt zu definieren, ihre CSS-Stile coax die insgesamt zur Hand ist. Darüber hinaus ist ein Standard, wenn es "identisch" für alle, sonst, was Standard ist? Es ist wirklich nicht möglich, diesen Zustand der Dinge zu akzeptieren, zu finden, die zu einer Grenze von 4px wollen wir zu 8 Zeilen CSS Code zu setzen. "
    - Ende Zitat -

    Quote 100% Es ist Zeit, dass diejenigen, die auch die Standards gefolgt war und ob es irgendwelche neuen Implementierungen sind anschmiegsam mit den nächsten Updates des Browsers.

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Stoppen SOPA