Andi D.: sehr breites Bild soll ohne scrollbar angezeigt werden

Hallo,
ich verzweifel hier grad (mal wieder) mit CSS.

Folgendes:
Ich habe ein Foto (800x200). Neben diesem Foto soll in der selben Höhe wie das Bild (200px) bis zum rechten Rand des Browsers ein Muster zu sehen sein.

Dieses Muster hat bis 300px einen Farbverlauf, danach kann es sich wiederholen. Ich will also quasi sowas:

Foto - Muster1 - Muster2 - Muster2 - Muster2 .......

Ich will dadurch KEINEN Scrollbar erzwingen. Wenn man nicht alles sieht, ists eben verdeckt. Zieht man das Browser-fenster breiter, wird mehr und mehr aufgedeckt. Ich kriegs einfach net hin :-/

CSS

#picture{  
	float:left;  
}  
  
#blue-bg{  
	background:url(/images/blue-r.png);  
	float:left;  
	height:200px;  
}  

HTML:

<div id="picture">  
    <img src="/images/foto.jpg">  
	</div>  
  
    <div id="blue-bg">  
   	 <img src="/images/blue.png" alt="background" />  
	</div>

blue.png ist quasi Muster1 (mit dem Verlauf) und blue-r ist Muster2. Es klappt, dass man die Verbindung zwischen Muster1+2 nicht sieht, aber ich kriegs nicht hin, dass das Muster IMMER bis zum rechten Fensterrand geht.

Ideen?
Danke!

