2016-04-07 8 views
0

Ich möchte ein Hintergrundbild unter Verwendung der css background-size: contain; Eigenschaften anpassen, aber es teilweise außerhalb des Bildschirms positionieren. Ich habe ein Bild mit einem transparrent Teil und ich möchte in der Lage sein, die „Füllung“ zu manipulieren, so dass ich dachte, ein Hintergrundbild in dem Blick zu bewegen eine gute Möglichkeit wäre, dies zu erreichen:CSS enthalten + Position teilweise außerhalb des Bildschirms

.bottle { 
    background-image: res://bottle_fill; 
    background-repeat: no-repeat; 
    background-attachment: fixed; 
    background-size: contain; 
    background-position: 50% 30%; 
} 

Aber es scheint, dass mit dem contain-Parameter das Bild nicht vom div "überspülen" kann? Ich habe versucht, overflow: hidden hinzuzufügen, aber es hat nicht geholfen. Wie kann ich das erreichen? Eine JavaScript-Lösung ist in Ordnung, wenn es keinen CSS-Weg gibt.

Update:

https://jsfiddle.net/ghhxddnj/ hier ist ein JSFiddle - versuchen, das Smiley-Gesicht halb auf, halb aus dem Bildschirm zu bekommen, während es contain bemessen ist. Wie von einigen der Kommentare bemerkt, weiß ich, dass dies eine etwas seltsame Sache zu tun ist, aber das Hintergrundbild muss die gleiche Größe wie der Inhalt des div (und <image> mit dem contain-Parameter) die Raw-Dateien sind gleiche Größe, daher, wenn sie beide enthalten, werden sie die gleiche Größe herauskommen und ich kann x align als Mitte setzen und dann y align verwenden, um zu kontrollieren, wie viel von der Flasche voll ist.

+0

können Sie eine jsfiddle mit diesem Problem schaffen? – Bodzio

+0

Diese Art von Sache wird in [dieser anderen Frage] (http://stackoverflow.com/questions/21786272/css-background-size-cover-background-attachment-fixed-clipping-background-im) diskutiert. – Ouroborus

+0

@Bodzio Sicher, [https://jsfiddle.net/ghhxddnj/](https://jsfiddle.net/ghhxddnj) - versuchen Sie, das Smiley-Gesicht halb auf, die Hälfte vom Bildschirm –

Antwort

0

Versuchen Sie folgendes:

var image_url = $('#logo').css('background-image'), 
    image; 

// Remove url() or in case of Chrome url("") 
image_url = image_url.match(/^url\("?(.+?)"?\)$/); 

if (image_url[1]) { 
    image_url = image_url[1]; 
    image = new Image(); 

    // just in case it is not already loaded 
    image.src = image_url; 
    var imgoffset = image.height; 
    $('#logo').css('background-position',-imgoffset) 
} 

Quelle: How do I get background image size in jQuery?

EDIT:https://jsfiddle.net/ckf55axs/

+0

Können wir es ohne JQuery machen? Außerdem muss ich nicht die Hintergrundbildgröße, das Bild-Tag, das eine Klasse oder ID haben kann, die gleiche Größe haben, also wenn das einfacher ist. –

+0

Also wird Ihr Element kein Hintergrundbild sein, oder wird Ihr Offset durch einen statischen Betrag festgelegt, unabhängig von der Elementhöhe? Ich bin verloren in was Sie jetzt wollen .. –

+0

Sorry für Verwirrung, ich habe ein Bild von einer Flasche Gliederung. Ich möchte die Flasche auffüllen, indem ich ein Hintergrundbild dahinter schiebe. Also 1. Das Hintergrundbild muss die gleiche Größe wie der Flaschenumriss haben. 2. müssen in der Lage sein, den Hintergrund auf und ab zu bewegen, um unterschiedliche Flaschenfüllstände zu zeigen, um dies zu tun, muss ich wissen, wie heigh der Flaschenumriss ist. Ist das sinnvoll? –

Verwandte Themen