2012-04-06 2 views
4

Ich habe ein Bild auf einer Webseite. Es ist jedoch ein ziemlich großes Bild. Es ist 6144 * 768. In Wirklichkeit ist es eine Serie von 6 Bildern, die zusammen musiziert werden.Teil des Bildes (Teilbild im Bildstreifen) anzeigen, ohne es zu zerquetschen?

Ich habe gelesen, dass es besser ist, dieses eine Bild zu laden, anstatt 6 Bilder zu laden. Ich habe festgestellt, dass dies auch wahr ist, als ich Tabellen und CSS verwendete.

Wenn ich dieses Bild jedoch als Quelle eines Bildelements einstelle und die Größe des Bildelements auf 1024 * 768 festlege, wird das Bild gequetscht. Nein!

Wie kann ich dieses Bild nicht mit nur Javascript beschädigt werden? Wie könnte ich den Hintergrund des Bildes verschieben?

[Beispiel: Stellen Sie sich einen wirklich langen Papierstreifen vor. Legen Sie dann ein kleines ausgeschnittenes Rechteck aus Papier über den Streifen auf dem Papierstreifen, so dass Sie nur den Teil des Streifens sehen können, der sich innerhalb des Rechtecks ​​befindet. Das möchte ich tun]

+0

einfach nicht setzen die Größe des Bildes in der CSS; Es sollte von selbst skalieren. –

+0

@ElliotBonneville: Aber wirklich will er das Bild zuschneiden, um 1 von den 6 vorhandenen in der vollen Größe zu erhalten. –

+0

@Ed S. Ah, richtig. Siehe meine Antwort. –

Antwort

4

Platzieren Sie das Bild in einem Containerelement, und legen Sie den Überlauf mithilfe von CSS ausgeblendet fest. Lassen Sie das Bild, wie es ist, und es wird nicht

HTML

<div id="imgContainer"> 
    <img src="myImage.jpg" alt="" width="6144" height="768" /> 
</div> 

CSS

#imgContainer 
{ 
    height: 1024px; 
    width: 768px; 
    overflow: hidden; 
} 

dann die Bild Verwendung negative Werte zerquetscht werden bewegen für den CSS-Stil margin-left.

#imgContainer img 
{ 
    margin-left: -1024px; 
} 

Sie können dies mit jQuery tun wie folgt

$("#imgContainer img").css("margin-left", "-1024px") 
+0

Woohoo! Endlich etwas, das funktioniert! Danke vielmals. – JavaAndCSharp

0

Skalieren Sie Ihr Bild nicht mit CSS; stattdessen es in einem Wrapper div setzen und in Ihrem CSS etwas tun:

#myImageWrapper { 
    height: 1024; 
    width: 768; 
    overflow: hidden; 
} 
+0

Funktioniert nicht für mich. Gibt es noch etwas, was ich mit diesem Wrapper div tun sollte? – JavaAndCSharp

+0

@JavaAndCSharp: Das versteht sich von selbst, aber Sie haben ein Div mit der ID 'myImageWrapper' erstellt und Ihr Bildelement darin eingefügt? –

+0

Das einzige Problem, das ich sehe, ist, wie wird das OP Bild 2, 3, ... anzeigen? Er würde auch einen Offset benötigen. Nehmen Sie das mit einem Körnchen Salz, da ich kein Web-Typ bin. –

1

Was OP sucht ist CSS Sprites (auch A List Apart oder Smashingmag sehen).

+0

Wie würde ich das tun? Ich glaube, das mache ich schon - aber mein Bild ist zerquetscht. – JavaAndCSharp

+0

"Ich glaube, das mache ich schon"> Wahrscheinlich machst du etwas falsch. Solange Sie keinen Code eingeben, können wir nur raten, was falsch ist (wir sind nicht klar) und weisen Sie in die richtige Richtung. Sind Sie den Anweisungen auf [den von mir geposteten Links] (http://stackoverflow.com/a/10038184/215042) gefolgt? Könnten Sie Ihre (relevanten Stücke) html/css posten? – RobIII

+0

Dies ist übermäßig kompliziert, die Angelegenheit ist eigentlich ziemlich einfach. Siehe meine Antwort. –

Verwandte Themen