Andi

  1. Womit ich auch gut leben könnte:

    Foto - Muster

    wobei "Muster" ein sagen wir mal 1200px breites bild ist. wie krieg ich das ohne scrollbar neben das Foto, sodass es beim Browser-Fenster verbreitern aufgedeckt wird?

    Danke
    andi

  2. @@Andi D.:

    nuqneH

    Ich habe ein Foto (800x200). Neben diesem Foto soll in der selben Höhe wie das Bild (200px) bis zum rechten Rand des Browsers ein Muster zu sehen sein.

    Dieses Muster hat bis 300px einen Farbverlauf, danach kann es sich wiederholen. Ich will also quasi sowas:

    Das Muster dient der Verzierung, ist also kein Dokumentinhalt, sondern Hintergrundbild. Wenn du zwei Hintergrundbilder hast, dann brauchst du (noch) zwei verschiedene Elemente dafür:

    <div id="picture">  
      <img src="/images/foto.jpg">  
    </div>
    

    Das 'img'-Element erhält rechts Padding und darin als Hintergrund den Verlauf (nur vertikal wiederholdend, nicht horizontal) ab Breite des Fotos (800px) beginnend:

    #picture img  
    {  
      background-image: url(/images/blue-r.png);  
      background-position: 800px top;  
      background-repeat: repeat-y;  
      padding-right: 300px;  
      vertical-align: bottom;  
    }
    

    Wegen das Unterlängenproblems im IE wird das 'img' im 'div' unten ausgerichtet.

    Das 'div'-Element erhält das andere Muster (horizontal und vertikal wiederholdend), wegen des Anschlusses ab Breite des Fotos zuzüglich des Verlaufs (1100px):

    #picture  
    {  
      background-image: url(/images/blue.png);  
      background-position: 1100px top;  
      background-repeat: repeat;  
    }
    

    Kürzer zusammengefasst:

    #picture  
    {  
      background: url(/images/blue.png) repeat 1100px top;  
    }  
      
    #picture img  
    {  
      background: url(/images/blue-r.png) repeat-y 800px top;  
      padding-right: 300px;  
      vertical-align: bottom;  
    }
    

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
    1. Hi Gunnar

      Kürzer zusammengefasst:

      #picture

      {
        background: url(/images/blue.png) repeat 1100px top;
      }

      #picture img
      {
        background: url(/images/blue-r.png) repeat-y 800px top;
        padding-right: 300px;
        vertical-align: bottom;
      }

        
      absolut CRAZY! Wie kommt man bitte auf so eine Lösung?  
      Vielen vielen Dank! Klappt perfekt UND Du hast es super erklärt, d.h. ich konnte es auch gut auf die echten Bildmaße anwende (hatte das entw. vereinfacht)!  
        
      Vielen Dank und einen schönen Abend!  
      Andi  
      
      
      1. hm, jetzt hab ich mich wohl doch zu früh gefreut.

        Ich habs mal hochgeladen.

        Der Scrollbar kommt zu früh und wenn ich dann scrolle, ist die Navi-leiste abgeschnitten :-/

        *nerv*

        Werd weiter testen - wenn jemandem was auffällt bitte bescheid geben :)

        1. @@andi d.:

          nuqneH

          Ich habs mal hochgeladen.

          Der Scrollbar kommt zu früh und wenn ich dann scrolle, ist die Navi-leiste abgeschnitten :-/

          Argl. Ja, die Scrollbar kommt, damit 'img' samt 'padding-right' erreichbar sind.

          Gib zusätzlich noch
          #picture { overflow: hidden }

          Dann kommt auch keine Scrollbar, wenn der Viewport schmaler ist als das Bild, aber das dürfte wohl sogar erwünscht sein. (Wobei man sich dann die Frage setllen kann, ob dieses Bild nicht auch Verzierung ist, also nicht ins Markup gehört, sondern als Hintergrundbild ins Stylesheet.)

          Und BTW: Für moderne Browser ist für dein Muster keine Hintergrundgrafik erforderlich, weder für den Verlauf noch für die Streifen.

          Qapla'

          --
          Volumen einer Pizza mit Radius z und Dicke a: pi z z a
          1. kommt auch keine Scrollbar, wenn der Viewport schmaler ist als das Bild, aber das dürfte wohl sogar erwünscht sein.

            So ist es :-)
            Vielen Dank

            Und BTW: Für moderne Browser ist für dein Muster keine Hintergrundgrafik erforderlich, weder für den Verlauf noch für die Streifen.

            öh, sondern?

            1. @@andi d.:

              nuqneH

              Und BTW: Für moderne Browser ist für dein Muster keine Hintergrundgrafik erforderlich, weder für den Verlauf noch für die Streifen.

              öh, sondern?

              Gradienten.

              'background: -moz-repeating-linear-gradient(top left -45deg, rgba(0,0,0,0), rgba(0,0,0,0) 1px, rgba(0,0,0,0.2) 4px), -moz-linear-gradient(left, #3B5D71, #A3BECC 348px, #A3BECC)' kommt im Firefox 3.6 deinem Muster schon recht nahe.

              Qapla'

              --
              Volumen einer Pizza mit Radius z und Dicke a: pi z z a
              1. Und BTW: Für moderne Browser ist für dein Muster keine Hintergrundgrafik erforderlich, weder für den Verlauf noch für die Streifen.

                Gradienten.

                Cool! Danke. Nur bis man sich auf eine korrekte Anzeige bei den meisten usern verlassen kann wird wohl noch eine zeit verstreichen, oder? Von daher müsste man es ja so oder so mit einem Bild als "backup" anlegen.

                Aber ist interessant. Vielen dank für den Tipp!

                ciao, andi

                1. @@andi d.:

                  nuqneH

                  Von daher müsste man es ja so oder so mit einem Bild als "backup" anlegen.

                  Backup? Fallback!

                  html  
                  {  
                      background: #fcf6ea url(gradient.png) bottom repeat-x;  
                      background: -moz-linear-gradient(bottom, #444038, #cdc9c3 0.5%, #e2dcd1 2%, #fcf6ea 10%, #fcf6ea) fixed;  
                      background: -webkit-gradient(linear, bottom, top, from(#444038), color-stop(0.5%, #cdc9c3), color-stop(2%, #e2dcd1), color-stop(10%, #fcf6ea), to(#fcf6ea)) fixed;  
                      height: 100%;  
                  }
                  

                  Firefox (ab 3.6) und Webkits, die Gradienten schon unterstützen, müssen gradient.png nicht vom Server anfordern, sparen eine Ressource, somit Traffic (Ladezeit für den Nutzer, Kosten für den Sitebetreiber).

                  Qapla'

                  --
                  Volumen einer Pizza mit Radius z und Dicke a: pi z z a
                  1. @@Gunnar Bittersmann:

                    nuqneH

                    html

                    {
                        background: #fcf6ea url(gradient.png) bottom repeat-x;
                        background: -moz-linear-gradient(bottom, #444038, #cdc9c3 0.5%, #e2dcd1 2%, #fcf6ea 10%, #fcf6ea) fixed;
                        background: -webkit-gradient(linear, bottom, top, from(#444038), color-stop(0.5%, #cdc9c3), color-stop(2%, #e2dcd1), color-stop(10%, #fcf6ea), to(#fcf6ea)) fixed;
                        height: 100%;
                    }

                      
                    Opera (10.10) macht da nicht mit. Einerseits ist er noch zu blöd, Gradienten zu kennen. Das wäre ja nicht weiter schlimm, wenn er andererseits nicht auch so blöd wär, die 'background'-Deklarationen mit den ihm unbekannten Werten "-moz-…", "-webkit-…" einfach zu ignorieren.  
                      
                    Für alle möglichen Browser gibt es ja Hacks, aber für Opera?  
                      
                      
                    BTW, IE unterstützt Gradienten rudimentär (nur Start- und Endfarbe, keine definierten Farben dazwischen) mittels proprietärem [Filter](http://msdn.microsoft.com/en-us/library/ms532997%28VS.85%29.aspx).  
                      
                    Qapla'
                    
                    -- 
                    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
                    
        2. @@andi d.:

          nuqneH

          ich konnte es auch gut auf die echten Bildmaße anwende[n]
          Ich habs mal hochgeladen.

          Ich glaub, du hats dich um einen Pixel vertan. Ändere mal bei '#picture' "992px" in "993px".

          Qapla'

          --
          Volumen einer Pizza mit Radius z und Dicke a: pi z z a
          1. @@Gunnar Bittersmann:

            nuqneH

            Ich glaub, du hats dich um einen Pixel vertan. Ändere mal bei '#picture' "992px" in "993px".

            Und wenn du beim Ändern bist: "picture" ist wohl kein besonders glücklich gewählter ID-Bezeichner. Solange auf jeder(!) Seite nur ein Bild ist, mag das noch gehen. Aber weit in die Zukunft gedacht ist das nicht.

            Qapla'

            --
            Volumen einer Pizza mit Radius z und Dicke a: pi z z a
      2. @@andi d.:

        nuqneH

        absolut CRAZY! Wie kommt man bitte auf so eine Lösung?

        Old school: Brain 1.0

        Dass Muster per CSS als Hintergrundgrafiken eingebunden werden, sollte klar sein.

        Etwas tricky war die 'background-position'; aber damit kann man auch noch crazyere Sachen anstellen.

        Qapla'

        --
        Volumen einer Pizza mit Radius z und Dicke a: pi z z a